Apache OpenMeetings Change Log

See http://issues.apache.org/jira/browse/OPENMEETINGS-* (where * is the number of the issue below)

Release Notes - Openmeetings - Version 3.0.7
================================================================================================================

** Bug
    * [OPENMEETINGS-1211] - the use of icons in users tab is illogical
    * [OPENMEETINGS-1213] - Error is shown when contact try to send invitation
    * [OPENMEETINGS-1218] - Wrong birthday date is displayed on the User datails at Administration->Users page
    * [OPENMEETINGS-1221] - Language is not loaded after changes
    * [OPENMEETINGS-1230] - Clustering seems not to work as expected
    * [OPENMEETINGS-1231] - chat bar on landing page without lable an delete function missing
    * [OPENMEETINGS-1234] - Unable to take backup using GUI or Admin.sh
    * [OPENMEETINGS-1238] - Share/record screen: go to HTTP STATUS 404- Apache Tomcat page
    * [OPENMEETINGS-1239] - Can't import REST URL properly
    * [OPENMEETINGS-1248] - Clustering not working from external system (for ex. Moodle)
    * [OPENMEETINGS-1249] - Guest can't enter to the room when room is booked via private message
    * [OPENMEETINGS-1250] - Video is not availble in the interview rooms
    * [OPENMEETINGS-1251] - When room is full kicked user not redirected to Rooms list
    * [OPENMEETINGS-1253] - Crash when searching at language editor.
    * [OPENMEETINGS-1254] - Crash when adding OAuth2 config

** Improvement
    * [OPENMEETINGS-954] - Need implement OM client for Android devices.
    * [OPENMEETINGS-1100] - Seperate video/audio permissions capability 
    * [OPENMEETINGS-1101] - Live presenter activity (typing , drawing)
    * [OPENMEETINGS-1212] - Library versions should be updated (3.0.7)

** Wish
    * [OPENMEETINGS-1214] - LDAP import AD groups


Release Notes - Openmeetings - Version 3.0.6
================================================================================================================

** Bug
    * [OPENMEETINGS-1202] - Send Invitation error with moodle
    * [OPENMEETINGS-1203] - Screen sharing is not started when external guest try to start sharing
    * [OPENMEETINGS-1205] - Invitation is not sent from the toom
    * [OPENMEETINGS-1207] - Create a poll
    * [OPENMEETINGS-1208] - default_group_id ...?

** Improvement
    * [OPENMEETINGS-1197] - Library versions should be updated (3.0.6)
    * [OPENMEETINGS-1206] - Room service should be updated to be able to generate invitation hash with first and last name


Release Notes - Openmeetings - Version 3.0.5
================================================================================================================

** Bug
    * [OPENMEETINGS-889] - "Upload new image" button should have the same style with other buttons
    * [OPENMEETINGS-1161] - Dashboard start widget is not correctly aligned when language is RTL
    * [OPENMEETINGS-1168] - Request for contact multi-language + RTL issues
    * [OPENMEETINGS-1181] - Date pickers are not localized
    * [OPENMEETINGS-1182] - User entered the room from Joomla plugin is displayed with "null" as lastname
    * [OPENMEETINGS-1183] - It is impossible to change 'chatOpened' room parameter using modifyRoomParameter SOAP call
    * [OPENMEETINGS-1185] - Appointments returned by SOAP service get wrong start/end time
    * [OPENMEETINGS-1187] - Send One-Time Invitation does not work if we Generate URL first.
    * [OPENMEETINGS-1188] - less data for getRoomById
    * [OPENMEETINGS-1189] - Room' s session seems to expire in less than 1.5 hours when in rooms
    * [OPENMEETINGS-1190] - keystore file pw is disclosed in the screen sharing log
    * [OPENMEETINGS-1196] - Meaningless internal error in case OAuth email is in use
    * [OPENMEETINGS-1199] - Cluster status is missed on admin->connection page
    * [OPENMEETINGS-1200] - Main menu items shows incorrectly
    * [OPENMEETINGS-1201] - Header of moderators list box shows incorrectly

** Improvement
    * [OPENMEETINGS-1133] - Direct sign-in from another site
    * [OPENMEETINGS-1184] - Library versions should be updated (3.0.5)
    * [OPENMEETINGS-1198] - Simplify Database Install


Release Notes - Openmeetings - Version 3.0.4
================================================================================================================

** Bug
    * [OPENMEETINGS-878] - Sign Web-Start application with trusted root cert
    * [OPENMEETINGS-1041] - It is impossible drag and drop recordings to public folder when recordings list is scrolled
    * [OPENMEETINGS-1055] - Error is thrown and connection is closed when external user try to generate URL and send email invitation
    * [OPENMEETINGS-1062] - Contact data of other users are shown not all.
    * [OPENMEETINGS-1063] - When "Show contact data to contacts only" was selected, contact data are not showing for users from contacts.
    * [OPENMEETINGS-1074] - Sharing of the screen gives remote access to the other user
    * [OPENMEETINGS-1075] - system does not save the mark "do not ask me" when choosing a camera and video expansion
    * [OPENMEETINGS-1079] - Synchronous backup does not work through the web interface with a large volume of data
    * [OPENMEETINGS-1080] - Connection with the server is canceled after recordings
    * [OPENMEETINGS-1083] - Impossible to add user to group, moderator to room
    * [OPENMEETINGS-1084] - cannot remove auto created user by invite for conference room 
    * [OPENMEETINGS-1087] - X-UA-Compatible should be set as first META tag
    * [OPENMEETINGS-1088] - error installing with mssql
    * [OPENMEETINGS-1089] - Spanish installation screens contains bad UTF-8 chars
    * [OPENMEETINGS-1091] - the attendees can chaange the start and end dates of calendar appointment rooms !!!
    * [OPENMEETINGS-1092] - users can use the calendar room to make conference after the end-date of the conference room!!!
    * [OPENMEETINGS-1094] - Ldap authorisation is not working correctly if var ldap_search_scope=SUBTREE
    * [OPENMEETINGS-1098] - Login via OAuth2 is broken due to redirectUri is wrong
    * [OPENMEETINGS-1102] - Room web service is broken
    * [OPENMEETINGS-1103] - Pressing 'play' on the video player while a video is already playing starts a new player
    * [OPENMEETINGS-1105] - Dereferencing Aliases using LDAP and eDirectory.
    * [OPENMEETINGS-1109] - Appointment with existing room is displayed as appointment with 'appointment special room'
    * [OPENMEETINGS-1110] - Audio/video is being broadcasted to the room after room exit
    * [OPENMEETINGS-1114] - LDAP config is not Unicode aware
    * [OPENMEETINGS-1117] - RTL is not fully supported by OM
    * [OPENMEETINGS-1121] - Blank field (invited user)
    * [OPENMEETINGS-1123] - RedirectLoop while trying to install
    * [OPENMEETINGS-1124] - Calendar interface bug
    * [OPENMEETINGS-1126] - Timezone bug
    * [OPENMEETINGS-1127] - Unexpected behaivor when user enter to the room if room type is udefined
    * [OPENMEETINGS-1128] - users can not be deleted ("ghost users")
    * [OPENMEETINGS-1131] - New events are not shown in the calendar
    * [OPENMEETINGS-1134] - Removed folder shows in the "Move to folder..." dropdown box
    * [OPENMEETINGS-1137] - Reducing load times of rooms via invitations api
    * [OPENMEETINGS-1139] - When users are in different timezones, the meeting setup was not shown correctly on invitee's caleander
    * [OPENMEETINGS-1143] - Recordings list order
    * [OPENMEETINGS-1146] - RTMPS uses rtmpport
    * [OPENMEETINGS-1149] - "AVI", "FLV" and "Re-convert" buttons are not visible on recordings panel when recordings list box is scrolled
    * [OPENMEETINGS-1150] - NullPointerException is thrown when user try enter to the room via calendar
    * [OPENMEETINGS-1151] - Recording Java Application is blocked by Security Settings
    * [OPENMEETINGS-1153] - "Record started" remains in upper right corner after record was stoped (interviewroom)
    * [OPENMEETINGS-1154] - Too big waiting time after pressing the "Stop recording" button
    * [OPENMEETINGS-1156] - The "Allow recording" flag is not checked when screen sharing is started
    * [OPENMEETINGS-1157] - Calendar web service is broken
    * [OPENMEETINGS-1159] - Chat is not correctly aligned then language is RTL
    * [OPENMEETINGS-1160] - Edit user settings is not correctly aligned when language is RTL
    * [OPENMEETINGS-1162] - Admin->users is not correctly aligned when language is RTL
    * [OPENMEETINGS-1163] - Admin->OAuth is not correctly aligned when language is RTL
    * [OPENMEETINGS-1164] - Admin->Servers is not correctly aligned when language is RTL
    * [OPENMEETINGS-1165] - Admin->Configurations is not correctly aligned when language is RTL
    * [OPENMEETINGS-1166] - Admin->Groups is not correctly aligned when language is RTL
    * [OPENMEETINGS-1167] - Admin->Labels is not correctly aligned when language is RTL
    * [OPENMEETINGS-1169] - Send Message dialog is not properly aligned when RTL language is selected
    * [OPENMEETINGS-1170] - Profile page is not updated when user changes settings
    * [OPENMEETINGS-1173] - The "Internal error" is thrown when uncheck the "Create/Modify appointment special room" flag
    * [OPENMEETINGS-1174] - Unenrolled user not redirected to Rooms list
    * [OPENMEETINGS-1175] - It is impossible to send private message from the room
    * [OPENMEETINGS-1177] - Calendar is not properly aligned when RTL language is selected

** Improvement
    * [OPENMEETINGS-547] - Deferred recordings converting possibility.
    * [OPENMEETINGS-623] - OpenMeetings怎么修改发送邮件的格式
    * [OPENMEETINGS-1082] - Library versions should be updated
    * [OPENMEETINGS-1099] - Build should be ready for web-start code-signing
    * [OPENMEETINGS-1130] - Emails should be created using templates, not string concatenation
    * [OPENMEETINGS-1135] - logback config should be updated to use log rotation and keep old logs
    * [OPENMEETINGS-1136] - Improving portuguese-brazil installation translation

