Version 9.1.210 (9 February 2026)
System Access
Replace system access caching for ruleset settings to allow the login page to display the correct MFA settings (#131818)
Problem
- When a ruleset's MFA settings are edited from another ruleset by a global ruleset administrator, the MFA setting does not change on the login page.
Solution
- Remove the in-memory caching of system access settings and replace it with Redis caching that is busted when changing the MFA settings
Data Warehouse
Updated Containers for lmStudentSubjects and lmTermMarks (#143406)
Problem
- Currently, the previous year data for the datasources StudentSubjects and TermMarks are being calculated and reinserted, which can cause issues with historic data
Solution
- Updated Containers for lmStudentSubjects and lmTermMarks to only process and insert data for the current year, and keep the previous year's data
- Disabled 2025 manual updates for StudentSubjects and TermMarks
Adjusted the update step for field AbsentAttendance within lmTermResults (#144262)
Problem
- The field AbsentAttendance calculation within lmTermResults does not consider the year for the students, which is incorrect
Solution
- Adjusted the update step for field AbsentAttendance within lmTermResults to consider the year as well, to ensure the field is being updated correctly
People Management
Resolved issue where email is mandatory on the Contact Details page, even though it is set to be not mandatory in the settings (#144273)
Problem
- The Email address is set to be not mandatory in the settings, but it is required on the Contact Details screen.
Solution
- Corrected the logic on the page to consider the setting as well.
Remove readonly restriction on username when auto-generated (#144410)
Problem
- Even though the username is auto generated should still be able to change it on the Summary / Personal detail views on a person's profile
Solution
- Remove readonly from the username field when auto generated, add existing username validation check.
Ruleset Management
Guard geolocation and prevent duplicate handlers on ruleset management (#143200)
Problem
- The request allow the country to be fetched is shown on all tabs. When saving the content server settings, it saves twice.
Solution
- Only run getUserCountry() when the active tab is the General tab (checks URL param 'tab'), and skip if the country is already selected or geolocation is unavailable. Replace several direct .on() bindings with .off().on() on #tab-content and form elements to avoid duplicate event handlers (menu item clicks, delete modal actions, checkbox change, and integration form submissions). Preserve existing AJAX flows for selecting/creating countries and for form submits, while cleaning up indentation and chaining for readability.
Job Management
Bust people group cache when updating position, as it might include an org change linked to a people group (#136729)
Problem
- People group users are not refreshed when updating position from the job management page.
Solution
- Bust the people group cache when updating the position, as it might include an org change linked to a people group
Report Builder
Unbind jQuery handlers and fix the jsTree load to ensure spamming the jsTree selector does not generate multiple bound events. (#144181)
Problem
- When a user spams the tree selector with clicks, many events then fire and the page glitches
- When the datasource loads without items, a JS tree error is thrown.
Solution
- Replace many direct .on(...) bindings with .off(...).on(...) across add-edit-report.js, pivot-table.js, and report-designer.js to prevent duplicate event handlers and memory leaks. Add missing .fail handlers for AJAX posts, ensure checkbox/form serialisation deduplicates entries, and tighten drag/mouse event binding/unbinding. Also, adjust the jsTree node payload to always provide children as an array and include a loaded flag to improve tree loading behaviour. Minor UI/interaction fixes (datepickers, export buttons, dropdown event handling) included.