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.2.1
================================================================================================================
** Bug
    * [OPENMEETINGS-571] - Chat area does not resize when resizing browser window
    * [OPENMEETINGS-1437] - behavior os share audio and share audio/video button ist different
    * [OPENMEETINGS-1547] - 'You have to wait until a moderator enters the room' dialog need to be added to the room
    * [OPENMEETINGS-1550] - Admin functions widget should be inaccessible for non-admin users
    * [OPENMEETINGS-1553] - Chat messages in mobile client are broken
    * [OPENMEETINGS-1555] - Text does not fit room tabs
    * [OPENMEETINGS-1556] - When entered the room sometimes is not the right size whiteboard
    * [OPENMEETINGS-1557] - Camera resolution does not change more than 120 * 90 pixels.
    * [OPENMEETINGS-1560] - Error when a user is removed from the group in the tab group management
    * [OPENMEETINGS-1561] - It does not work the new user registration by using verification code via email
    * [OPENMEETINGS-1562] - DashBoard Chat is not working properly
    * [OPENMEETINGS-1563] - It does not work download PowerPoint presentations
    * [OPENMEETINGS-1564] - Do not fit the text in the notification window
    * [OPENMEETINGS-1565] - when moving or scaling the element and is seen, but the copy of the initial element visible remains.
    * [OPENMEETINGS-1566] - I draw on the whiteboard, switch the slides, It is painted on all slides
    * [OPENMEETINGS-1568] - Not running a test video record button
    * [OPENMEETINGS-1569] - .../streams/hibernate folder is not cleaned
    * [OPENMEETINGS-1570] - Room video file conversion not always successful
    * [OPENMEETINGS-1572] - Chat should be made resizable
    * [OPENMEETINGS-1574] - External video support is broken
    * [OPENMEETINGS-1577] - Rooms  does not work when using French Language
    * [OPENMEETINGS-1578] - Invitation URL is incorerct
    * [OPENMEETINGS-1579] - Room polls are not work as expected
    * [OPENMEETINGS-1581] - Permission on video & audio on public rooms
    * [OPENMEETINGS-1585] - Camera resolution is not saved when you click Save.
    * [OPENMEETINGS-1586] - Administrator no access to the room 
    * [OPENMEETINGS-1590] - Video frame of mobile user are resized when mobile user switch off video
    * [OPENMEETINGS-1591] - Chat messages are not sorted correctly when user send message in the room
    * [OPENMEETINGS-1592] - Avatar is not shown when mobile client sends chat message in the room
    * [OPENMEETINGS-1594] - Screen-sharing base URL is broken
    * [OPENMEETINGS-1595] - Video is not displayed when user try allow to share your video again
    * [OPENMEETINGS-1597] - Message are not shown properly in the activities and actions window for user without moderator rights
    * [OPENMEETINGS-1598] - The "Disabled" select item does not work properly on the  "Choose device" dialog
    * [OPENMEETINGS-1599] - Connection panel is not scrolled
    * [OPENMEETINGS-1600] - The "Clear whiteboard" flag does not work when user upload file directly to whiteboard
    * [OPENMEETINGS-1601] - Drop recording to WB doesn't work as expected
    * [OPENMEETINGS-1603] - The "Internal error" is thrown when user select custom folder in the room

** Improvement
    * [OPENMEETINGS-372] - Please make the ability to “clear the Chat window” only available to Moderators, and not to participants who have “Draw on the Whiteboard” rights
    * [OPENMEETINGS-690] - possibility for user to signal a question 
    * [OPENMEETINGS-1209] - typing indicator
    * [OPENMEETINGS-1210] - chat jumps down, if it was scrolled up before
    * [OPENMEETINGS-1301] - No Accessability for Conference Room
    * [OPENMEETINGS-1420] - Select a whole group of users as attendees in event
    * [OPENMEETINGS-1424] - Add a "recent rooms" functionality
    * [OPENMEETINGS-1551] - Add prohibition of  time format  сombination as 15:00 PM when creating event 
    * [OPENMEETINGS-1558] - Room public drive should be accessible to all users in read-only mode
    * [OPENMEETINGS-1571] - 3.2.1 - Library versions should be updated
    * [OPENMEETINGS-1580] - Enable multiple uploads  at once to file tree and whiteboard.

** New Feature
    * [OPENMEETINGS-573] - Audio notification for new chat message