** New Feature
    * [OPENMEETINGS-1104] - Enable change first day in the Calendar

** Wish
    * [OPENMEETINGS-1065] - add ability to minimize screen-sharing video


Release Notes - Openmeetings - Version 3.0.3
================================================================================================================

** Bug
    * [OPENMEETINGS-270] - MemoryLeak / Dead-Lock in FlvRecorderConverter
    * [OPENMEETINGS-292] - Inviting people during conference
    * [OPENMEETINGS-409] - Interview Room (2)
    * [OPENMEETINGS-452] - LDAP issue. Cannot relogin with user that already was logined before and then logged out
    * [OPENMEETINGS-532] - Generated hash issue
    * [OPENMEETINGS-616] - Openmeetings for Drupal got a 500 error
    * [OPENMEETINGS-680] - The "," symbol is used for the multiple e-mail instead of standard ";" symbol
    * [OPENMEETINGS-683] - Somtimes vido frame is not visible for other users in the room
    * [OPENMEETINGS-686] - Recording faild when pause is used
    * [OPENMEETINGS-697] - Authentification Ldap
    * [OPENMEETINGS-809] - Global chat issues in rooms
    * [OPENMEETINGS-888] - Room name is not translated correctly in the "My room" widget
    * [OPENMEETINGS-915] - Regression in 3.0: Incorrect moderator list update in the room screen.
    * [OPENMEETINGS-918] - Contacts should not be added to usergroup
    * [OPENMEETINGS-931] - AD LDAP Authentication on empty install organization choice after first logon: empty list
    * [OPENMEETINGS-953] - can not upload files while using Tomcat with SSL enabled
    * [OPENMEETINGS-986] - Oauth2.0 Logon Not Working
    * [OPENMEETINGS-998] - Audio and Video of recordings are not in sync after a few minutes
    * [OPENMEETINGS-1007] - Users with externalUserId and externaluserType <> null can't login
    * [OPENMEETINGS-1012] - Reverted timezone is set by default in invitation window
    * [OPENMEETINGS-1013] - Profile pictures are not displayed to invited user
    * [OPENMEETINGS-1015] - Browser time zone is not selected correctly in the invitation window until all java timezones are loaded
    * [OPENMEETINGS-1019] - RemoteControl: problem with sql
    * [OPENMEETINGS-1020] - create new user after adding user does not add to DB
    * [OPENMEETINGS-1022] - cliAdmin is broken (NPE + exclude-files)
    * [OPENMEETINGS-1023] - ChatMessages are not imported
    * [OPENMEETINGS-1024] - Add user admin dropdown is broken when postgres is used
    * [OPENMEETINGS-1026] - Moderator rights are not availble for admin user if enter to the room after simple user
    * [OPENMEETINGS-1027] - Search button does not work for users
    * [OPENMEETINGS-1029] - modifyRoomParameter SOAP/REST method is broken
    * [OPENMEETINGS-1031] - The "New folder" dialogs moves to the bottom of the screen and becomes invisible
    * [OPENMEETINGS-1032] - search variable in Language Editor produce java.lang.StackOverflowError
    * [OPENMEETINGS-1034] - openmeetings start always fails with postgresql db on debian
    * [OPENMEETINGS-1035] - "ant -Ddb=postgres" always fails
    * [OPENMEETINGS-1037] - LDAP passwords are being printed to the log
    * [OPENMEETINGS-1038] - PrivateRoom Widget is displayed when dashboard.show.myrooms key is disabled
    * [OPENMEETINGS-1039] - Interview recording is broken if stop-on-close
    * [OPENMEETINGS-1042] - .ppt file not open when i upload 
    * [OPENMEETINGS-1048] - Appointement owner has no moderation rights
    * [OPENMEETINGS-1050] - User list is missing room users
    * [OPENMEETINGS-1052] - Room list not displayed after room exit
    * [OPENMEETINGS-1059] - Language not loaded from user profile.
    * [OPENMEETINGS-1060] - Strange view of warnings at User editing screen.
    * [OPENMEETINGS-1061] - Font size list is not visible and availble in the global chat
    * [OPENMEETINGS-1067] - "Move to folder.." item is not translated correctly on the "Contacts and messages" tab
    * [OPENMEETINGS-1068] - Error is thrown and connection is closed when move event into Calendar view
    * [OPENMEETINGS-1069] - Add/remove a user to the default moderator list not working properly
    * [OPENMEETINGS-1070] - Strange view after auto logout from demo room
    * [OPENMEETINGS-1076] - Export of localization to file not working.
    * [OPENMEETINGS-1077] - Max participants in the room work incorrectly

** Improvement
    * [OPENMEETINGS-96] - Possibility to deny remote control for all when sharing screen
    * [OPENMEETINGS-360] - Email invited meeting participants to display name not email address
    * [OPENMEETINGS-942] - Searching for contacts
    * [OPENMEETINGS-971] - Restrict attendees suggestions
    * [OPENMEETINGS-984] - Recording auto-repairing should be added
    * [OPENMEETINGS-1017] - ACLs should be added to the User
    * [OPENMEETINGS-1021] - Red5 should be updated to the latest stable version
    * [OPENMEETINGS-1028] - Red5 should be updated to the latest stable version
    * [OPENMEETINGS-1033] - Improve ldap auth type adding SearchScope variable in config file
    * [OPENMEETINGS-1036] - Improve User Form for include LDAP domain
    * [OPENMEETINGS-1040] - Select2 should be used to display/set user groups
    * [OPENMEETINGS-1049] - no default value for the "Quality of the screen sharing"/default FPS

** New Feature
    * [OPENMEETINGS-442] - om LDAP users controlled with a group
    * [OPENMEETINGS-1011] - long time to load openmeetings activity in moodle

** Task
    * [OPENMEETINGS-964] - LDAP login should be refactored

** Test
    * [OPENMEETINGS-1025] - Problem with convert recording by ffmpeg

** Wish
    * [OPENMEETINGS-861] - SOAP user for creating & using om rooms via moodle can log into GUI of OM
    * [OPENMEETINGS-1066] - re-order fields on screen-sharing applet


Release Notes - Openmeetings - Version 3.0.2
================================================================================================================

** Bug
    * [OPENMEETINGS-604] - Pop up message remain same after quitting the room created by Book conference room option in the email
    * [OPENMEETINGS-916] - Selected recording is not highlighted and should not be moved to other folder
    * [OPENMEETINGS-976] - Cannot restore an erased key in administration\configuration\key
    * [OPENMEETINGS-978] - It is impossible to start OM in offline mode
    * [OPENMEETINGS-983] - Verification URL is not generated correctly for self register users
    * [OPENMEETINGS-985] - Send Invitation functionality is broken
    * [OPENMEETINGS-990] - error while playing recording
    * [OPENMEETINGS-993] - Deleted rooms are now excluded from backup
    * [OPENMEETINGS-994] - AllowRecording option lock normal user interaction in conference Room.
    * [OPENMEETINGS-996] - send invitation - generate URL
    * [OPENMEETINGS-997] - error installing with mssql 
    * [OPENMEETINGS-1002] - OM theming should be consistent
    * [OPENMEETINGS-1004] - Internal error is thrown when you search a user on the Search Users Tab

** Improvement
    * [OPENMEETINGS-982] - ApplicationContext recreation should be avoided


Release Notes - Openmeetings - Version 3.0.1
================================================================================================================

** Sub-task
    * [OPENMEETINGS-937] - Screen sharing application should create recordings with size multiple by 16

** Bug
    * [OPENMEETINGS-913] - Booking is not working via private message
    * [OPENMEETINGS-917] - Contacts should not be added as default moderator
    * [OPENMEETINGS-920] - where are the controls to playback a recorded video?
    * [OPENMEETINGS-934] - screenrecording without sound
    * [OPENMEETINGS-935] - Names are mixed in contact request email
    * [OPENMEETINGS-936] - First frame of the recording has size differs from all other frames
    * [OPENMEETINGS-943] - OM3.0: login with LDAP user not working
    * [OPENMEETINGS-949] - Add Whiteboard: untranslated string - hardcoded
    * [OPENMEETINGS-951] - Command line installer fails if path contains spaces
    * [OPENMEETINGS-952] - Build should be compatible with latest ant
    * [OPENMEETINGS-956] - Recording frame is not scrolled
    * [OPENMEETINGS-957] - Screensharing is broken
    * [OPENMEETINGS-958] - Calendar event start and end date are not displayed correctly in the month vew for IST time zone
    * [OPENMEETINGS-959] - "Choose Device" Dialog doesn't show (all) devices from flash-settings
    * [OPENMEETINGS-960] - Long time without changing progressbar when enter OM
    * [OPENMEETINGS-961] - Calendar event can be canceled by guest
    * [OPENMEETINGS-965] - Dashboard is malfunctioning when the user language is set to french
    * [OPENMEETINGS-966] - Invitation links are not working
    * [OPENMEETINGS-967] - dashboard.show.myrooms and dashboard.show.rssfeed options are not working
    * [OPENMEETINGS-972] - Default user database
    * [OPENMEETINGS-975] - Reminder is not sent for calendar event
    * [OPENMEETINGS-977] - Import of Appointments and UserContacts was broken

** Improvement
    * [OPENMEETINGS-938] - Recording length field should be filled by converters
    * [OPENMEETINGS-939] - Not ready recordings should have special icon


Release Notes - Openmeetings - Version 3.0.0
================================================================================================================

