Version 9.1.213 (2 March 2026)
Imports
De-duplicate users on User ID (#143370)
Problem
- Imports have multiple IDs, and this can cause a user to be added multiple times, causing import failures
Solution
- De-duplicate users by user ID to avoid trying to update the same user multiple times in a bulk upsert
Reverted one endpoint for Last Sync (#145052)
Problem
- Development was done for the last sync changes. V8 development is still within Victrix. On V9, this causes the import of the one to fail
Solution
- Reverted the one endpoint, so when this goes live, it will not break the import. Revert once V8 goes Live
Resolved order display for push integration imports (#145172)
Problem
- Display order is incorrect for indented imports
Solution
- Add a change to the order according to the display order wanted
Resolved styling change for push imports (#144975)
Problem
- The new development implemented makes the buttons very long as they are stacked next to each other, which grows the entire row
Solution
- Add a change to rather display the 2 buttons below each other
Preserve CreatedDate when updating users when importing (#144208)
Problem
- The created date of the user is overridden when the user is updated by the user import.
Solution
- Passes createdDate: existingUser.CreatedDate into the user update/create call in ImportUsersCommandHandler so the original CreatedDate is preserved during import/update. This prevents the import flow from overwriting the user's original creation timestamp when an existing user is updated.
Content Management
Resolved Avatar selection (#145074)
Problem
- When selecting a default image, it fails on the user profile
Solution
- Corrected the path URL to first check in the new folder path of avatar-defaults
Performance Management
Resolved My Agreement pill item tab not present when multiple setup selections (#142417)
Problem
- When a user is linked to multiple setups, a selection comes up to select the review setup should there be no existing contract, but there is no link button in the selections to navigate back to should they have other subordinate view items
Solution
- Add a change to render a button on conditions, should there be even though a contract does not exists. Implement a change to handle the tab selection correctly after a review setup has been selected
Custom binding handler for decimal to cater for both ',' and '.' as decimal separators (#145167)
Problem
- When the user's regional settings have ',' as the decimal seperator and the frontend sends through decimal as '.' then the value is lost during the model binding and results in _null_ value.
Solution
- Added a custom decimal model binder provider that can be attached to a property/action parameter as an attribute, which then, in turn, performs custom binding of the value and converts the value to '.' so it binds correctly on the controller.
Fixed html tag not showing and removed whitespace (#144980)
Problem
- One of the translations showed the tag on the ui and had whitespace beneath it.
Solution
- Correctly apply the HTML tag and remove the whitespace.
Allow capturing rating scales with two decimal values (#145167)
Problem
- Can't add rating scales with values that have two decimal places, e.g., 1.25 or 1.02
Solution
- Allow adding rating scales with upto two decimal places
Report Builder
Added clause when no tenantId exists (#143579)
Problem
- In cases where a table does not have a tenantId present, it fails.
Solution
- Add a case to have the same logic, should it fail, fallback to query without tenantId
Data Warehouse
Created new SSIS Package Audit_ETL (#136619 & #136620)
Problem
- New Datasource UserAccess is required
Solution
- Created new SSIS Package "Audit_ETL.dtsx"
- Created new ConnectionManager "V9_Master_Audit"
- Created new Datasource "UserAccess"
- Adjusted DataDictionary Scripts to include Audit
Updated step for accUserLoginStats to insert new field UniquePersonLoggingDays (#144473)
Problem
- The insert step for accUserLoginStats does not include the new field UniquePersonLoggingDays
Solution
- Updated insert step for accUserLoginStats to include the new field UniquePersonLoggingDays
Resolved issue for accUserLogins to only return successful Logins (#144473)
Problem
- The accUserLoginStats calculation for V10 only returned failed logins, which is incorrect
Solution
- Corrected the accUserLoginStats calculation for V10 to only return successful logins
People Management
Cleanup failed profile creations, identity user (#145199)
Problem
- A user appointment process failed due to a duplication/overlapping error. During cleanup, the user account was removed, but the associated identity record remained. A later import updated the username of an existing account, but the identity could not be updated due to a conflicting existing username. This resulted in the identity being linked to a different account. When the user attempted to log in with the updated username, no matching account could be resolved, causing the application to become unresponsive.
Solution
- When a new person's appointment fails, be sure to delete the identity user also. This ensure futher username changes and re-adding of the same user will occur correctly
Clear tab pane when switching between tabs (#145173)
Problem
- After viewing a tab, then moving to another tab, the previously visited tab remains on the screen while viewing the new tab
Solution
- Clear tab pane when switching between tabs
Fix "We're Sorry" error appears when navigating to Positions from Appoint User Screen (#144487)
Problem
- The system displays a "We're Sorry" error when navigating to Positions from the Appoint User Screen
Solution
Fix Summary, Timetable & Attendance Views not showing when in learning mode (#145057)
Problem
- Summary, Timetable & Attendance Views not showing content when in learning mode
Solution
- Fix Summary, Timetable & Attendance Views not showing content when in learning mode
Job Management
Close the tab when navigating back from positions when it was opened from adding a position on people management (#144487)
Problem
- The user adds a new position from the appointment screen, which opens the job management positions in a new tab. Navigating the breadcrumb back results in taking the user back to the appointment screen of the tab they are on. It should rather close the tab which reflects the same action that saving the form does.
Solution
- Close the tab when the user navigates back. Still need to keep the `useRefererBreadcrumb` so that only one breadcrumb is added.
Refactor appointments active calculation (#144278)
Solution
- Add a new change to calculate appointments within commands and imports instead of recalculating within each query.
- Adjust queries to make use of the new column instead of calculating each time
+ Inherent Requirements" button appears on all the Job Requirement Tabs (#144476)
Problem
- "+ Inherent Requirements" footer button appears on all the Job Requirement Tabs
Solution
- Ensure the "+ Inherent Requirements" footer button only appears on all the "Inherent Requirements" tab
Tenant Management
Send notifications subscription toggle and date quick select buttons (#144227)
Problem
- New expiry date should be the same as the current expiry date; buttons need to be added to quickly set dates (for end of this week, end of next week, etc); and a new toggle to be added to enable and disable subscription expiry and system close notifications
Solution
- New expiry date defaulted to current expiry date; 4 buttons added to quickly set the dates; new toggle added which persists in the database against the subscription, and displays value; and then added logic to ensure when disabled, no system expiry or close notifications are sent
Communication Portal
Resolved add button not being rendered correctly (#144928)
Problem
- When being rendered within the footer, the Bootstrap footer styling affects the position relative of the add new container which hides the menu dropdown
Solution
- Moved the add to the modal header, and adjusted the icon's background to look the same as the Nav.
Learning Management
Remove username from coordinator name on events calendar view (#145139)
Problem
- When a coordinator's username is their id number, then it raises POPI concerns when displayed.
Solution
- Hide the username and only show the first and last name.