Release Notes - Openmeetings - Version 3.2.0
================================================================================================================
** Sub-task
    * [OPENMEETINGS-896] - Basic room layout should be created
    * [OPENMEETINGS-1030] - Add Files section
    * [OPENMEETINGS-1045] - Screen-sharing button/action should be added
    * [OPENMEETINGS-1085] - Room Rights should be implemented
    * [OPENMEETINGS-1120] - Activities section should be added
    * [OPENMEETINGS-1376] - User list should be fully implemented
    * [OPENMEETINGS-1386] - CalDAV client prerequisites
    * [OPENMEETINGS-1391] - Fix CalDAV4j issues
    * [OPENMEETINGS-1392] - Implement OM CalDAV client
    * [OPENMEETINGS-1454] - Interview room should work as expected
    * [OPENMEETINGS-1455] - invitationHash/securityHash should work
    * [OPENMEETINGS-1458] - Show nickname dialog should be added
    * [OPENMEETINGS-1459] - External users need to be redirected on connection error
    * [OPENMEETINGS-1469] - Download functionality is missing in file tree

** Bug
    * [OPENMEETINGS-508] - Network testing page is not localized
    * [OPENMEETINGS-653] - playing video follow the scrolling of the screen and leave its player.
    * [OPENMEETINGS-827] - Video play/stop event acceptable one time in all tab
    * [OPENMEETINGS-840] - Strange uploaded video behaviour 
    * [OPENMEETINGS-863] - Video Problem
    * [OPENMEETINGS-1327] - Messages are being displayed in the folder right after creation
    * [OPENMEETINGS-1358] - RTMPS SSHHandshakeFailed error  in 3.0.7 and working fine with 3.0.4
    * [OPENMEETINGS-1377] - Backup fails when appointment has deleted room
    * [OPENMEETINGS-1379] - XSS in Chat window leading to DOS
    * [OPENMEETINGS-1380] - Chat messages are not being imported
    * [OPENMEETINGS-1384] - SIP dial to room need to be fixed
    * [OPENMEETINGS-1385] - Moving Uploaded Images
    * [OPENMEETINGS-1396] - Swf selection should be improved
    * [OPENMEETINGS-1399] - OpenMeetings is vulnerable to session fixation
    * [OPENMEETINGS-1400] - Admin>Conference Rooms>Appointment Room Checkbox
    * [OPENMEETINGS-1401] - Email Reminders for Calendared Events Not Issued
    * [OPENMEETINGS-1402] - Screen Sharing issue with Greek language
    * [OPENMEETINGS-1406] - View profile form is broken
    * [OPENMEETINGS-1410] - Om failed to install using Oracle
    * [OPENMEETINGS-1411] - allowSameURLMultipleTimes parameter for secure hash is broken
    * [OPENMEETINGS-1412] - Window too big when changing resolution in Audio-Video Recording Test Application
    * [OPENMEETINGS-1414] - spring-mvc and batik need to be removed
    * [OPENMEETINGS-1416] - Users with moderator's flag in usergroup do not become moderators in rooms.
    * [OPENMEETINGS-1417] - Check/uncheck of moderator flag in usergroups doesn't work.
    * [OPENMEETINGS-1422] - WB is not usable for the appointment room
    * [OPENMEETINGS-1423] - Aspect ration is being changed for WB video
    * [OPENMEETINGS-1432] - Recording download from Moodle is broken
    * [OPENMEETINGS-1433] - WB vertical tools panel is broken
    * [OPENMEETINGS-1434] - Only the first group is added in ATTRIBUTE mode
    * [OPENMEETINGS-1435] - Whiteboard Pointer in OM-3.1.2 gives wrong user name
    * [OPENMEETINGS-1438] - Recordings permission check is broken
    * [OPENMEETINGS-1442] - Remote keyboard is not working in screen-sharing app
    * [OPENMEETINGS-1443] - Invitations are broken
    * [OPENMEETINGS-1444] - Language editor is broken
    * [OPENMEETINGS-1448] - Recordings backup fails "Enum missing"
    * [OPENMEETINGS-1449] - Check box "Do not ask again" in "Choose device" dialog doesn't work
    * [OPENMEETINGS-1451] - SOAP/REST API documentation need to be improved
    * [OPENMEETINGS-1457] - flvRecordings and fileExplorerItem::Video file name depends on id
    * [OPENMEETINGS-1460] - Application.ONLINE_USERS does not reflect changes to Client instances
    * [OPENMEETINGS-1461] - We need to switch to java8
    * [OPENMEETINGS-1464] - Clear objects on current slide only is not working
    * [OPENMEETINGS-1465] - Password field is enabled when Password protected is not checked
    * [OPENMEETINGS-1466] - REST/SOAP methods are incomplete
    * [OPENMEETINGS-1468] - problems with keyborad usage while screensharing with remote desktop 
    * [OPENMEETINGS-1470] - WB video is not displayed
    * [OPENMEETINGS-1472] - User cannot be deleted
    * [OPENMEETINGS-1476] - Deleted records are shown under trash
    * [OPENMEETINGS-1478] - Admin->Connections displays outdated connections
    * [OPENMEETINGS-1479] - Dashboard Chat not disabled when dashboard.show.chat value is 0
    * [OPENMEETINGS-1482] - Om performance issues
    * [OPENMEETINGS-1483] - Error while installing OM on MSSQL
    * [OPENMEETINGS-1486] - Registration dialog is broken
    * [OPENMEETINGS-1487] - Clear text passwords shouldn't be sent via email
    * [OPENMEETINGS-1489] - Calendar in broken in French
    * [OPENMEETINGS-1492] - OM 3.1.3 duplication records in database
    * [OPENMEETINGS-1494] - Calendar & Events
    * [OPENMEETINGS-1495] - Labels in admin forms are overlapping with inputs
    * [OPENMEETINGS-1496] - Dates from backup files are being parsed with errors
    * [OPENMEETINGS-1498] - Exception is thown when user exit from the room
    * [OPENMEETINGS-1499] - Backup import is crached under OS Windows
    * [OPENMEETINGS-1500] - Image drop is broken, in case "don't ask" is selected
    * [OPENMEETINGS-1502] - NullPointerException while checking existing LDAP user
    * [OPENMEETINGS-1504] - User with no password is being created in Web installer
    * [OPENMEETINGS-1505] - Password is not checked when owner invite guest to the room with password protected invitation
    * [OPENMEETINGS-1508] - Italian translation
    * [OPENMEETINGS-1509] - Count of users in the room on the rooms page is not updated when any user exit from room
    * [OPENMEETINGS-1510] - WB drawing should be more smooth
    * [OPENMEETINGS-1511] - LDAP user profile picture
    * [OPENMEETINGS-1513] - The Installer Converters page should be improved
    * [OPENMEETINGS-1518] - Recorgings should not be converted to ogg/avi format
    * [OPENMEETINGS-1521] - 'null' is shown instead of usergroup when user update and save User details
    * [OPENMEETINGS-1524] - Poll description is missed in the Poll results
    * [OPENMEETINGS-1525] - Openmeetings 3.1.3 - Problem with script red5-highperf.sh 
    * [OPENMEETINGS-1532] - Recording folders not always imported as expected
    * [OPENMEETINGS-1533] - Impossible to create Appointment using calendar WebService
    * [OPENMEETINGS-1534] - Video upload to room is broken
    * [OPENMEETINGS-1535] - Calendar web service range method is broken
    * [OPENMEETINGS-1537] - external soap users unable to login to the conference room created
    * [OPENMEETINGS-1539] - Calendar web service: delete method returns nothing on success
    * [OPENMEETINGS-1540] - Placeholder in reset template email is not being replaced
    * [OPENMEETINGS-1541] - Appointment invitations are not always accessible
    * [OPENMEETINGS-1542] - Ajax busy status is not displayed in the room
    * [OPENMEETINGS-1543] - Webservice Calendar/range
    * [OPENMEETINGS-1545] - Screen-sharing is broken
    * [OPENMEETINGS-1546] - Secure hash is not working every other time
    * [OPENMEETINGS-1548] - EmoticonsBehavior should be removed to speed up OM in FF
    * [OPENMEETINGS-1549] - Command line admin fails to install