** Sub-task
    * [OPENMEETINGS-746] - Replace OmTimeZone in User Entity with String tz and fix all dependencies
    * [OPENMEETINGS-747] - Replace OmTimeZone in Invitations Entity with String tz and fix all dependencies
    * [OPENMEETINGS-748] - Replace OmTimeZone in MeetingMembers Entity with String tz and fix all dependencies
    * [OPENMEETINGS-749] - Fix Installer with new timezone handling, default to server timezone in UI
    * [OPENMEETINGS-750] - Fix Backup importer to be able to import old backups (2.x) to new database schema (3.x) (User, Invitations, MeetingMembers have no OmTimeZone anymore)
    * [OPENMEETINGS-751] - Remove OmTimeZone Entity and import mechanism for timezones.xml and some cleanup
    * [OPENMEETINGS-752] - Create Branch and Jenkins Job for Timezone refactoring
    * [OPENMEETINGS-754] - Fix user admin UI to have timezone as string
    * [OPENMEETINGS-755] - Fix invitation popup in Flash to not use the OmTimeZones for creating the Invitation
    * [OPENMEETINGS-758] - Remove OpenLaszlo Admin UI and all related API calls (only if they are not needed somewhere else)
    * [OPENMEETINGS-759] - Remove Flash UI user settings and related API calls 
    * [OPENMEETINGS-762] - Callers of TimezoneUtil.getTimezoneByInternalJName should be checked to work as expected

** Bug
    * [OPENMEETINGS-69] - Conference Room - Chat RTL dosn't function 
    * [OPENMEETINGS-243] - "Updated" field in Administration -> LDAP panel contains "null" for string for empty value.
    * [OPENMEETINGS-274] - It is impossible to display "test setup recording" once hidden
    * [OPENMEETINGS-321] - Recording under OSX throws exception in RecordingConverter
    * [OPENMEETINGS-337] - interview room - audio does not work when "audio only" is selected
    * [OPENMEETINGS-348] - zoom synchonization
    * [OPENMEETINGS-377] - Double clicking in the calendar area create two “Event details” dialog windows not just one window
    * [OPENMEETINGS-405] - microphoneRateNormal & microphoneRateBest - not change rate
    * [OPENMEETINGS-410] - whiteboard first color
    * [OPENMEETINGS-416] - "Hide actions menu" does not work via SOAP in "restricted" room
    * [OPENMEETINGS-421] - Reminder to conference issue
    * [OPENMEETINGS-426] - Html Errors/Problems
    * [OPENMEETINGS-428] - Refactor User administration to Wicket
    * [OPENMEETINGS-432] - video only room is coming with white board also
    * [OPENMEETINGS-435] - Help Help Help openmeetings service is not work at the next day
    * [OPENMEETINGS-437] - Link "...Edit your profile" form de user home page send the control to a user profile view, not to a edit profile view
    * [OPENMEETINGS-439] - An LDAP user can't change their own profile picture.
    * [OPENMEETINGS-444] - Create HTML/Wicket admin backup section
    * [OPENMEETINGS-445] - Backup Export does not work at all
    * [OPENMEETINGS-451] - Search in user groups Wicket UI does not work
    * [OPENMEETINGS-473] - Recorded video Display blank at demo.openmeetings.com
    * [OPENMEETINGS-481] - When I reserve a room by sending an email, users who connected to this link from an email have the same email address as me
    * [OPENMEETINGS-486] - Sometimes OM stops responding to clicks
    * [OPENMEETINGS-494] - Recording gives frame rate of 2 fps
    * [OPENMEETINGS-503] - Openmeetings does not logout on the Recording panel
    * [OPENMEETINGS-507] - Error message is shown when user save the Profile settings 
    * [OPENMEETINGS-513] - Participant of poll can vote more than once in the "My conference room"
    * [OPENMEETINGS-514] - Some extra links are displayed on the "Choose Usergroup" dialog
    * [OPENMEETINGS-537] - Pop menu  in conference for files shows "Delete folder"
    * [OPENMEETINGS-544] - some bug with SIP
    * [OPENMEETINGS-560] - It’s possible to add several records with the same key value in configuration.
    * [OPENMEETINGS-564] - Types of rooms are not localized
    * [OPENMEETINGS-566] - No default timezone selection in registration/sign up when user is in timezone +12
    * [OPENMEETINGS-572] - Empty fields are replaced with string "null" after export&import
    * [OPENMEETINGS-575] - Name of the restricted and interview rooms is not displayed when user enter to this room
    * [OPENMEETINGS-579] - In any room not close the video and audio settings windows. Video is not broadcasting.
    * [OPENMEETINGS-580] - Smslib 3.5.3 should be used.
    * [OPENMEETINGS-582] - 2.0 RoomPoll and Configs restore failed
    * [OPENMEETINGS-584] - Main window is scrolled when select value from dropdown box
    * [OPENMEETINGS-586] - FileItem owner_id is not replaced with new id while system import
    * [OPENMEETINGS-587] - Exclusive audio by hotkey is broken
    * [OPENMEETINGS-590] - Useless "SIP Settings" section in the user screen.
    * [OPENMEETINGS-591] - Whiteboard presentacion from PPT page controll event randomly broken
    * [OPENMEETINGS-596] - ffmpeg is not work in current version
    * [OPENMEETINGS-600] - RSS Feed
    * [OPENMEETINGS-601] - User Profile picture
    * [OPENMEETINGS-603] - Conference Room Types List doesn't display textual content - Book Conference Room Option Selected while Sending an Email 
    * [OPENMEETINGS-609] - The end time shown under the Book Conference Room option in New Message is Incorrect
    * [OPENMEETINGS-617] - Impossible to refresh video using button "(Re) Start audio/video or change device settings"
    * [OPENMEETINGS-618] - Incorrect translation
    * [OPENMEETINGS-619] -  Problems with a microphone 
    * [OPENMEETINGS-620] - Self-Register, Forgot password and login by LDAP should be implemented
    * [OPENMEETINGS-625] - Profile Pictures not working on LDAP Accounts
    * [OPENMEETINGS-627] - Private rooms disappear after use
    * [OPENMEETINGS-628] - Exception is thrown when search user on the Profile->Search users tab
    * [OPENMEETINGS-629] - Event is not deleted from Calendar
    * [OPENMEETINGS-630] - Event is not resized in calendar
    * [OPENMEETINGS-632] - Some links are mistaked in html version of OM
    * [OPENMEETINGS-633] - Event is not created if title is empty.
    * [OPENMEETINGS-634] - No menu accessable after file upload, in a special condition
    * [OPENMEETINGS-635] - Administration / Configuration : default_lang_id documentation
    * [OPENMEETINGS-640] - Room is not resized in IE
    * [OPENMEETINGS-642] - The "Import" and "Export" buttons are missed on the Administrator->Language editor tab
    * [OPENMEETINGS-643] - User details is not updated in the HTML version
    * [OPENMEETINGS-645] - Can't create installation wizard
    * [OPENMEETINGS-647] - Drag&Drop Issue Openmeetings 1.8.8 r4555
    * [OPENMEETINGS-650] - Can't create conference room
    * [OPENMEETINGS-651] - User can not login
    * [OPENMEETINGS-654] - Interview room is broken
    * [OPENMEETINGS-655] - Calendar is not localized
    * [OPENMEETINGS-657] - can not convert file
    * [OPENMEETINGS-658] - Event creates in the Calendar with wrong start and end time
    * [OPENMEETINGS-660] - Types of reminder are not localized
    * [OPENMEETINGS-661] - Invitation is not implemented in the HTML Calendar
    * [OPENMEETINGS-663] - OM Installer is not localized
    * [OPENMEETINGS-664] - OM is not installed in IE 10 browser.
    * [OPENMEETINGS-665] - File upload in the room is broken
    * [OPENMEETINGS-666] - Main menu displays incorrectly in the IE browser.
    * [OPENMEETINGS-667] - Recordings are not viewable on iPad
    * [OPENMEETINGS-669] - Recording is broken
    * [OPENMEETINGS-672] - in recordings page ,people cant logout
    * [OPENMEETINGS-673] - Rooms form is not shown correctly in the HTML version
    * [OPENMEETINGS-674] - Image is not uploaded on the "Profile" tab in the HTML version of OM
    * [OPENMEETINGS-676] - User can not login
    * [OPENMEETINGS-679] - Share/record screen
    * [OPENMEETINGS-682] - Admin password length is not checked while installing
    * [OPENMEETINGS-687] - Microphone is unmuted when user refresh video frame
    * [OPENMEETINGS-688] - Library versions should be bumped
    * [OPENMEETINGS-689] - Russian installation encoding is broken in Ubuntu.
    * [OPENMEETINGS-691] - screen sharing / recording couldn't starting
    * [OPENMEETINGS-693] - Tomcat 7 patch should be removed from OM build
    * [OPENMEETINGS-695] - Rooms page is not completly in the HTML version
    * [OPENMEETINGS-696] - Choose device dialog is not availble in the restricted room
    * [OPENMEETINGS-702] - when uploading file in a room, after click start upload,  return a window with HTTP-ERROR: 500  
    * [OPENMEETINGS-703] - Invitation is not implemented to the HTML Calendar
    * [OPENMEETINGS-704] - Calendar UI - Unify button list (Cancel always on right side)
    * [OPENMEETINGS-705] - Not possible to enter any conference room
    * [OPENMEETINGS-707] - Calendar UI Creation Popup - clean up UI elements
    * [OPENMEETINGS-708] - Calender UI Popup shows empty input values when Calendar UI is loaded second time
    * [OPENMEETINGS-709] - Calendar UI Popup - no need for delete button if you create a new event
    * [OPENMEETINGS-711] - Calendar UI add external attendee's
    * [OPENMEETINGS-714] - Calendar does not send any invitations to the attendees
    * [OPENMEETINGS-715] - Calendar does not send any update email if you change a calendar event to the attendees
    * [OPENMEETINGS-716] - Calendar does not send any delete email if you delete a calendar event to the attendees
    * [OPENMEETINGS-718] - Newly created users are unable to login
    * [OPENMEETINGS-719] - Calendar UI delete button has no confirmation
    * [OPENMEETINGS-720] - Calendar throws server error if any calendar event is saved (only tested with new events so far)
    * [OPENMEETINGS-726] - Internal users do not show calendar events of events that you have been added to
    * [OPENMEETINGS-729] - Empty / null values in email_username/password throws Exception when processing emails
    * [OPENMEETINGS-730] - Cannot save empty value for configuration key in HTML5 UI (for instance username / pas for email configuration)
    * [OPENMEETINGS-736] - Calendar UI - Month view does not resize to browser window by default
    * [OPENMEETINGS-738] - Wrong successful registration message behavior
    * [OPENMEETINGS-741] - Failed to change password
    * [OPENMEETINGS-742] - Calendar UI - week and day view pretty useless when you can't select any day
    * [OPENMEETINGS-743] - HTML Version Forgotten  your password email link does not work 
    * [OPENMEETINGS-744] - Private message does not send in the HTML version
    * [OPENMEETINGS-756] - Remove OpenLaszlo/Flash Calendar UI and Server side components API Calls/DTOs
    * [OPENMEETINGS-757] - Several issues with external and internal meeting members
    * [OPENMEETINGS-763] - Command line admin: --drop option is broken
    * [OPENMEETINGS-764] - Plugins should work with OM 3.0.0
    * [OPENMEETINGS-765] - Wicket should be used for email generation
    * [OPENMEETINGS-768] - User is not enter to the room when rtmp port is not set correctly
    * [OPENMEETINGS-769] - Calendar UI - Event details with link to room
    * [OPENMEETINGS-770] - when i click button  share/recording screen , i get do download [ public 7.jnlp], not working properly
    * [OPENMEETINGS-771] - Dashboard is not shown correctly when user exit from the room.
    * [OPENMEETINGS-773] - Deleted users are shown in the Usergroups
    * [OPENMEETINGS-776] - Contacts should be visible for owner and admin only
    * [OPENMEETINGS-777] - SOAP/REST API should be fixed to create appointments as HTML5 web client
    * [OPENMEETINGS-780] - Upload pictures and other documents on the white board, has been in the transition state.
    * [OPENMEETINGS-784] - SOAP API service "modifyRoomParameter" converts "paramValue" into String
    * [OPENMEETINGS-785] - Messsage " You have successfully signed up. An email with a verification code will be sent to your mailbox." comes up even if it is not supposed to
    * [OPENMEETINGS-786] - Loading symbol in Wicket and Flash should look the same
    * [OPENMEETINGS-787] - top navigation gone
    * [OPENMEETINGS-788] - As soon as you hit the "start conference" button the video freezes and just nothing happens
    * [OPENMEETINGS-789] - Interview room recording in 2.1.1
    * [OPENMEETINGS-796] - Install Wizard displays wrong value for red5SipEnable
    * [OPENMEETINGS-799] - SOAP methods RoomService.{getRooms,getRoomsWithCurrentUsers} and UserService.getUsersByOrganisation are broken
    * [OPENMEETINGS-803] - Image files are not visible for attendees on whiteboard
    * [OPENMEETINGS-804] - updateRoomWithModerationQuestionsAudioTypeAndHideOptions sets isAudioOnly always to true
    * [OPENMEETINGS-806] - addNewUser SOAP method doe not return valid error code
    * [OPENMEETINGS-808] - Installation using Derby default database configuration seems to have performance issues
    * [OPENMEETINGS-810] - Entering interview room doesnt have option to select camera size - it inhetits the last used size
    * [OPENMEETINGS-815] - Exception in sign up
    * [OPENMEETINGS-818] - Room login via secureHash is broken
    * [OPENMEETINGS-819] - Zoom is not synchronyzed on whiteboard
    * [OPENMEETINGS-821] - Can't upload file
    * [OPENMEETINGS-822] - Closed room was created by addRoom and addRoomWithModeration REST/SOAP methods
    * [OPENMEETINGS-830] - Recording is broken without screen sharing
    * [OPENMEETINGS-832] - SOAP doesn't work
    * [OPENMEETINGS-835] - no proper db-type option for postgresql db (Command Line Admin)
    * [OPENMEETINGS-836] - OM layout error  - item from vicket is hide the room chat elements
    * [OPENMEETINGS-841] - Only the first user in a room is displayed and can be heard by others
    * [OPENMEETINGS-842] - External users should not be redirected to dashboard
    * [OPENMEETINGS-844] - Invitations are broken after last refactoring
    * [OPENMEETINGS-848] - RoomService.getRoomCounters REST/SOAP method is not working
    * [OPENMEETINGS-849] - some remains after the purge of deleted recordings and a system cleanup via admin.sh
    * [OPENMEETINGS-851] - There is no way to use uploaded files in an interview room
    * [OPENMEETINGS-852] - Whiteboard Objects not clickable
    * [OPENMEETINGS-855] - NPE using ./admin.sh -v -f --cleanup
    * [OPENMEETINGS-856] - Invitation link is broken
    * [OPENMEETINGS-859] - Audio and Video in recordings is no more in sync
    * [OPENMEETINGS-860] - Invite window is opened with long delay
    * [OPENMEETINGS-864] - Exception is thrown when update event in the calendar
    * [OPENMEETINGS-865] - Upload buttons has artifacts
    * [OPENMEETINGS-866] - NPE if frontend register is not allowed
    * [OPENMEETINGS-868] - User creation via SOAP availability should be controlled by separate option
    * [OPENMEETINGS-869] - Email subject is not displayed correctly for UTF-8 charset
    * [OPENMEETINGS-870] - Plugins should work in version 3.0
    * [OPENMEETINGS-871] - Internal error is thrown when search user on the Search users tab
    * [OPENMEETINGS-872] - The "to" field is not filed in the "Write new message dialog"
    * [OPENMEETINGS-873] - Ajax error is thrown when click on the "Show user profile" icon
    * [OPENMEETINGS-875] - Widgets title are not translated when user change language
    * [OPENMEETINGS-876] - The "Click here to enter room" link is attached to cancel email notification.
    * [OPENMEETINGS-877] - New line "<br/>" tag does not applied for invitation message
    * [OPENMEETINGS-880] - 3.0 regression: "Forgotten your password?" does not work on the login screen.
    * [OPENMEETINGS-882] - OpenMeetings calendar allows create events with the end date/time earlier than the start date/time
    * [OPENMEETINGS-883] - Strange behaviour during the external guest entering
    * [OPENMEETINGS-884] - Regression in 3.0: Drop-down lists in the user registration screen work incorrectly in Google Chrome
    * [OPENMEETINGS-885] - Record is not played under Chrome browser
    * [OPENMEETINGS-886] - Impossible to save editable fields in My Profile.
    * [OPENMEETINGS-890] - The "Login" field is not displayed on the connection panel.
    * [OPENMEETINGS-891] - Wrong birthday date is displayed on the profile->edit settings panel
    * [OPENMEETINGS-892] - "Add user" button is disabled when add new group
    * [OPENMEETINGS-893] - Removed user is not added to usergroup again
    * [OPENMEETINGS-898] - Time zone is not defined correctly on sign in page
    * [OPENMEETINGS-899] - Calendar event start and end time are not displayed correctly
    * [OPENMEETINGS-900] - Deleted contact is selected when user invite external guest to calendar invitation
    * [OPENMEETINGS-901] - Password is not requested when password protected invitation send to external guest.
    * [OPENMEETINGS-902] - Records are not created correctly
    * [OPENMEETINGS-904] - Default landing zone
    * [OPENMEETINGS-906] - Cannot create new group with users
    * [OPENMEETINGS-907] - "password is required" message is displayed when "Password protected" checkbox is not  checked
    * [OPENMEETINGS-908] - Calendar event start and end date are not displayed correctly in the month vew
    * [OPENMEETINGS-909] - Event owners is not receive email notification
    * [OPENMEETINGS-910] - Contacts are availble to search on the Search user page
    * [OPENMEETINGS-912] - Email disappears when move emial to the new folder
    * [OPENMEETINGS-914] - "Mark unread" action does not work on Contacts and message page
    * [OPENMEETINGS-919] - Access logs will not be generated
    * [OPENMEETINGS-922] - Add folder button does not add a folder.
    * [OPENMEETINGS-923] - Drag and drop of files in the recordings section does not work
    * [OPENMEETINGS-924] - deleting recordings?
    * [OPENMEETINGS-925] - Recording details previously showed the room name not the id
    * [OPENMEETINGS-927] - Memory leak in OM wicket application
    * [OPENMEETINGS-930] - getInvitationHash method allow creation of invalid users (login too small)
    * [OPENMEETINGS-932] - SIP dialer menu item is not availble in the OM 3.x

