The following additions and changes were made in the MyTimetable 2019 releases, listed from new to old. For significant new features or important changes, a link to a separate blog post will be available.

VersionTypeDescriptionMore info
2019.25 (2019-11-03)

MSSQL JDBC configuration properties not all working correctly


attributesGrantedAuthoritiesProvider cannot be overridden


S+ NG: use cached V_GLOBAL information for week labels and terms
2019.24 (2019-10-30)

TermTime DP rework: exam activities

Publication rules: 'remove' size of activity

Support new OSIRIS authentication scheme

Missing index on subscription FindByTimetable

Option to disable condensing / group by weekly pattern

Replace jTDS with Microsoft JDBC driver

GWT: interface not showing correct list of filtered event types for sync

Mobile: activity size not showing in details

Admin menu does not show expanded items after navigation

Provisioning API: GET on user without attributes returns a NPE

EC remoting does not work with backslashes in usernames

ES: grouping of activities does not preserve custom attributes


API: cookie behaviour when requesting a timetable via an elevated token

Events moved by post-processing are not retrieved correctly


Admin Requests and errors statistics page misses proper headers on metrics graphs

GCal: large updates fail and/or are processed very slowly

GCal: sync tempfailing after user removes event


Export on overview page broken

EC: next recovery attempt always empty

Error handling duplicate events

Remove 'deduplicate' and 'group` parameters from core getSchedule(..) methods

Minimal Spring Boot implementation for MTT Web

Linux systemd unit definition for Spring Boot

EC: retrieve timetables from MTT web

Remove statistics by scheme from admin panel

Upgrade Resilience4j circuit breaker to 1.1.0

Replace web.xml with WebApplicationInitializer

Windows service support for MyTimetable web

Replace deprecated SizeAndTimeBasedFNATP in Logback config

Improve logging of TimetableIndexingTask

Upgrade ical4j to 3.0.11


Remove clustered profile from IDEA run configurations


Merge admin modules into one

Determine outdated dependencies
2019.23 (2019-09-30)

Lookup implementation: datasource-based

Danish translations part deux

Update admin panel texts for notifications

O365 EC: handle ErrorInvalidUser as permanent failure


Remove exception based logic in MessageSourceChain

Presto: students timetables cannot be viewed when student is attached to multiple programmes

API roles should not use userprefs roles

Class documentation SqlLookup unfinished

Event misses students when grouping by module

'{brcypt}' Typo in UPGRADE_NOTES.md

Remove respond-minmax support

Remove html5shiv support

Fail gracefully if EC not available


2019.22 (2019-09-17)

Lookup implementation: SQL-based


iCal timetables broken

Upgrade mobile Bower dependencies


Upgrade bower dependencies


2019.21 (2019-09-06)

TermTime: Fine-tune circuitbreaker config

OAuth migration after Spring Security 5 upgrade

Removal loop in InfinispanInMemoryDataContainer#storeTimetables() is broken

Typo in MyTimetable DataSource class


Outdated link on the Unsupported browser page

IRIS dataprovider fault handling


Fine tune SQL connection properties


2019.20 (2019-08-30)

Mobile: options/sequences not sorted


2019.19 (2019-08-29)






























Translate MyTimetable to Danish

Auth: flexible granted authorities provider

Consistently apply entity and timetabletype filters

MyTimetable EC Windows install instructions / scripts / service runner

TermTime: disable cookie/session management on API access

Error logged/incomplete response on 404 without session

iCal feed can be requested by user without authentication

S+ NG: SQL Server selecting wrong query plan for module timetable retrieval

Datasource label translation issue

Mobile events cannot be opened when sections enabled

Echo/notifications explanation texts shown in mobile/help

Message role filtering concurrency issue

Recording message shows safe:""

WebUntis data import task is locked

Upgrade NodeJS to latest LTS

Upgrade Yarn to 1.17.3

Upgrade google-http-client-jackson2 to 1.31.0

Upgrade google-oauth-client to 1.30.1

Upgrade icu4j to 64.2

Upgrade adal4j to 1.6.4

Upgrade opencsv to 4.6

Upgrade JAX-B

Upgrade commons-beanutils to 1.9.4

Upgrade commons-io to 2.6

Upgrade resilience4j-circuitbreaker to 0.17.0

Upgrade Apache POI to 4.1.0

Upgrade SonarQube Gradle Plugin to 2.7.1