** Improvement
    * [OPENMEETINGS-652] - video playback is not very clear and there isn't a pause button.
    * [OPENMEETINGS-1138] - 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-1366] - Recommendations
    * [OPENMEETINGS-1373] - 3.2.0 Library versions should be updated
    * [OPENMEETINGS-1382] - Update default avatar of user 
    * [OPENMEETINGS-1383] - Updated French translation for OpenMeetings 3.1.1/3.1.1+
    * [OPENMEETINGS-1393] - Missing text strings are not internationalized for translation
    * [OPENMEETINGS-1403] - External cameras should be supported
    * [OPENMEETINGS-1405] - Appointment dialog should be simplified
    * [OPENMEETINGS-1419] - Connect to Oracle DB with Service Name through Web Installer
    * [OPENMEETINGS-1445] - 3.1.2 Build Compilation Warnings
    * [OPENMEETINGS-1446] - SSL installation not fully working
    * [OPENMEETINGS-1462] - Implementation for a delete button for the chat content on the principal chat window 
    * [OPENMEETINGS-1480] - Ukrainian translation need to be improved
    * [OPENMEETINGS-1488] - Additional functionality for groups
    * [OPENMEETINGS-1490] - Jodconverter should be added to openmeetings project
    * [OPENMEETINGS-1507] - Remove "application.base.url" configuration key
    * [OPENMEETINGS-1512] - Wrong LDAP value can cause error on My Profile Page
    * [OPENMEETINGS-1527] - Multiselect using Shift/Ctrl need to be added to file tree

