Version 9.1.213 (4 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 When navigating to Positions from the Appoint User Screen, change the breadcrumb to refer the user to where they came from. 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 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.