Upgrade Gradle to 5.6

Upgrade Spring Boot to v2.1.7

Remove Windows authentication support

Remove AD attribute reader

Upgrade commonmark-java to 0.13.0

Upgrade google-api-services-calendar to 1.30.1
2019.18 (2019-08-19)

WebUntis: make type of import configurable

WebUntis: import JSONRPC format


WebUntis API: periodically refresh timetable

WebUntis API: refresh timetable button in admin panel

Lookup implementation: REST API

WebUntis: merge consecutive periods based on period number

WebUntis API: decouple TSV format from import

Increase SAML user details flexibility

XSS in values in DataTables in admin panel

Untis import can be configured without password

API requests with unknown path extensions broken

Total count in audit log on user page incorrect

EC does not start when a WebUntis DS is configured

MyTimetable does not start due to saml.attribute.roles not being set

In-Memory DP: find by hostkey is not case insensitive

Upgrade logstash-logback-encoder to v6.1

Upgrade iCal4j to v3.x

Implement type for data sources

Upgrade jsoup to 1.12.1

Upgrade ical4j

Remove unused properties from (non default) resource bundles
2019.17 (2019-07-27)

Error during Exchange/EWS sync
2019.16 (2019-07-26)

API: add enrollment status

MyTimetable 2019.16: Provisioning enhancements, locale fixes and Java 11

























Add enrollment status to exported events

MyTimetable EC Linux install instructions / scripts

User locale should only be saved on explicit selection by user

Provisioning of additional user properties

Limit mirror store size by removing attributes

S+ NG: use cached globals information on empty view

Use request/cookie locale on invalid stored locale

Tweak schema of notifications

Option selection not working when other timetables have the same module

Bower does not prune old dependencies

Use of multiple TimetableSuggestionStrategies in EC is broken

API 401 returns incomplete page

Upgrade jQuery

Prevent reverse tabnabbing

Upgrade to Spring Framework 5.x / Spring Boot 2.x

AdoptOpenJDK 11 compatibility

Upgrade to Spring Security 5

Update IntelliJ configs for 2019.1 / make it work

Upgrade to Flyway 5

Remove old TermTime provider

Upgrade to Gradle 5

Typo in EchoResponseErrorHandler class name

Use consistent/fixed data directory

Remove OpenSSO authentication

Remove CAS authentication

Remove Zimbra authentication
2019.15 (2019-06-28)

TermTime evaluates Event custom attributes for Bookings


DataTables Bootstrap styling is broken

EC sync does not update user subscriptions


Switching locales in admin panel triggers HTTP 500

Bootstrap upgrade


Upgrade Thymeleaf to v3.0.11

Upgrade Infinispan to version 9.4.15


Upgrade Spring Dependency Management Plugin to v1.0.8

Upgrade to HikariCP 3


Upgrade Spring Security OAuth2

Unintentional re-binding of AuthorizationRequest to request attributes in UserApprovalController
2019.14 (2019-06-24)

TermTime DP rework: support room booking activity types


TermTime NG: ignore allday bit

TermTime NG: take building/campus into account when assigning child ID of building timetable

Bower not loading dependencies after upgrade


Localized property may fail depending on locale order

Do not notify EC of anonymous user subscription changes

TermTimeNG: rename Timeframe.id field

Upgrade Gulp dependencies

Upgrade Spring Security OAuth


Upgrade Moment.js

Upgrade handlebars


Upgrade Xerces

Upgrade Guava


Upgrade Jackson

Upgrade Waffle
2019.13 (2019-06-17)

Add Danish locale

TermTime DP rework: room booking activities

Renewed Term Time provider

Upgrade Bower

Upgrade Yarn to latest version


Gradle: remove Javadoc task


Upgrade node-tar


NodeJS upgrade
2019.12 (2019-06-12)

TermTime NG: support custom attributes on eventsRenewed Term Time provider

Read property files as UTF-8

TermTime NG: show 'Other timetables' category for staff/student/studentgroup timetables

Admin: user details page broken when filtering eventtypes

TermTime NG: null values in tag list create exceptions
2019.11 (2019-06-07)

TermTime NG: filter activity types on tagRenewed Term Time provider

TermTime NG: filter timetablefilter on tags

TermTime NG: filter timetables on tags

TermTime DP rework: show module offers for staff as child subscriptions

TermTime DP rework: show periods