** Improvement
    * [OPENMEETINGS-167] - Main menu of OM
    * [OPENMEETINGS-168] - Adding system date on dashboard
    * [OPENMEETINGS-183] - Replacing "Timezone" column in "Users search" interface with a most important information = "statue" (connected /  absent).
    * [OPENMEETINGS-273] - calendar time is not updating dynamically
    * [OPENMEETINGS-280] - Update ATutor Module for OM
    * [OPENMEETINGS-358] - Remove or hide the "Domian" selection from the "Login" dialog when there is only one "Domain"
    * [OPENMEETINGS-368] - Allow users to zoom their view of the Whiteboard by default and not being controlled by "Draw on the Whiteboard" permissions
    * [OPENMEETINGS-375] - Allow an administrative option to control whether to display the "Mute microphone globally" dialog box or not
    * [OPENMEETINGS-429] - [Wicket] Language admin should be implemented
    * [OPENMEETINGS-484] - Poor quality of bitmapped pictures in pdf files on the whiteboard.
    * [OPENMEETINGS-548] - Open meetings in a new window or tab
    * [OPENMEETINGS-556] - GSOC: Faster screen sharing
    * [OPENMEETINGS-558] - GSOC: Need wysiwyg editor Wicket component
    * [OPENMEETINGS-574] - wicket-jquery-ui should be used instead of adding jquery-ui manually to every page
    * [OPENMEETINGS-578] - Latest Red5 server should be used in OM
    * [OPENMEETINGS-583] - Ability to disable enhanced microphone should be added
    * [OPENMEETINGS-589] - Configurable hot key for Mute/Unmute should be added
    * [OPENMEETINGS-594] - Add translated word in thai language
    * [OPENMEETINGS-610] - push2talk button
    * [OPENMEETINGS-612] - Dashboard need to be implemented
    * [OPENMEETINGS-615] - User Profile panel need to be implemented
    * [OPENMEETINGS-626] - Recordings panel need to be added
    * [OPENMEETINGS-631] - Updated French translation
    * [OPENMEETINGS-637] - Admin: Connections panel need to be implemented
    * [OPENMEETINGS-638] - Room enter/exit should be implemented
    * [OPENMEETINGS-639] - Installer should be implemented on Wicket
    * [OPENMEETINGS-646] - Emotions should be added to the chat
    * [OPENMEETINGS-685] - Japanese translation update for v2.1.1 / v3.1
    * [OPENMEETINGS-692] - HTML admin should be improved to highlight record which changes 
    * [OPENMEETINGS-701] - Wicket HTML templates should be stored unarchived
    * [OPENMEETINGS-727] - no warning for too short login names
    * [OPENMEETINGS-772] - Project tree structure should be updated
    * [OPENMEETINGS-778] - Cannot install simplified Chinese
    * [OPENMEETINGS-798] - MSSQL support should be added to OM
    * [OPENMEETINGS-820] - No function to match user groups with rooms via SOAP
    * [OPENMEETINGS-854] - SOAP/REST call getFlvRecordingByExternalUserId should take into account both external id and type

