MyTimetable 3.0 release notes

MyTimetable 3.0 is currently in the state: deprecatedNo further development is expected except for critical bug fixes. MyTimetable 3.0 is tracked using the git branch: rb-3.0.

MyTimetable 3.0 is a major feature release and introduces direct, push-based, synchronisation support for Microsoft Exchange, Office 365 and Google Calendar. These features are not 'plug and play' but require additional set up and maintenance and are thus not part of a regular upgrade. Please contact us for details.

Next to the push-based synchronisation, MyTimetable 3.0 offers a polished user interface, changes in the iCalendar feed handling ('selective sync'), and many back-end changes to make the system perform better than ever.

All work involved in upgrading to the latest MyTimetable version (configuration, building, testing) is free of charge for our customers with a Software Assurance or All-In support agreement.

Functional changes

  • Added push-based support for external calendars — After a long implementation phase, we are pleased to announce availability of our 'external calendar' support. MyTimetable is now able to offer push-based synchronisation to Microsoft Exchange, Office 365 and Google Calendar. Push-based synchronisation offers a more stable calendar integration than the iCalendar feeds, integrates well with the Exchange availability information when planning appointments and is really easy to set up for the user. Since this is a major new feature that also requires some infrastructure changes and set up on the Exchange/Google side, implementation of this feature is done on a per-customer basis and involves some additional consulting and support hours. Please contact us for details. At the moment we only offer a daily 'full sync' of a timetable. MyTimetable 3.1, which will be available soon, will offer incremental synchronisation, where changes in the timetable will be synchronised almost instantly.
  • Pexip / conference integration — Together with Pexip, MyTimetable now offers the perfect distance learning solution. Virtual classrooms are automatically created from your timetable, and users are able to join the classroom with one click, from any device, everywhere. More details are available in this blogpost.


  • Dialogs redesign — The dialogs in the desktop interface have been redesigned and offer clearer feedback on success or failure. The event details dialog was also redesigned, and now includes the event type color and draft styling.
  • Introduced separate button for downloads and synchronisations — To further emphasise the difference between a one-time download and a constant synchronisation of your timetable, we have introduced separate buttons for downloads and synchronisations. Of course the buttons have a handy tooltip to assist the user in choosing the right option.
  • Selective sync support — Not every user wants to see each of his added timetables in his or her personal calendar feed. Often users lookup a timetable of a colleague or a classmate's course, and do not want to synchronise that timetable to their Outlook or Google Calendar. For this reason we have introduced selective sync: when adding a timetable a user can indicate whether or not the timetable should also be synchronised to other devices and clients. These settings affect both iCalendar feeds and the new push-based synchronisation options.
  • New help page — MyTimetable 3.0 offers a completely revamped help page, which offers better navigation and more guidance for both simple and more complex tasks. Each calendar integration is discussed separately and in more detail than previously. The help page also offers institutions the option to add custom information to the page.
  • Improved activity type filter — The activity type filter has been improved and has been given a more prominent place in the interface. It will now clearly show that filtering is taking place. Also, it is now possible to filter some types by default. Furthermore the activity type filter can be changed form the mobile interface, and is available through the API. A separate filter can be set for calendar integrations. Thanks go out to Maastricht University for sponsoring the implementation of this feature.
  • MyTimetable data provider added — The backend of a new MyTimetable data provider has been added. Often not all timetable information is present in the timetabling systems, e.g., deadlines or holidays may not be available from the timetabling system. The MyTimetable data provider offers the possibility to create these events directly in MyTimetable. At the moment the back-end is present, and we are still looking for a sponsor for the the front-end, please contact us for details.
  • Mobile interface timezone and locale improvements — Events in the mobile interface are now always shown in the time zone of the institution, which prevents any problems in case the user's device is set to the wrong time zone.
  • S+ activity size improvements — The activity size can now use planned size, real size or actual size.
  • Module code improvements — If the module or activity code is enabled in the main interface, it is now also shown in the mobile interface. Previously the code was missing from the mobile interface.
  • Encoded iCalendar timetable keys — The timetable key in iCalendar feed URL's is now encoded, which prevents errors if the customer uses merging (i.e., separate databases for semester 1 and 2) and the timetable object contains non alphanumeric characters in the name or host key.
  • CSV export improvements — The CSV export includes more fields and features a user-selectable separator to maximise client compatibility.
  • Draft activity styling update — The readability of draft activities has been improved by using a darker font and wider stripes.
  • Mobile interface supports 'show-all' property — For smaller customer installs this will mean the 'add timetable' list will show all timetables by default, no search necessary.
  • API: timetable type details call added — A new call has been added to the API (/api/v0/timetabletypedetails) which provides some more details on the configured timetable types.
  • API: subscription type information added — The API subscriptions call (/api/v0/subscriptions) now contains information on the timetable type of each subscription.
  • API: verify timetable existence when adding a subscription — When adding a timetable through the API, the existence of a given timetable key is verified against the data source. This prevents user profile corruption if the API calls are invalid.
  • Timetable existence is now verified each time a subscription is retrieved — This prevents errors in the interface if a timetable is removed from the source database, and generally improves performance because a separate existence check is no longer necessary.
  • Export dialog shows more details about events in the past or distant future not being included in iCalendar feed — If the customer has chosen to exclude events in the past or future from the iCalendar feeds, the export dialog will now show a message to the user that describes the set limits.
  • Unsupported browser page improvements — The warning page that is shown if a user uses an unsupported browser now includes a logo and a link to download a better and newer browser. Microsoft IE7 users will now also receive an unsupported browser warning.
  • Status page improvements — The MyTimetable monitoring URL (/status) now provides a consistent data and time format.
  • Health API added — For better monitoring, a JSON based health API was added. More information is available at Monitoring.
  • Provisioning API added — The provisioning API provides the possibilities to create and remove user profiles from the database, and initiate push-based synchronisations.
  • Admin interface added — A basic admin interface has been added to MyTimetable. Using the admin interface it is possible to view the state of push-based synchronisations and configure logging levels on an application-wide or per-user basis. More features will be added in the future.
  • Error page improvements — A friendly error message is now shown if a SAML authentication request fails due to a timeout.
  • API OAuth improvements — The OAuth library has been updated and MyTimetable now supports various OAuth scopes. Using the scopes it is possible for a user to give read-only access to their timetable, instead of read-write.
  • Default location timetable limit increased — In the default configuration it is now possible to add and enable 50 instead of 25 location timetables.
  • Avoid concurrency support for student sets — The Syllabus Plus provider now supports avoid concurrency for student sets. When enabled, each student set timetable will also show activities of student sets that are set to avoid concurrency with the selected student set.
  • As usual, many small bug fixes and changes are included in this release. 871 issues were fixed in 1350 commits.