** New Feature
    * [OPENMEETINGS-895] - HTML5 room should be implemented
    * [OPENMEETINGS-1408] - provide device-settings dialog via link
    * [OPENMEETINGS-1427] - Re-name Witheboards tabs
    * [OPENMEETINGS-1453] - Provision for getting OpenMeetings version from SOAP/REST api
    * [OPENMEETINGS-1501] - Openmeetings - deleting emails

** Task
    * [OPENMEETINGS-1515] - Fluido skin for the site should be replaced with reflow

** Test
    * [OPENMEETINGS-1516] - Users are kicked off the rooms and participant list is incomplete

** Wish
    * [OPENMEETINGS-853] - temporary uploaded files


Release Notes - Openmeetings - Version 3.1.5
================================================================================================================
** Bug
    * [OPENMEETINGS-863] - Video Problem
    * [OPENMEETINGS-1401] - Email Reminders for Calendared Events Not Issued
    * [OPENMEETINGS-1530] - Secure Hash is broken
    * [OPENMEETINGS-1532] - Recording folders not always imported as expected
    * [OPENMEETINGS-1533] - Impossible to create Appointment using calendar WebService
    * [OPENMEETINGS-1535] - Calendar web service range method is broken
    * [OPENMEETINGS-1537] - external soap users unable to login to the conference room created
    * [OPENMEETINGS-1539] - Calendar web service: delete method returns nothing on success
    * [OPENMEETINGS-1540] - Placeholder in reset template email is not being replaced
    * [OPENMEETINGS-1541] - Appointment invitations are not always accessible

** Improvement
    * [OPENMEETINGS-1531] - 3.1.5 - Library versions should be updated


Release Notes - Openmeetings - Version 3.1.4
================================================================================================================
** Bug
    * [OPENMEETINGS-827] - Video play/stop event acceptable one time in all tab
    * [OPENMEETINGS-1451] - SOAP/REST API documentation need to be improved
    * [OPENMEETINGS-1475] - Select area is not unattached from cursor
    * [OPENMEETINGS-1476] - Deleted records are shown under trash
    * [OPENMEETINGS-1478] - Admin->Connections displays outdated connections
    * [OPENMEETINGS-1479] - Dashboard Chat not disabled when dashboard.show.chat value is 0
    * [OPENMEETINGS-1482] - Om performance issues
    * [OPENMEETINGS-1483] - Error while installing OM on MSSQL
    * [OPENMEETINGS-1484] - Super moderator is not moderator
    * [OPENMEETINGS-1485] - Scroll is broken in restricted room
    * [OPENMEETINGS-1486] - Registration dialog is broken
    * [OPENMEETINGS-1487] - Clear text passwords shouldn't be sent via email
    * [OPENMEETINGS-1489] - Calendar in broken in French
    * [OPENMEETINGS-1492] - OM 3.1.3 duplication records in database
    * [OPENMEETINGS-1494] - Calendar & Events
    * [OPENMEETINGS-1495] - Labels in admin forms are overlapping with inputs
    * [OPENMEETINGS-1496] - Dates from backup files are being parsed with errors
    * [OPENMEETINGS-1499] - Backup import is crached under OS Windows
    * [OPENMEETINGS-1500] - Image drop is broken, in case "don't ask" is selected
    * [OPENMEETINGS-1502] - NullPointerException while checking existing LDAP user
    * [OPENMEETINGS-1503] - WML file (saved WB) cannot be loaded - file not found
    * [OPENMEETINGS-1504] - User with no password is being created in Web installer
    * [OPENMEETINGS-1508] - Italian translation
    * [OPENMEETINGS-1510] - WB drawing should be more smooth
    * [OPENMEETINGS-1511] - LDAP user profile picture
    * [OPENMEETINGS-1513] - The Installer Converters page should be improved
    * [OPENMEETINGS-1514] - No show whiteboard after send invitation-meeting from Calendar
    * [OPENMEETINGS-1517] - Close private chat is broken
    * [OPENMEETINGS-1518] - Recorgings should not be converted to ogg/avi format
    * [OPENMEETINGS-1521] - 'null' is shown instead of usergroup when user update and save User details
    * [OPENMEETINGS-1523] - Inplace folder rename is not working
    * [OPENMEETINGS-1524] - Poll description is missed in the Poll results
    * [OPENMEETINGS-1525] - Openmeetings 3.1.3 - Problem with script red5-highperf.sh 