** New Feature
    * [OPENMEETINGS-152] - Background image
    * [OPENMEETINGS-491] - LDAP authentication filter
    * [OPENMEETINGS-576] - Suggestion about the tunnelling implementation.
    * [OPENMEETINGS-656] - Callback URL when client drop/log out from room
    * [OPENMEETINGS-802] - Integration with Chamilo LMS
    * [OPENMEETINGS-857] - sound/voice warning when disconnected

** Task
    * [OPENMEETINGS-81] - Unify Upload Components
    * [OPENMEETINGS-721] - is it possible to add new user from soap method?
    * [OPENMEETINGS-740] - Login via OAuth2
    * [OPENMEETINGS-760] - Removing all OpenLaszlo /Flash UI that is no more maintained all all connected server side API calls.
    * [OPENMEETINGS-767] - Redundant fields should be removed from MeetingMember object

** Wish
    * [OPENMEETINGS-38] - Default language
    * [OPENMEETINGS-534] - How to set When the user is registered, need administrator audit to register?
    * [OPENMEETINGS-607] - Refine the UI
    * [OPENMEETINGS-622] - Removing the menu items and customizing dashboard


Release Notes - Openmeetings - Version 2.2.0 Apache Release
================================================================================================================

** Bug
    * [OPENMEETINGS-671] - Calendar is shown incompletely when book conference room
    * [OPENMEETINGS-763] - Command line admin: --drop option is broken
    * [OPENMEETINGS-789] - Interview room recording in 2.1.1
    * [OPENMEETINGS-791] - Backup import is broken
    * [OPENMEETINGS-799] - SOAP methods RoomService.{getRooms,getRoomsWithCurrentUsers} and UserService.getUsersByOrganisation are broken
    * [OPENMEETINGS-803] - Image files are not visible for attendees on whiteboard
    * [OPENMEETINGS-804] - updateRoomWithModerationQuestionsAudioTypeAndHideOptions sets isAudioOnly always to true
    * [OPENMEETINGS-806] - addNewUser SOAP method doe not return valid error code
    * [OPENMEETINGS-810] - Entering interview room doesnt have option to select camera size - it inhetits the last used size
    * [OPENMEETINGS-811] - Recordings does not downloaded via Google Chrome browser
    * [OPENMEETINGS-819] - Zoom is not synchronyzed on whiteboard
    * [OPENMEETINGS-832] - SOAP doesn't work
    * [OPENMEETINGS-835] - no proper db-type option for postgresql db (Command Line Admin)
    * [OPENMEETINGS-837] - "Choose Device" Dialog stops working after a few Changes
    * [OPENMEETINGS-842] - External users should not be redirected to dashboard
    * [OPENMEETINGS-848] - RoomService.getRoomCounters REST/SOAP method is not working

** Improvement
    * [OPENMEETINGS-368] - Allow users to zoom their view of the Whiteboard by default and not being controlled by "Draw on the Whiteboard" permissions
    * [OPENMEETINGS-556] - GSOC: Faster screen sharing
    * [OPENMEETINGS-798] - MSSQL support should be added to OM
    * [OPENMEETINGS-820] - No function to match user groups with rooms via SOAP

** New Feature
    * [OPENMEETINGS-491] - LDAP authentication filter

** Task
    * [OPENMEETINGS-790] - Red5 version in 2.x branch should be bumped


Release Notes - Openmeetings - Version 2.1.1 Apache Release
================================================================================================================

** Bug
    * [OPENMEETINGS-432] - video only room is coming with white board also
    * [OPENMEETINGS-439] - An LDAP user can't change their own profile picture.
    * [OPENMEETINGS-481] - When I reserve a room by sending an email, users who connected to this link from an email have the same email address as me
    * [OPENMEETINGS-503] - Openmeetings does not logout on the Recording panel
    * [OPENMEETINGS-507] - Error message is shown when user save the Profile settings 
    * [OPENMEETINGS-537] - Pop menu  in conference for files shows "Delete folder"
    * [OPENMEETINGS-586] - FileItem owner_id is not replaced with new id while system import
    * [OPENMEETINGS-587] - Exclusive audio by hotkey is broken
    * [OPENMEETINGS-598] - dont build trunk on JDK 1.7 x64
    * [OPENMEETINGS-608] - Office file are uploaded but not displayed
    * [OPENMEETINGS-609] - The end time shown under the Book Conference Room option in New Message is Incorrect
    * [OPENMEETINGS-618] - Incorrect translation
    * [OPENMEETINGS-625] - Profile Pictures not working on LDAP Accounts
    * [OPENMEETINGS-634] - No menu accessable after file upload, in a special condition
    * [OPENMEETINGS-635] - Administration / Configuration : default_lang_id documentation
    * [OPENMEETINGS-654] - Interview room is broken
    * [OPENMEETINGS-670] - The webinar is already closed, you wil be rediredcted to some interesting offerings in X sek
    * [OPENMEETINGS-687] - Microphone is unmuted when user refresh video frame

** Improvement
    * [OPENMEETINGS-589] - Configurable hot key for Mute/Unmute should be added

----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------



Release Notes - Openmeetings - Version 2.1 Apache Release
================================================================================================================

** Sub-task
    * [OPENMEETINGS-448] - Test and fix latest trunk to be able to import all old download zip's



