Apache OpenMeetings Change Log

See http://issues.apache.org/jira/browse/OPENMEETINGS-* (where * is the number of the issue below)
See https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-* (where * is the number of CVE below)

Release Notes - Openmeetings - Version 3.1.1
================================================================================================================
** Vulnerability
    * CVE-2016-0783 - Predictable password reset token
    * CVE-2016-0784 - ZIP file path traversal
    * CVE-2016-2164 - Arbitrary file read via SOAP API
    * CVE-2016-2163 - Stored Cross Site Scripting in Event description
    
** Bug
    * [OPENMEETINGS-1328] - ConfirmAjaxCallListener should be changed on standard wicket dialog in the MessagesContactsPanel
    * [OPENMEETINGS-1339] - Poll results shows uncorrectly
    * [OPENMEETINGS-1341] - White page is shown when user try to reset password
    * [OPENMEETINGS-1343] - Release signatures should be created automatically
    * [OPENMEETINGS-1346] - Error while import a backup from OM version 3.0.2
    * [OPENMEETINGS-1347] - missing sort functionality in administration view
    * [OPENMEETINGS-1348] - Backup import with LDAP users from 2.1.0 fails
    * [OPENMEETINGS-1351] - Call for Logo page does not say where to send contributions
    * [OPENMEETINGS-1354] - Backup zip is being extracted without necessary checks
    * [OPENMEETINGS-1355] - random UUID should be user to generate password reset hash

** Improvement
    * [OPENMEETINGS-1337] - Library versions should be updated (3.1.1)


Release Notes - Openmeetings - Version 3.1.0
================================================================================================================

** Sub-task
    * [OPENMEETINGS-1118] - SOAP/REST methods need to be implemented using CXF
    * [OPENMEETINGS-1277] - roomtype in laszlo code need to be changed
    * [OPENMEETINGS-1278] - newmessage and some other dialogs need to be replaced with HTML5 dialogs
    * [OPENMEETINGS-1285] - Number of servlets need to be reduced
    * [OPENMEETINGS-1286] - Srceensharing is not started