** Improvement
    * [OPENMEETINGS-1366] - Recommendations
    * [OPENMEETINGS-1462] - Implementation for a delete button for the chat content on the principal chat window 
    * [OPENMEETINGS-1467] - 3.1.4 Library versions should be updated
    * [OPENMEETINGS-1480] - Ukrainian translation need to be improved
    * [OPENMEETINGS-1488] - Additional functionality for groups
    * [OPENMEETINGS-1490] - Jodconverter should be added to openmeetings project
    * [OPENMEETINGS-1507] - Remove "application.base.url" configuration key
    * [OPENMEETINGS-1512] - Wrong LDAP value can cause error on My Profile Page
    * [OPENMEETINGS-1526] - Multiselect using Shift/Ctrl need to be added to file tree

** New Feature
    * [OPENMEETINGS-1427] - Re-name Witheboards tabs
    * [OPENMEETINGS-1477] - Default chat font is too small
    * [OPENMEETINGS-1501] - Openmeetings - deleting emails

** Task
    * [OPENMEETINGS-1515] - Fluido skin for the site should be replaced with reflow

** Test
    * [OPENMEETINGS-1516] - Users are kicked off the rooms and participant list is incomplete


Release Notes - Openmeetings - Version 3.1.3
================================================================================================================
** Bug
    * [OPENMEETINGS-508] - Network testing page is not localized
    * [OPENMEETINGS-1267] - inproper handover of rtmphostlocal to screenshare-client
    * [OPENMEETINGS-1358] - RTMPS SSHHandshakeFailed error  in 3.0.7 and working fine with 3.0.4
    * [OPENMEETINGS-1448] - Recordings backup fails "Enum missing"
    * [OPENMEETINGS-1460] - Application.ONLINE_USERS does not reflect changes to Client instances
    * [OPENMEETINGS-1461] - We need to switch to java8
    * [OPENMEETINGS-1464] - Clear objects on current slide only is not working
    * [OPENMEETINGS-1465] - Password field is enabled when Password protected is not checked
    * [OPENMEETINGS-1466] - REST/SOAP methods are incomplete
    * [OPENMEETINGS-1468] - problems with keyborad usage while screensharing with remote desktop 
    * [OPENMEETINGS-1470] - WB video is not displayed
    * [OPENMEETINGS-1472] - User cannot be deleted
    * [OPENMEETINGS-1473] - JPG file display in the room is broken
    * [OPENMEETINGS-1474] - Users are not being displayed in restricted room

** Improvement
    * [OPENMEETINGS-652] - video playback is not very clear and there isn't a pause button.
    * [OPENMEETINGS-1138] - 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-1445] - 3.1.2 Build Compilation Warnings
    * [OPENMEETINGS-1446] - SSL installation not fully working
    * [OPENMEETINGS-1447] - 3.1.3 - Library versions should be updated

** New Feature
    * [OPENMEETINGS-1408] - provide device-settings dialog via link
    * [OPENMEETINGS-1453] - Provision for getting OpenMeetings version from SOAP/REST api


Release Notes - Openmeetings - Version 3.1.2
================================================================================================================
** Vulnerability
    * CVE-2016-3089 - Apache Openmeetings XSS in SWF panel