** Bug
    * [OPENMEETINGS-34] - missing entries in XML language files
    * [OPENMEETINGS-49] - Synchronisation between Calendar and Dashboard
    * [OPENMEETINGS-92] - The documents are not deleted from the server after removing them from the system
    * [OPENMEETINGS-94] - References to the code.google.com need to be updated
    * [OPENMEETINGS-157] - Registration bug
    * [OPENMEETINGS-166] - Meeting is created with incorrect start time in the calendar.
    * [OPENMEETINGS-180] - bug sending invitation
    * [OPENMEETINGS-196] - Calendar Ical / Simple Mail - double invitation mail
    * [OPENMEETINGS-212] - Activities and actions: "Deny and remove message " button is not worked
    * [OPENMEETINGS-243] - "Updated" field in Administration -> LDAP panel contains "null" for string for empty value.
    * [OPENMEETINGS-251] - Minors layout problems when translating
    * [OPENMEETINGS-267] - missing translation
    * [OPENMEETINGS-291] - light does not indicate when the user is speaking
    * [OPENMEETINGS-310] - Moodle plugin version
    * [OPENMEETINGS-311] - Language problem after Openmeetings update (accessing from Moodle only)
    * [OPENMEETINGS-312] - File was null or did not exist: TEST_SETUP_1338945244240.flv
    * [OPENMEETINGS-314] - Webcam Title of user is username of default OM user
    * [OPENMEETINGS-316] - ICS attachments for emails not working with Exchange 2003/2007 and Outlook 2003/2007
    * [OPENMEETINGS-320] - Exception and layout for screensharing/recording client
    * [OPENMEETINGS-322] - Several Exception in Log
    * [OPENMEETINGS-327] - Add Restart Save Mail-Queue
    * [OPENMEETINGS-328] - screen sharing is not closing automatically
    * [OPENMEETINGS-331] - tooltip for cmd_applyforWhiteBoard room action is not set
    * [OPENMEETINGS-343] - OM crashes if Inviteв guest with screen sharing rights tries to start screen sharing
    * [OPENMEETINGS-346] - Screen Sharing does not end with end of meeting
    * [OPENMEETINGS-362] - Download of profile images broken
    * [OPENMEETINGS-363] - Some minor bugs in private chat
    * [OPENMEETINGS-364] - User is not removed from user list when he leaves the room
    * [OPENMEETINGS-366] - File upload does not show images as options when doing file upload
    * [OPENMEETINGS-376] - “Notification type” text overflows the drop down data selection area and is partly covered
    * [OPENMEETINGS-378] - Update Calendar email notification rules to send notification only when data relevant to the users has been changed
    * [OPENMEETINGS-379] - The Calendar ics format email notification is incorrectly formed
    * [OPENMEETINGS-380] - Calendar "Add attendee" option has a second option of itself to "Add external" but adding an external attendee does not close this dialog
    * [OPENMEETINGS-381] - ivy jar in our repository
    * [OPENMEETINGS-382] - LICENSE file mentions both CDDL and GPL
    * [OPENMEETINGS-385] - contextmenu  contextmenuitem
    * [OPENMEETINGS-389] - Create Drupal plugin for OpenMeetings
    * [OPENMEETINGS-391] - Private and public folder does not appear
    * [OPENMEETINGS-392] - privateChatTabBottom
    * [OPENMEETINGS-393] - NumberFormatException while creating user or room
    * [OPENMEETINGS-394] - save and load whiteboard does not work
    * [OPENMEETINGS-396] - ICS attachments not recognised in Outlook 2003
    * [OPENMEETINGS-402] - I cannot open Interview recorded
    * [OPENMEETINGS-403] - Missing rooms
    * [OPENMEETINGS-408] - Interview Room (1)
    * [OPENMEETINGS-415] - NetStream NetStatus event does not work when attached to client object
    * [OPENMEETINGS-418] - ScreenShare russian charset
    * [OPENMEETINGS-420] - small problems in the current version
    * [OPENMEETINGS-422] - Java error: TEST_SETUP_xxx.flv does not exist; javax error : ClientBroadCast Stream; published name=null
    * [OPENMEETINGS-423] - Installation OM2.0
    * [OPENMEETINGS-424] - Adjust Stream Volume
    * [OPENMEETINGS-428] - Refactor User administration to Wicket
    * [OPENMEETINGS-431] - OpenMeetings behind a proxy doesn't work for screen sharing
    * [OPENMEETINGS-433] - Add Wicket enabled room administration
    * [OPENMEETINGS-434] - Create admin area for groups, configurations, ldaps, servers
    * [OPENMEETINGS-438] - Some bugs
    * [OPENMEETINGS-440] - Problem in installation process
    * [OPENMEETINGS-441] - Can't backup
    * [OPENMEETINGS-445] - Backup Export does not work at all
    * [OPENMEETINGS-449] - Cannot import backup file
    * [OPENMEETINGS-450] - Wicket UI locked after accepting download of backup
    * [OPENMEETINGS-451] - Search in user groups Wicket UI does not work
    * [OPENMEETINGS-453] - Recordings associated with wrong user after import if already a user was in the database
    * [OPENMEETINGS-454] - Scrennsharing initiated by invited user ends up in exception report
    * [OPENMEETINGS-455] - Create RTMPClient to do a load test
    * [OPENMEETINGS-458] - Missing language string "pluginname"
    * [OPENMEETINGS-459] - Remove RoomClient from database
    * [OPENMEETINGS-466] - Screen Sharing window, Chinese Simplified (lang_id=11) text display "?????"
    * [OPENMEETINGS-467] - No internal user can be selected when planning a meeting
    * [OPENMEETINGS-469] - Deleted meeting data remains in SIP db tables
    * [OPENMEETINGS-472] - red5sip rev68 will not run
    * [OPENMEETINGS-474] - Links to rooms sent via email do not work
    * [OPENMEETINGS-482] - Network check script hangs after the second "Port" button click 
    * [OPENMEETINGS-489] - Start recording test hangs if no webcamera connected
    * [OPENMEETINGS-490] - Wrong directory for test file in "Choose device" window
    * [OPENMEETINGS-492] - Restoration of backup failed
    * [OPENMEETINGS-493] - Uploading Libreoffice-format files only results in "Deleted"
    * [OPENMEETINGS-496] - It's unable to send localized SMS message.
    * [OPENMEETINGS-498] - Backup fails with Exception
    * [OPENMEETINGS-502] - Some labels are hardcoded on the System backup tab 
    * [OPENMEETINGS-504] - Some labels are not translated to russian language
    * [OPENMEETINGS-505] - Values of the "Unerole User" and "Server Address" fields are mixed on the Administrator -> Connections tab.
    * [OPENMEETINGS-506] - Localized (russian) file name is not uploaded on the Profile tab
    * [OPENMEETINGS-509] - Comment is shown incorrectly in the Choose device dialog
    * [OPENMEETINGS-512] - Files are not uploaded in the rooms
    * [OPENMEETINGS-515] - Video recording artifacts at the begin of the file
    * [OPENMEETINGS-516] - After graduation tasks
    * [OPENMEETINGS-517] - sensSMS flag is not imported/exported by admin.
    * [OPENMEETINGS-519] - Need to update Configuration page on Openmeetings site.
    * [OPENMEETINGS-520] - Missing areas on the recorded video
    * [OPENMEETINGS-521] - The "Show/Copy chat log" and "Delete server chat log" buttons are not available for the Ptivate Chat
    * [OPENMEETINGS-523] - download manual ghostcript download link is dead
    * [OPENMEETINGS-524] - Unenroled user is not thrown from the conference room 
    * [OPENMEETINGS-525] - Font styles icon is enabled for Ptivate Chat if the "Allow font styles" is not enabled for conference room
    * [OPENMEETINGS-526] - Not enough checking in the screensharing/recording
    * [OPENMEETINGS-530] - Network testing tool on login page does not work when having OM configured for HTTPS and RTMPS
    * [OPENMEETINGS-531] - Error Missing[XXXX]
    * [OPENMEETINGS-536] - In upload dialog "Select file" does not work
    * [OPENMEETINGS-540] - Uploading of .odt files
    * [OPENMEETINGS-552] - Release blocking UI issues
    * [OPENMEETINGS-561] - Video is not removed on Whiteboard closing
    * [OPENMEETINGS-563] - "Black box" is displayed on test audio/video setup dialog
    * [OPENMEETINGS-565] - Stackoverflow Exception when you goto your user profile and try to save it.
    * [OPENMEETINGS-566] - No default timezone selection in registration/sign up when user is in timezone +12
    * [OPENMEETINGS-567] - If you hit the "start upload" button twice, while the conversion is running, Openmeetings will run into an error
    * [OPENMEETINGS-568] - OpenMeetings requests access to Cam even if there is none
    * [OPENMEETINGS-569] - Faulty highperf settings in bat script
    * [OPENMEETINGS-572] - Empty fields are replaced with string "null" after export&import
    * [OPENMEETINGS-580] - Smslib 3.5.3 should be used.
    * [OPENMEETINGS-582] - 2.0 RoomPoll and Configs restore failed




** Improvement
    * [OPENMEETINGS-93] - Create Openmeetings plug-in
    * [OPENMEETINGS-119] - New users french manual
    * [OPENMEETINGS-299] - Language import should be improved to take less time
    * [OPENMEETINGS-339] - File location detection should be centralized
    * [OPENMEETINGS-349] - OM should be scalable 
    * [OPENMEETINGS-356] - Modify Rooms menu to have three options for each of the room types
    * [OPENMEETINGS-357] - Users should first log into "Private rooms", have as a Admin selectable option for where users first log into
    * [OPENMEETINGS-361] - It should be available to set logo in OM
    * [OPENMEETINGS-384] - Mention that the file parameter is optional for the admin setup script
    * [OPENMEETINGS-386] - Import/Export should be automatic based on Annotations
    * [OPENMEETINGS-387] - It should be possible to create Appointment and use existent room
    * [OPENMEETINGS-390] - Openmeetings Plugin for Bitrix need to be implemented
    * [OPENMEETINGS-395] - Ability to add multiple external attendees should be added to the calendar
    * [OPENMEETINGS-397] - Private chat with chat disabled
    * [OPENMEETINGS-398] - Updated french translation for OM 2.1
    * [OPENMEETINGS-399] - jitsi openmeetings plugin
    * [OPENMEETINGS-400] - Improve volume slider
    * [OPENMEETINGS-436] - Ability to moderate room chat should be added
    * [OPENMEETINGS-470] - SIP meeting extensions
    * [OPENMEETINGS-477] - Possibility to copy invitation link to the clipboard should be added
    * [OPENMEETINGS-478] - It should be possible to enable auto videopod selection
    * [OPENMEETINGS-480] - It would be better to remove confirmation dialog when user turns micro on/off.
    * [OPENMEETINGS-497] - Confirmation diolog for the turning micro on/off is inconvenient.
    * [OPENMEETINGS-501] - fresh build fails with class org/jdom/JDOMException not found in anakia build section
    * [OPENMEETINGS-518] - Sms text sent as a meeting reminder is too long sometime.
    * [OPENMEETINGS-527] - Confirm an exclusive audio
    * [OPENMEETINGS-529] - AEC should be utilized in OM
    * [OPENMEETINGS-535] - an update of the german language file
    * [OPENMEETINGS-541] - Updated version of French language file
    * [OPENMEETINGS-562] - To import ppt presentation delete page
    * [OPENMEETINGS-583] - Ability to disable enhanced microphone should be added

** New Feature
    * [OPENMEETINGS-111] - Command line admin need to be created
    * [OPENMEETINGS-342] - Private Chat should be available in the room
    * [OPENMEETINGS-350] - Hot key should be added to be able to "rearrange" video windows in the room
    * [OPENMEETINGS-351] - Add a possibility to send sms as an appointment reminder
    * [OPENMEETINGS-354] - Volume slider
    * [OPENMEETINGS-383] - Plugin for Joomla should be added to Openmeetings






** Task
    * [OPENMEETINGS-41] - OM without private storage area
    * [OPENMEETINGS-107] - Unify database schema
    * [OPENMEETINGS-248] - Remove LGPL Icons from Symbol/Cliparts and Emoticons
    * [OPENMEETINGS-306] - Initial network quality test
    * [OPENMEETINGS-341] - Update to portugues brasil Language
    * [OPENMEETINGS-414] - Delete SIP Applet from stack
    * [OPENMEETINGS-417] - How to add/register SIP extension in OpenMeeting ?
    * [OPENMEETINGS-446] - Create a Master backup File for last versions (including all generated data)
    * [OPENMEETINGS-522] - add Redmine Plugin Link to HomePage
    * [OPENMEETINGS-585] - Clustering documentation



** Test
    * [OPENMEETINGS-50] - content of whiteboards


----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------