Non-functional, technical and back-end changes

The following changes have been made to the MyTimetable backend and underlying software, and have no direct impact on MyTimetable functionality:

  • The project has been divided into separate modules for core, dataproviders, web, mobile and external calendaring.

  • The configuration system has been reworked, and now includes all property files from the 'config' directory under a directory defined using the Java system property application.home. This makes it no longer necessary to define environment overrides in the Tomcat context configuration XML files. During an upgrade Eveoh staff will convert the old configuration to the new format, or provide you with instructions how to do this yourself.
  • The compatibility level of all non-GWT source has been updated to Java 8. MyTimetable now requires Java/JRE 8 and a recent Tomcat version (7.0.54+, most recent recommended).
  • Switch to Thymeleaf based templates, to better separate view and controller logic.
  • GWT upgrade to version 2.7.0. This also means we switched to 'super-dev' mode and are now using Java 7 source level for the GWT sources.
  • Removed AspectJ from the build pipeline and switched to Spring-based aspects. We were not really using the extra AspectJ features, and using AspectJ did interfere with the IDE/IntelliJ build chain, so we chose to remove it.
  • Introduced a Gulp / SASS / Bower based build chain for many of our assets (CSS, Bootstrap, JS). During this process many of these dependencies were also upgraded to the latest version.
  • jTDS, the Microsoft SQL connector, has been patched to include support for SSL and SQL Server 2014.
  • Many improvements were made to the logging configuration. MyTimetable now logs to a separate log file, which is rotated daily. The log file can be found in the Tomcat logs directory. Also the logging can include the username of the user, and through the admin panel is is possible to configure per-user log levels.
  • Remote logging has been added. When enabled this logs to an Eveoh provided logstash host by default, see /wiki/spaces/MYTT/pages/3099656255 for details.
  • Disabled in-URL session tracking, because it does not work well and is a security risk.
  • Added a static authenticator, which supports a fixed username and password, for non-public facing MyTimetable (API or external calendaring only instances).
  • Jasig CAS authentication is now supported.
  • AD authentication now supports recursive group retrieval.
  • Google Analytics tracking code has been upgraded to 'Universal Analytics'.
  • More stringent CSRF checks have been added, which may break applications that try to handle OAuth authorisations in the background by automated posting to the login form. 
  • TLS SNI is now supported for SAML metadata retrieval, which fixes compatibility with a default ADFSv3 installation.
  • An XSS issue in the CXF API overview page was fixed.
  • The JACOB-based Active Directory attribute reader has been replaced by a JNA-based version. This fixes issues on Win2012 servers, where too much UDP ports were opened by the MyTimetable processes.
  • Google Tag Manager support was added for visitor tracking.
  • The following dependencies were upgraded:
    • Spring (4.2.1)

    • Spring Security (3.2.8)
    • Gradle (2.14)

    • Joda-Time (2.8.2)
    • Servlet API (3.1.0)
    • Apache CXF (3.1.2)
    • Flyway (3.2.1)
    • MySQL connector (5.1.36)
    • HikariCP (2.3.8)
    • slf4j (1.7.12)
    • Logback (1.1.3)
    • Guava (18)
    • Jackson (2.6.2)
    • Commons-codec (1.10)
    • Commons-beanutils (1.9.2)

Removed and deprecated features

The following features from earlier MyTimetable versions have been deprecated, removed, or partially removed and are not supported anymore:

  • Legacy UserCalendarItemsService removed. A new version of the Blackboard building block is available that uses the MyTimetable API instead of the legacy SOAP service. Custom integrations should also switch to the MyTimetable API, contact us for help with this.
  • Internet Explorer 7 support was already deprecated in MyTimetable 2.4 and has now been removed from the build process. IE7 users are advised to use an other, more recent browser.
  • Support for Android 2.2 has been removed. Only 0.06% of our users use this Android version, and the Android 2.2 support is starting to cause issues in more recent browsers.