** Bug
    * [OPENMEETINGS-412] - Spacebar and enter key cause keyboard remote control to fail while screen sharing
    * [OPENMEETINGS-653] - playing video follow the scrolling of the screen and leave its player.
    * [OPENMEETINGS-1319] - Flash player crashes
    * [OPENMEETINGS-1327] - Messages are being displayed in the folder right after creation
    * [OPENMEETINGS-1330] - Contact being deleted from contact list without confirmation dialog
    * [OPENMEETINGS-1342] - Incorrect user type set when user enter to the OpenMeeitings via plugins
    * [OPENMEETINGS-1344] - MD5 should not be used for password encryption
    * [OPENMEETINGS-1349] - Custom address states sets to NULL while restoring from backup
    * [OPENMEETINGS-1350] - rtmpT connection problem
    * [OPENMEETINGS-1359] - Links to apache-extras.org should be removed from the site
    * [OPENMEETINGS-1361] - Room name is shown incorrectly when guest ente to the rom
    * [OPENMEETINGS-1365] - Network Test Page error and fix URL path
    * [OPENMEETINGS-1370] - JRE 8 is blocking screen sharing/recording by default
    * [OPENMEETINGS-1371] - After scaling a document scrolling does not work on the whiteboard
    * [OPENMEETINGS-1372] - openmeetings-flash is not compilable under OS windows
    * [OPENMEETINGS-1377] - Backup fails when appointment has deleted room
    * [OPENMEETINGS-1379] - XSS in Chat window leading to DOS
    * [OPENMEETINGS-1380] - Chat messages are not being imported
    * [OPENMEETINGS-1384] - SIP dial to room need to be fixed
    * [OPENMEETINGS-1385] - Moving Uploaded Images
    * [OPENMEETINGS-1396] - Swf selection should be improved
    * [OPENMEETINGS-1399] - OpenMeetings is vulnerable to session fixation
    * [OPENMEETINGS-1400] - Admin>Conference Rooms>Appointment Room Checkbox
    * [OPENMEETINGS-1402] - Screen Sharing issue with Greek language
    * [OPENMEETINGS-1406] - View profile form is broken
    * [OPENMEETINGS-1410] - Om failed to install using Oracle
    * [OPENMEETINGS-1411] - allowSameURLMultipleTimes parameter for secure hash is broken
    * [OPENMEETINGS-1412] - Window too big when changing resolution in Audio-Video Recording Test Application
    * [OPENMEETINGS-1414] - spring-mvc and batik need to be removed
    * [OPENMEETINGS-1416] - Users with moderator's flag in usergroup do not become moderators in rooms.
    * [OPENMEETINGS-1417] - Check/uncheck of moderator flag in usergroups doesn't work.
    * [OPENMEETINGS-1422] - WB is not usable for the appointment room
    * [OPENMEETINGS-1423] - Aspect ration is being changed for WB video
    * [OPENMEETINGS-1432] - Recording download from Moodle is broken
    * [OPENMEETINGS-1433] - WB vertical tools panel is broken
    * [OPENMEETINGS-1434] - Only the first group is added in ATTRIBUTE mode
    * [OPENMEETINGS-1435] - Whiteboard Pointer in OM-3.1.2 gives wrong user name
    * [OPENMEETINGS-1438] - Recordings permission check is broken
    * [OPENMEETINGS-1442] - Remote keyboard is not working in screen-sharing app
    * [OPENMEETINGS-1443] - Invitations are broken
    * [OPENMEETINGS-1444] - Language editor is broken

** Improvement
    * [OPENMEETINGS-16] - Missing functionality in SOAP/REST API
    * [OPENMEETINGS-413] - A good idea could be to add default parameter like default country, default language, default domain, etc
    * [OPENMEETINGS-649] - Add email management functions to Om Admin
    * [OPENMEETINGS-1356] - Build should be speed up by reducing forking
    * [OPENMEETINGS-1357] - maven-dependency-plugin should be used to download/unpack OpenLaszlo
    * [OPENMEETINGS-1360] - Library versions should be updated (3.1.2)
    * [OPENMEETINGS-1382] - Update default avatar of user
    * [OPENMEETINGS-1383] - Updated French translation for OpenMeetings 3.1.1/3.1.1+
    * [OPENMEETINGS-1393] - Missing text strings are not internationalized for translation
    * [OPENMEETINGS-1403] - External cameras should be supported
    * [OPENMEETINGS-1405] - Appointment dialog should be simplified
    * [OPENMEETINGS-1419] - Connect to Oracle DB with Service Name through Web Installer

** Task
    * [OPENMEETINGS-90] - Default Country

** Wish
    * [OPENMEETINGS-853] - temporary uploaded files


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