Release Notes - OpenMeetings - Version 2.0-INCUBATING
================================================================================================================
Sub-task

    [OPENMEETINGS-8] - Generate CalendarAPI for SOAP/REST WebServices
    [OPENMEETINGS-9] - Design MockUp for new Calendar UI
    [OPENMEETINGS-40] - Merge Audio/Video components to trunk
    [OPENMEETINGS-44] - remove all old audio/video components
    [OPENMEETINGS-47] - fix ScopeApplicationAdapter / sync and message broadcasting mechanism to not send messages to SWF10 client
    [OPENMEETINGS-51] - fix url params (invitationHash / secureHash / language_id / roomScopeId / et cetera ) to be forwarded to inner SWF components
    [OPENMEETINGS-52] - fix icon status in new video components
    [OPENMEETINGS-53] - Add security mechanism to LocalConnection subscribers
    [OPENMEETINGS-54] - fix recorder to use new audio/video components and fix recording itself to reference correct streams
    [OPENMEETINGS-55] - fix testing application (5 second video recording on room enter) to use new a/v components
    [OPENMEETINGS-61] - fix screensharing player to use the new audio/video components
    [OPENMEETINGS-62] - Clean up 5-second recordings using a scheduler
    [OPENMEETINGS-65] - fix whiteboard video player to use the new audio/video components
    [OPENMEETINGS-71] - fix interview room type to use new audio/video components
    [OPENMEETINGS-73] - fix mute functionality in new video components
    [OPENMEETINGS-77] - changeDevice.lzx must be transformed to SWF10
    [OPENMEETINGS-79] - SharedObject in SWF10 does not store settings
    [OPENMEETINGS-80] - Some notification windows need to be moved to SWF10
    [OPENMEETINGS-89] - Fix new option "hideWhiteboard" with layout of video pods
    [OPENMEETINGS-97] - RTPMSClient for ScreenSharing should be created/tested
    [OPENMEETINGS-98] - "Borrowed" code should be removed from ScreenSharing client
    [OPENMEETINGS-105] - Add the license header to all SWF10 files
    [OPENMEETINGS-170] - When you republish your stream while recording or suddenly leave the meeting, the recording has no audio

Bug

    [OPENMEETINGS-5] - Invitation default language
    [OPENMEETINGS-15] - Usability problem with login at http://demo.openmeetings.de/openmeetings/
    [OPENMEETINGS-18] - File upload no work
    [OPENMEETINGS-26] - Whiteboard error "arrow tool" dragging from right to left in any angle.
    [OPENMEETINGS-28] - LDAP wrong default mapping for firstname
    [OPENMEETINGS-31] - Upload files will not convert to SWF.
    [OPENMEETINGS-48] - Log are either not written or in the wrong logfile
    [OPENMEETINGS-56] - LDAP authentication is not correct
    [OPENMEETINGS-64] - whiteboard id
    [OPENMEETINGS-87] - All DB related JUnit tests are failed
    [OPENMEETINGS-91] - Fix field type's of comment/description fields to use datatype Text (instead of VARCHAR(255))
    [OPENMEETINGS-114] - With trunk svn 1307221: LDAP authentication fails because user can't be imported into local DB
    [OPENMEETINGS-116] - Menu bar shortcuts do not work
    [OPENMEETINGS-118] - Activity UI: Fix duplicated calls, removal of items does not work
    [OPENMEETINGS-122] - Fix JUnit tests
    [OPENMEETINGS-123] - Wildcard on creating WebService docs doesn't work
    [OPENMEETINGS-127] - Backup\Import Asterisk related tables
    [OPENMEETINGS-133] - Sources produced by nightly build should be buildable with ant
    [OPENMEETINGS-135] - Video window can't be maximized
    [OPENMEETINGS-137] - Loading of stored whiteboards doesn't work (error in loading path)
    [OPENMEETINGS-138] - Errors and quality of Recording with screensharing application
    [OPENMEETINGS-139] - Unable to Add User into Usergroups
    [OPENMEETINGS-140] - Login options/features been reduced in current update
    [OPENMEETINGS-141] - onMetaData Event not thrown in AS3 Non-Debug version
    [OPENMEETINGS-142] - 1-2-3-4 buttons on dashboard don't do anything
    [OPENMEETINGS-144] - When using openLDAP authentication, the source code uses the hardcoded 'uid' attribute to map logins and user DNs instead of the field_user_principal parameter
    [OPENMEETINGS-145] - Unmuting/exclusive audio doesn't work and icons show wrong status in video pod after entering a room
    [OPENMEETINGS-149] - Error while installing on MySQL DB openmeetings-2.0.0.r1311115-08-04-2012_2307
    [OPENMEETINGS-150] - Error restoring password
    [OPENMEETINGS-156] - UI BUGS?
    [OPENMEETINGS-158] - Degradation of the sound quality in recordings in the recent release
    [OPENMEETINGS-161] - UI Bugs in private messages
    [OPENMEETINGS-162] - Exception in Screensharing
    [OPENMEETINGS-163] - Recording does no more work if you start to share audio/video AFTER starting the recording
    [OPENMEETINGS-164] - java.lang.ArrayIndexOutOfBoundsException: 5 in Recording Conversion
    [OPENMEETINGS-165] - Video freezes as soon as two people have audio/video turned on and you start to record the meeting => Convert FLV writers to act async
    [OPENMEETINGS-171] - Screensharing notification not showing when already running
    [OPENMEETINGS-172] - Home drive in recorder UI, minimize the home drive makes the list of files empty, drag and rop file from home drive to public drive
    [OPENMEETINGS-174] - CLI import of backup does not work
    [OPENMEETINGS-175] - CLI installer does not create install.xml
    [OPENMEETINGS-176] - Import of Backup from version 1.9.x fails to import conference rooms
    [OPENMEETINGS-177] - Meeting Room Invitation Link Not working
    [OPENMEETINGS-178] - Invited user has access to adminstration panel
    [OPENMEETINGS-179] - User Not Removed from chat participants window after logout..
    [OPENMEETINGS-181] - Video Window, Conference room
    [OPENMEETINGS-182] - OM need to be restarted after fresh installation to get menu list
    [OPENMEETINGS-187] - Moderator and his room
    [OPENMEETINGS-188] - Inserting room, horizontal bar does not appear
    [OPENMEETINGS-190] - Problem with language when invoking OM from Moodle module
    [OPENMEETINGS-191] - When I enable HTTPS and RTMPS the screen sharing resultant JNLP file has the wrong address = http://servername:443/.... instead of https://servername/..... if I edit the JNLP file by hand on the client level and change the address it works
    [OPENMEETINGS-193] - Fix timezones that are missing
    [OPENMEETINGS-195] - Send private message / Show user profile buttons
    [OPENMEETINGS-196] - Calendar Ical / Simple Mail - double invitation mail
    [OPENMEETINGS-197] - Calendar Ical / Simple Mail - room language
    [OPENMEETINGS-198] - Password and dashboard calendar event list
    [OPENMEETINGS-199] - Screensharing and recording does not work under OSX with Java 64Bit
    [OPENMEETINGS-200] - Invitation link does not arrive
    [OPENMEETINGS-203] - two languages are shown
    [OPENMEETINGS-205] - ReplyTo Field leads to exception when sending emails to external users
    [OPENMEETINGS-206] - wrong meeting times
    [OPENMEETINGS-208] - Incorrectly filled "Last name" field on the User details form when created user with "Sign in" form
    [OPENMEETINGS-209] - Encoding at install OpenMeetings
    [OPENMEETINGS-210] - Calendar event
    [OPENMEETINGS-211] - NullPointerException in FLVRecorderService.stopRecordingShow
    [OPENMEETINGS-214] - When calendar event invitation is sent, invitation_text_from value displays with the name of the person for whom the invitation is being sent to but should be showing the sender's name
    [OPENMEETINGS-215] - Created date is duplicated where restoring base from backup
    [OPENMEETINGS-216] - UI problem
    [OPENMEETINGS-219] - �Delete� button is not visible
    [OPENMEETINGS-225] - If object on whiteboard of type "freedraw" ("paint") is dragged/moved, the object is gone when you re-enter the room
    [OPENMEETINGS-229] - "Exit"button is not shown for inviting users from room
    [OPENMEETINGS-230] - Error in the field name on the form "Add external"
    [OPENMEETINGS-232] - Rooms are imported with invalid room types
    [OPENMEETINGS-233] - Font styles in propertyPanel are getting disabled.
    [OPENMEETINGS-234] - Video and Screen sharing not working with HTTPS and RTMPS - Java Application starts but doesnt connect - java trace logs shows "[WARN] [NioProcessor-2] org.red5.server.net.rtmps.RTMPSMinaIoHandler - Exception caught Keystore or password are null"
    [OPENMEETINGS-237] - Calender reminder email invitation link fails due to link missing "&language=x" in URL
    [OPENMEETINGS-238] - Calendar shows incorrect day of week for the actual date when timezone is GMT+10
    [OPENMEETINGS-239] - Calendar Event details Comment/Description field text can overflow the boundary of the Description field of the Meeting Room's Event details dialog box
    [OPENMEETINGS-241] - Cannot send emailed Invitations from a Meeting room
    [OPENMEETINGS-242] - Moodle Plugin
    [OPENMEETINGS-244] - Calendar doesn't show Day / Week / Month
    [OPENMEETINGS-246] - Remote Cursor is no more visible
    [OPENMEETINGS-249] - Using LDAP with latest build fails to login, - after login screen im prompted with "You account is assigned to multiple usergroups... " The drop down list is empty - I have checked the MYSQL DB table "oraganisations" and there are two entries there
    [OPENMEETINGS-250] - Moderator loses Moderation
    [OPENMEETINGS-252] - Fix ImportInitValues.java default.timezone not taken from install config and add (optional) mapping "ldap_user_attr_timezone" in the ldap config
    [OPENMEETINGS-257] - Exception in CLI Installer when installing in a new database
    [OPENMEETINGS-263] - Missing invitation from calendar
    [OPENMEETINGS-264] - Spinners in ScreenSharing applet works improperly
    [OPENMEETINGS-269] - Image Download Issue from the Whiteboard - Naming problem and Deletion.jpg file - Reported by George Kirkham
    [OPENMEETINGS-270] - MemoryLeak / Dead-Lock in FlvRecorderConverter
    [OPENMEETINGS-271] - Whiteboad Undo tool does not remove all objects from the Whiteboard
    [OPENMEETINGS-272] - When entering a room, the "Choose devices" window is behind any attendee video windows.
    [OPENMEETINGS-275] - "User Speaks" icon in Users list does not indicate when the person is speaking
    [OPENMEETINGS-277] - Latest build fails to start using RTMPS
    [OPENMEETINGS-278] - When I enter a room and choose a lower resolution the "Choose Devices" window shrinks but the text at the top doesn't wrap to re-size
    [OPENMEETINGS-279] - Minimize Video button works improperly
    [OPENMEETINGS-281] - Enhance Language Editor with search fields
    [OPENMEETINGS-282] - Video window "Exclusive Audio" causes tool tips message boxes to be left on the screen
    [OPENMEETINGS-283] - Choose devices - Start test recording - no longer plays back the recorded clip
    [OPENMEETINGS-284] - Audio is not working
    [OPENMEETINGS-286] - video/audio broadcast problem with language of japanese
    [OPENMEETINGS-287] - Unable to connect from moodle. Builde 2.0.0.r1341675-22-05-2012_2319
    [OPENMEETINGS-288] - Unable to connect from moodle. Builde 2.0.0.r1341675-22-05-2012_2319
    [OPENMEETINGS-289] - Unable to connect from moodle. Builde 2.0.0.r1341675-22-05-2012_2319
    [OPENMEETINGS-294] - Cannot install Openmeetings with mysql
    [OPENMEETINGS-295] - OpenMeetings with rtmp over HTTP Tunneling does not work anymore with Red5 r4374
    [OPENMEETINGS-296] - Language export works only in english
    [OPENMEETINGS-297] - Users are imported with invalid country
    [OPENMEETINGS-298] - Problems with shortcut-key 'Ctrl + Shift + m', Camera/Mic settings-screen pops-up when typing 'M' (Shift+m)
    [OPENMEETINGS-300] - $APP_NAME placeholder is not correctly handled in some email templates
    [OPENMEETINGS-302] - Delete massges in Trash
    [OPENMEETINGS-304] - Can not delete mail in Trash
    [OPENMEETINGS-307] - Language does not load at login
    [OPENMEETINGS-312] - File was null or did not exist: TEST_SETUP_1338945244240.flv
    [OPENMEETINGS-314] - Webcam Title of user is username of default OM user
    [OPENMEETINGS-316] - ICS attachments for emails not working with Exchange 2003/2007 and Outlook 2003/2007
    [OPENMEETINGS-317] - Multiple appointments generated when clicking save more than once
    [OPENMEETINGS-319] - Recordings at demo.openmeetings.com are not downloadble
    [OPENMEETINGS-320] - Exception and layout for screensharing/recording client
    [OPENMEETINGS-323] - Update Red5 to latest version (r4380) in both server and client library to test RTMPT and file not found exceptions
    [OPENMEETINGS-324] - Limit login