TermTime NG: take into account allDay bit

TermTime NG: process tags on activities

API: publish draft bit in API responses


S+ NG: child timetable filtering

S+ NG: Zone/location timetables may assign incorrect child ids


2019.10 (2019-05-22)



























TermTime DP rework: show module offers for course as child subscriptionsRenewed Term Time provider

TermTime DP rework: show module offers for student as child subscriptions

TermTime DP rework: show module offers for student group as child subscriptions

TermTime DP rework: filter module offers on course

TermTime DP rework: view building timetable

TermTime DP rework: list and search building timetables

TermTime DP rework: filter rooms on building

TermTime DP rework: show rooms for building as child subscriptions

TermTime DP rework: publication flags

TermTime DP rework: filter module offers on department

TermTime DP rework: filter student groups on department

TermTime DP rework: filter students groups on course

Term Time NG: Allow configuring option name for repeatgroupid-based options

Term Time NG: search in all locales


TermTimeNG: proper null check

ExportedEventTextRenderer does not render 'recorded' state

EventDetailsPresenter does not render 'recorded' state

TermTimeNG: fetching child options by host key throws IllegalArgumentException

TermTimeNG: course child options broken


Term Time NG: Module offer timetable broken

XML API returns 500s on various endpoints

GWT error popup icon black instead of white

EventConcurrencyUtil erroneously ignores concurrency 'concurrency within a module' when two events have no module code

Echo event: fix event attribute old/new value naming

SAML signature hash algorithm default to SHA-256


Deprecation warnings

Update Spring Boot dependencies to 1.5.21

TermTimeNG: development config

TermTime DP rework: use nullable department information from activity


2019.9 (2019-04-29)

S+ NG: ModuleGroupDepartment filter broken

Mobile: does not render in IE11
2019.8 (2019-04-25)


TermTime DP rework: view course timetableRenewed Term Time provider

TermTime DP rework: view student group timetable

TermTime DP rework: view room timetable

TermTime DP rework: list and search course timetables

TermTime DP rework: list and search student group timetables

TermTime DP rework: list and search room timetables

TermTime DP rework: filter courses on department

TermTime DP rework: filter rooms on department

TermTime DP rework: support activity types

TermTime DP rework: notes for activities

TermTime DP rework: module information for activities

TermTime DP rework: show size of activity

TermTime DP rework: add option selection based on repeat activities

Mobile API message refresh


Various bugs in location entity info page

Upgrade to Tomcat 9
2019.7 (2019-04-19)


TermTime DP rework: staff for activitiesRenewed Term Time provider

S+ NG: PosGroup filter not working for Modules/StudentSets

Upgrade Infinispan


2019.6 (2019-04-18)




S+ NG: implement PosGroupDepartment filter type

TermTime DP rework: view module offer timetableRenewed Term Time provider

CSRF possible on /logout

Upgrade Mockito


Spring Boot upgrade


2019.5 (2019-04-15)

Location entity info page lookup by key not working


2019.4 (2019-04-11)















S+ NG: support option equivalence check


TermTime DP rework: list and search module offer timetables

Renewed Term Time provider

TermTime DP rework: view student timetable

TermTime DP rework: view staff timetable

TermTime DP rework: list and search student timetables

TermTime DP rework: list and search staff timetables

TermTime DP rework: filter staff on department

S+ NG: support activity type filtering

S+ NG: Use AbstractCachingEntityValuesRepository for Zones

S+: support more than 100 OSIRIS groups

S+: Module name SpEL expression not working

EC EWS autodiscover failing on O365

Individual export (module view) incomplete


API: insufficient scope returns a generic error

Remove LDAP / LDAP-AD authenticator

Remove SAP SSO authenticator

Adjust Postgres pool sizes

2019.3 (2019-03-29)

S+ NG: LocationEntityProvider / location info page

2019.2 (2019-03-26)

Messages: add API to manage messages

Circuitbreakers on RestTemplates


S+ NG provider: cache department information

S+ NG: WRB timetable type missing filter

2019.1 (2019-03-21)






Rule engine: add import/export

S+ NG: Limit studentset retrieval for large activities

S+ NG: support event sequences

iCal DP hostkey lookup stability


S+ NG: FORCESEEK query hint issue

Reduce code sharing between GWT and backend

Remove ZRS and UNIT-e dataproviders

Setup release processRelease early, release often