** Bug
    * [OPENMEETINGS-570] - Some issues with device settings and attach Camera
    * [OPENMEETINGS-823] - Images are not dragged on whiteboard correctly if user re-enter to the room
    * [OPENMEETINGS-887] - Global chat is not implemented completly for OM 3.0
    * [OPENMEETINGS-992] - upload image in profile
    * [OPENMEETINGS-1237] - Desktop-sharing: keyboard input gets duplicated or triplicated.
    * [OPENMEETINGS-1252] - Allow/deny screen sharing and remote control does not work as expected
    * [OPENMEETINGS-1255] - Incorrect work of "Show contact data to contacts only"
    * [OPENMEETINGS-1258] - The latest chat messeages are not shown in the global chat
    * [OPENMEETINGS-1260] - Period invitation created from room is shifted one month
    * [OPENMEETINGS-1261] - docs folder should removed from 3.0.x sources
    * [OPENMEETINGS-1263] - component.getString() should not be called from constructor
    * [OPENMEETINGS-1264] - "Old style" confirm dialogs should be replaced with jquery-ui confirmations
    * [OPENMEETINGS-1266] - Width/height parameters are missing in RecordingDTO
    * [OPENMEETINGS-1268] - Error while use wsdl service
    * [OPENMEETINGS-1269] - 'Internal Error' Message on Deleting / Selecting a User in Admin/User Panel
    * [OPENMEETINGS-1271] - Maximum number of users in restricted room need to be enlarged
    * [OPENMEETINGS-1272] - Exception and Internal Errror When "To complete your registration please click on the following link"
    * [OPENMEETINGS-1273] - Poll error
    * [OPENMEETINGS-1274] - After registration I don't see confirmation
    * [OPENMEETINGS-1275] - Invalid invitation generates for contact if creat few invitations
    * [OPENMEETINGS-1276] - Trunk should be merged with 3.1.x
    * [OPENMEETINGS-1281] - Bad URL to download language files to translate in OpenMeetings website
    * [OPENMEETINGS-1283] - It is impossible to remove moderator permissions given to a user
    * [OPENMEETINGS-1284] - Incorrect display of a video player
    * [OPENMEETINGS-1287] - Mail templates are excluded from the build artefact
    * [OPENMEETINGS-1288] - Search User page is broken
    * [OPENMEETINGS-1292] - OM 3.1 When clic on Upload file picture button profile, nothings happens
    * [OPENMEETINGS-1293] - OM 3.1 When clic on Conference Room button, show turning circle and nothing happens
    * [OPENMEETINGS-1295] - OM 3.0.7 - No upload image for widget user 
    * [OPENMEETINGS-1296] - Unable to upload image to profile
    * [OPENMEETINGS-1297] - svn tree need to be restructured
    * [OPENMEETINGS-1299] - In Application_zh_CN.properties file, from entry 1465 to entry 1600, we should have Chinese entries, but there are still English entries.
    * [OPENMEETINGS-1303] - Report a bug URL
    * [OPENMEETINGS-1308] - "File tree" is broken in room after installation
    * [OPENMEETINGS-1309] -  Issue with playing the recordings in OM 3.1.0
    * [OPENMEETINGS-1310] - Flash permission dialog is not displayed
    * [OPENMEETINGS-1312] - "User recording" message is not removed on recording stop
    * [OPENMEETINGS-1314] - A no user receive an invitation  and he tries to send an invitation 
    * [OPENMEETINGS-1316] - Older timezone's in OM
    * [OPENMEETINGS-1317] - Whiteboard is not displayed for guests in the restricted moderated rooms
    * [OPENMEETINGS-1318] - Firstname and lastname are shown in the userlist when last user exit from the restricted room
    * [OPENMEETINGS-1320] - Whiteboard is not saved
    * [OPENMEETINGS-1321] - Files are not shown correctly when contact enter to the restricted room as moderator
    * [OPENMEETINGS-1322] - Chat is not shown in the room when document loads on whiteborad
    * [OPENMEETINGS-1323] - Error is thrown to the log file during conversion recording
    * [OPENMEETINGS-1326] - Password is not verified when owner send invitation with password
    * [OPENMEETINGS-1329] - "null" adds to the Subject when user send private masage to contact
    * [OPENMEETINGS-1331] - Openmeeting is not responsed when moderator kick user from the room
    * [OPENMEETINGS-1332] - Vote is not work correctly
    * [OPENMEETINGS-1333] - Recording and sharing is not started when contact try to start recording or sharing 
    * [OPENMEETINGS-1334] - It's impossible to invite om user to the my rooms
    * [OPENMEETINGS-1335] - Screen sharing icons and favicon need to be updated
    * [OPENMEETINGS-1336] - User can not enter to group room
    * [OPENMEETINGS-1338] - Screen sharing application failed to connect to the server
    * [OPENMEETINGS-1340] - Moderator can't kick user from the conference room

** Improvement
    * [OPENMEETINGS-794] - Add a possibility to enter brief name for users with same invitation url (grouped mail)
    * [OPENMEETINGS-846] - Invitation of a complete usergroup as a one-click operation
    * [OPENMEETINGS-1245] - Offer drop-down list for inviting users when in conference room
    * [OPENMEETINGS-1256] - Fetch users from AD into contacts
    * [OPENMEETINGS-1259] - Library versions should be updated (3.1.0)
    * [OPENMEETINGS-1262] - Install wizard need to be updated to use wicket-jquery-ui
    * [OPENMEETINGS-1270] - Outdated documentation
    * [OPENMEETINGS-1279] - swf8 code need to be converted to swf11
    * [OPENMEETINGS-1290] - Room SIP# should be displayed as a hint
    * [OPENMEETINGS-1294] - OM 3.1.0 spanish translation attached
    * [OPENMEETINGS-1304] - CLONE - In the general interface, provide a way to access links to recordings, which can be shared with others (both registered users and external people).
    * [OPENMEETINGS-1306] - modifica dei campi e grafica
    * [OPENMEETINGS-1313] - Support for Google Analytics scripts should be added

** Task
    * [OPENMEETINGS-1302] - Current maven build doesn't create source artifact
    * [OPENMEETINGS-1305] - REST/SOAP should be tested
    * [OPENMEETINGS-1311] - Outdated jquery.ui.menubar should be replaced with jqueryui menu component

** Test
    * [OPENMEETINGS-1315] - build code sucess, but run red5.bat happen error


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

