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
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