Version 9.1.240 (6 July 2026) Imports Add ExportData v2 and update the notice period for backwards compatibility (#151719) Problem The notice period field type change is not backwards-compatible in the API.   Solution Introduce a new version (v2) of the Export Data gRPC API for job profiler appointment exports, while also making some adjustments to the v1 API and improving Swagger documentation handling The main focus is on enabling a more flexible and extensible export endpoint, with improved data typing and service registration   Dashboards Fixed rounding of buttons on dashboard widgets (#151957) Problem Straight corners of buttons do not match the rest of the widget   Solution Rounded the buttons (only the outside edges if there are multiple buttons), added padding to the inside of the card to offset the buttons from the side Fixed sizing/spacing issues on widgets   Performance Management Resolve bug where you cannot delete contract files (#151715) Problem Cannot delete a file added to the contract   Solution Add missing parameter required to check user authorisation to delete file on contract   Improve the load for large groups of people when moving contracts in bulk (#151617) Problem Large groups of people cannot be loaded when doing a bulk move.   Solution Introduce significant enhancements to the contract movement functionality, mainly by adding pagination and enriching the user data returned by the relevant endpoints The changes affect the backend query, gRPC API, and web controller to support more efficient data retrieval and improved client-side display These changes collectively improve the scalability, efficiency, and usability of the contract movement feature   Organisational Structure Fixing max position selection error text (#152026) Problem Selecting a position after having 20 positions selected shows an error message as "default text" Additionally, you cannot unselect any position after 20 positions were selected   Solution Added the missing error text hidden field Fixed unselecting logic   Data Warehouse Updated ContentManagement to fetch file data for all active clients (#151058) Problem Currently, PowerShell is only fetching data for MultiV8   Solution Updated PowerShell scripts to fetch for all Live Clients Made adjustments to the DWH steps for ContentManagement to cater for all the V8 Live clients   Updated the production ServerName for LearningManagementReport_ETL (#142732) Problem The LearningManagementReport_ETL did not refresh due to the production server name that changed    Solution Updated the production ServerName for LearningManagementReport_ETL   Content Management Fix file upload bugs (#151789, #151794) Issue 1  Problem No warning when max file size is exceeded in chat   Solution Ensure warning message is displayed for file upload size exceeded. Also, the exception handling middleware did not correctly return AJAX errors when the fetch API was used, causing the request to fail silently.    Issue 2  Problem "Default" helper text not showing after removing the input from the field   Solution Ensure default text always displays even when the value is filled in    People Management Trim username on update of summary and profile tab (#149383) Problem Updates on the summary and profile tab do not trim username    Solution Trim username on update of summary and profile tab   Communication Portal Resolved styling, file selection, and Job Position Audience count (#141183) Problem Still had old JavaScript references on input events for create/edit template; same issue with the file selection and SaveAddNew; incorrect file count returned when identified on multiple audiences; incorrect style on invalid line items No placeholder on dropdown for select option    Solution Removed and ensured the new shared JS editor handles it correctly Correct query logic to count on deduplicated records if identified more than once Correct styling Added placeholder   Report Builder Fixed "User Validation Reports" not exporting correctly (#151687) Problem Report exports and user import validation exports could fail due to mismatched data/service lifetimes   Solution Add a DataTable-based report result path for ReportBuilder exports. Update the background user validation export to create its own DI scope Remove the unused #Usernames temp table drop and clean up the OpenXML comment formatting   Learning Management Fix marksheet mark override link to training intervention (#151708) Problems Marks linked to the wrong source on first save. When a user captured a brand-new mark in a highlighted (yellow) cell and saved, the mark stayed **linked to the training intervention** on the first save and only "delinked" on a second save, even though it had been entered manually Manual overrides could be reverted A manually overridden mark could be unexpectedly changed back to the learner's original training-record score   Solution A manually entered mark now **delinks on the first save** - no second save needed A manual override now **stays in place** unless the learner record itself was genuinely edited more recently, in which case the mark re-syncs to the learner record (most-recent change wins). This uses the learner-record last-edited date now supplied by V8