Improvement

    [OPENMEETINGS-2] - Modify ANT Build script to create correct Build Artefacts / Integrate into https://builds.apache.org/
    [OPENMEETINGS-4] - Microphone rooms
    [OPENMEETINGS-10] - openmeetings_1_9_1_r4707 Default Language Error
    [OPENMEETINGS-45] - New Audio/Video Components
    [OPENMEETINGS-46] - Updated German lang file
    [OPENMEETINGS-59] - Japanese translation update
    [OPENMEETINGS-63] - Update Sharing RTMPClient with latest Red5 version and test if it works now
    [OPENMEETINGS-66] - Whiteboard Player should aspect ratio when importing a video to the whiteboard
    [OPENMEETINGS-83] - multipart.jar should be replaced with implementation compatible with ASF licence
    [OPENMEETINGS-86] - SVN directory structure need to be optimized
    [OPENMEETINGS-101] - Linking OpenMeetings tutorials and manuals
    [OPENMEETINGS-113] - Define a default Login-Domain (ie an Ldap domain) to be automatically selected in the frontend login window
    [OPENMEETINGS-125] - Text does not fit in the button.
    [OPENMEETINGS-146] - Add mechanism to debug LocalConnection better
    [OPENMEETINGS-184] - When we make a mistake or we use the same ID in users add administration menu => all fields become empty !
    [OPENMEETINGS-185] - There is no sense to have two users / moderator / administrator with the same email
    [OPENMEETINGS-194] - Command line admin: added parameter "--drop", to drop database before install
    [OPENMEETINGS-202] - Calendar event
    [OPENMEETINGS-226] - It should be possible to configure OpenOffice location via OM config
    [OPENMEETINGS-245] - configuration table is not backup/restored
    [OPENMEETINGS-247] - Make document conversion quality an administrator changeable option
    [OPENMEETINGS-253] - Made some changes to the german language deutsch.xml
    [OPENMEETINGS-259] - English Language Text improvements
    [OPENMEETINGS-268] - Improvements for english text for 506, "registering_mail_text_head", 507, "registering_mail_text_head2", 512, "register_mail_subject"
    [OPENMEETINGS-276] - Need a way to select "Exclusive Audio" for attenees who have selected "Audo Only"
    [OPENMEETINGS-285] - Update for Chinese Language text
    [OPENMEETINGS-309] - Complete French translation
    [OPENMEETINGS-313] - Errors with it's types and descriptions should be listed on the site

New Feature

    [OPENMEETINGS-129] - Load Icons dynamically at runtime and replace LGPL licensed icons
    [OPENMEETINGS-130] - Add mechanism for advanced runtime theming
    [OPENMEETINGS-134] - Themes: Add Color definitions to default-theme.xml file and enhance with more color definitions
    [OPENMEETINGS-186] - ReplyTo email address should be set to user email address.
    [OPENMEETINGS-266] - ScreenSharing need to be enhanced to enable screen publishing

Task

    [OPENMEETINGS-7] - Replace lzCalendar with non CPL implementation
    [OPENMEETINGS-32] - Replace JOD Library with own implementation
    [OPENMEETINGS-60] - OpenMeetings Plugin for Atlassian JIRA
    [OPENMEETINGS-70] - There should be a scheduler the does a check for test-recordings older then 1 hour and delete them.
    [OPENMEETINGS-74] - Integrate Apache Ivy for dependency management of Libraries
    [OPENMEETINGS-75] - Remove roomtype audience
    [OPENMEETINGS-76] - Remove Event Recording
    [OPENMEETINGS-82] - Atlassian Confluence Integration Plugin
    [OPENMEETINGS-85] - Fix and improve Chat Layout
    [OPENMEETINGS-88] - Fix client side modules structure (delete "Plugins" directory)
    [OPENMEETINGS-99] - Project restructuring (sources, beans, eclipse)
    [OPENMEETINGS-100] - JabberService should be added to Axis2 services
    [OPENMEETINGS-106] - JabberService is missing in the API Doclet task that generates the SOAP/REST API Documentation
    [OPENMEETINGS-109] - Show Number of Unread private messages in the dashboard and upgrade layout
    [OPENMEETINGS-110] - Refactor menubar layout and tabbuttons in dashboard/rooms/settings section + remove "navisub" table + Fix to use "NamedQuery" for main navigation to enable/disable entries in the mainnavi
    [OPENMEETINGS-117] - Refactor Conference Coloring and Layout
    [OPENMEETINGS-124] - Clean Up Splash Screen and unused resources in init
    [OPENMEETINGS-128] - Remove "doc" folder with partly documentated japanese documention and fix icon resources that are not needed
    [OPENMEETINGS-147] - The green dot that indicates somebody else is speaking produces too many events and is badly performing
    [OPENMEETINGS-160] - Enable sending messages to external users from the private messages including invitations to conference rooms and events
    [OPENMEETINGS-169] - Clean up WhiteBoardService to use proper sync methods
    [OPENMEETINGS-173] - CLI needs a check on those params that are "must haves" for installation
    [OPENMEETINGS-222] - Enable Keyboard actions to whiteboard (Arrow Down|Left|Right|Up [+Shift] and Delete) when object is selected
    [OPENMEETINGS-223] - Hardly anybody knows that you can double click to re-edit the text
    [OPENMEETINGS-231] - Update website with new screenshots
    [OPENMEETINGS-236] - Where to put portuguese Brasil.xml.

Test

    [OPENMEETINGS-104] - Error in cyrillic filenames
    [OPENMEETINGS-115] - Installation error
    [OPENMEETINGS-120] - Blank screen on Backup
    [OPENMEETINGS-121] - Share/record screen doesn't work
    [OPENMEETINGS-136] - Duplicate message in Activity section
    [OPENMEETINGS-148] - when I click to button of page, that haven't anything content
    [OPENMEETINGS-155] - record not playing
    [OPENMEETINGS-220] - main.lzx changes (background)
    [OPENMEETINGS-221] - problem: recordings with 1 frame/sec
    [OPENMEETINGS-240] - jod converter error
    [OPENMEETINGS-303] - Can not Export new language

Wish

    [OPENMEETINGS-11] - Openmeeting use LDAP as default domain
    [OPENMEETINGS-20] - Add hideWhiteboard attributes in Room Object and make it possible to configure / editable via Administration > Rooms
    [OPENMEETINGS-21] - Add hideChat attributes in Room Object and make it possible to configure / editable via Administration > Rooms
    [OPENMEETINGS-22] - Add hideActivitiesAndActions attributes in Room Object and make it possible to configure / editable via Administration > Rooms
    [OPENMEETINGS-23] - Add hideFilesExplorer attributes in Room Object and make it possible to configure / editable via Administration > Rooms
    [OPENMEETINGS-24] - Add hideScreenSharing attributes in Room Object and make it possible to configure / editable via Administration > Rooms
    [OPENMEETINGS-25] - Add SOAP/REST Call
    [OPENMEETINGS-78] - datatype of externalUserId
    [OPENMEETINGS-254] - German System Backup garbled text
    [OPENMEETINGS-255] - Possibility to disable Show Sip Dialer in Meeting Room
    [OPENMEETINGS-258] - Combine device settings and audio/video test in single UI
    [OPENMEETINGS-262] - Document conversion Windows / Linux different

