Version 9.1.211 (2 March 2026)
People Management
Add handling to not do PG update with rowlock when no data to update (#144529)
Problem
- Situation where if the current activity is on materialised PeopleGroupUsers, but there is no data in the table for the PG, then the rowlock causes performance issues.
Solution
- Wrapped the table update with the row lock in an if to only run if there is data to update.
Refactor People Management tab queries to increase performance (#144529)
Problem
- In some instances, the queries to fetch MyTeam / MyDepartment / MyCompany / PeopleGroupUsers times out or takes an excessive amount of time to complete.
- 2 calls are made as subqueries to determine
- 1) The number of subordinates for the user
- 2) Whether the user is my manager.
Solution
- Changed the 'My Manager' check by fetching the user's manager beforehand into a variable and then comparing the result userid against that variable.
- Moved the subordinate count outside of the main cte query by first selecting everything into a temp table and then calculating and updating the subordinate count after the fact as a batch update.
- Some minor changes to React for mapped key uniqueness.
Correct people group materialisation clearance when the list of people group's users is fetched (#143861)
Problem
- When V8 request the people group users from V9, and some PGs have been materialised, and some have not been materialised, it causes the materialised people groups to be cleared. Only the unmaterialised PGs are to be returned.
Solution
- Ensure only the calculated people groups are included when deleting the materialised people group users
Hover on Profile picture displays incorrect tooltip text (#144474)
Problem
- Hovering on the profile picture displays incorrect tooltip text
Solution
- Fix incorrect casing used for the translation key, causing it not to find the correct value
Extended compression type selection on User Edit Profile (#143713)
Problem
- New change implemented in the account to not set the first selection, but not added withinthe image resources
- Suggestion to clear tags after file change
Solution
- Pass true value
- Add clear Keywords
When a front-end user appointment fails to create, revert user creation (#144275)
Problem
- Should a front-end user creation be successful, but the appointment fails, a message is shown for the user, but if the modal is closed and later tried to appoint/recreate, it says the user already exists.
Solution
- Add change should the appointment creation fails, revert/delete the created user
Job Management
Fixed copying of reporting lines on the user summary page (#143977)
Problem
- The copy manager function for reporting lines on the user summary page is not working.
Solution
- Included the JS file with the function and added the needed hidden fields.
Uploaded Evidence only appears on Inherent Requirements after a Hard Refresh (#144492)
Problem
- When opening the
modalmodal, a global let issetset, which is not reset
Solution
- Correct to pull the data-attribute directly
An error appears when deleting Required Evidence Files (#144493)
Problem
- Incorrect id attribute was retrieved to be passed for deletion
Solution
- Correctly retrieve the id for the document deletion
Previous delete reason gets cached when deleting evidence documents (#144494)
Problem
- When a user opens the modal, it keeps the previously entered value
Solution
- Reset the value to the default when opened
Imports
Implemented visual enhancements to User Imports (#144481)
Problem
- User Import triggers a few other imports, but no visual knowledge of that
Solution
- Add an indent to the types that are included as part of the User Import
Add change to sync in partial for last edited date (#139776)
Problem
- When syncing data from V9 to V8, all data is pulled that is currently on V9, not just changed data. This caused the API calls to return very large datasets each time the APIs are called.
Solution
V9
- In each of the APIs below, implement an additional filter ChangeAfterDate
- ChangeAfterDate is a nullable datetime field
- The ChangeAfterDate should be used to only return the data with an edited date after the date
- When the date is null, then all data must be returned
- The edited date of the main table, along with the relational tables, should be considered, e.g.
- Account.Users.EditedDate, Account.Genders.EditedDate etc.
- On the Ruleset | Integrations tab, split the push buttons into two
- All Data
- This will import all data from the start of time.
- All Data from the last change
- This will only import the data from the date of the last successful import on V8.
- Keep as is Theme Import
- All Data
- APIs
- User Import
- People Group Import
- Use the People group table as well as the materialised log table to determine changes
- User people group permissions
- Use the link to the user and the roles' edited date
- Add a field in Jobprofiler.MaterialsedUsers.PeopleGroupChangedDate, which is populated when people groups are removed from a user
- User roles
- Check the edited date of the user role
- Add a field to the account.Users.RolesChangedDate, which is populated when roles are deleted from a user
- Check the edited date of the user role
- Reporting Lines
- Use Jobprofilers' reporting lines edited date to fetch the changed data
- Use Jobprofilers' reporting lines edited date to fetch the changed data
- Job structure
- Check the edited date of the JobProfile, Position and Org nodes as well as their linked master data, to determine a change
- Check the edited date of the JobProfile, Position and Org nodes as well as their linked master data, to determine a change
- Org structure
- Check the edited date of the Org nodes as well as their linked master data, to determine a change
- Check the edited date of the Org nodes as well as their linked master data, to determine a change
- Appointment
- Use the edited date of the appointment
- Add a field in Jobprofiler.MaterialsedUsers.AppointmentChangedDate, which is populated when appointments are removed from a user
- When any appointment has changed for a user, return all appointments for the user
- Use the edited date of the appointment
V8
- Add a table sysSuccessfulSyncLog
- This table only stores the import types, with the date they were last successful
- This table is then used to determine the date to include for ChangeAfterDate when the APIs are called
- Alternatively use sysProcesslog
- Display the import completion date stored on V9 after successful completion.
Ruleset Management
Resolved event handler not being triggered on system menu click (#144569)
Problem
- The off method is called, which removes all the event handlers from that element, so only the very last defined event is added
Solution
- Correctly remove the same event specified to be added
Communication Portal
Implemented Communication Priority Master data item (#140896)
New Development
- Add Master Data for the Priority to be set when creating notifications
Implemented Master Data Communication Category (#140897)
New Development
- Add Master Data for the Category to be set when creating notifications
Implemented import for Master Data (#140898)
New Development
- Add an import for Master Data to be available in V8
Added handling for external system message (#140899)
New Development
- Added functionality so that a V8-triggered mail can be sent as a System message
Fix colour picker not setting subsequent colours picked on change (#140896)
Resolved Icon picker not being able to search (#140897)
Resolved Master data bugs (#136015)
Fix master data api incorrect reference (#144484)
Resolved bugs (#136015)
Organisational Structure
Load org nodes on org structure page on demand (108648)
Problem
- Org node loaded all org structures (including children) from the server, which can cause performance issues on the browser if there are alot of structures.
Solution
- Load only top level org structures on first page load and load the rest as the structure is expanded.
Content Management
Implemented a new change to be able to delete a signing document (#143364)
Problem
- When an assessment attempt has been signed, there is currently no way to ressign it from the front end
Solution
Path: Manage Employees > Select Employee > Employee Development > Assessment List
- In the drop next to the assessment (see below), create an item "Reset signing"
- It should only be available if one of the attempts was signed digitally
- When selected, the user is prompted for a reason (free-text) and a message, "PLEASE NOTE: This action is not reversible and will remove the digital document."
- The reason is saved against a new field in abAssessmentsAttempts.ResetSigningReason
- When the reason is completed, and the user clicks Continue
- Remove the digital document from Nextcloud via the content service
- Remove the document from the Fileserver application
- The record is removed from sysSigniSignedDocuments and then abAssessmentSignatures according to the logic demonstrated in
Tenant Management
Updated system close colour + filter fix (#144226)
Problem
- System Close Date colour was orange when within 30 days of the close date
- The advanced filter is not working
Solution
- Change the colour to red and show the expiry dates nearest to today's date first by default
- Corrected the filter
Identity and Authorisation
Implement Auditing on Identity service (#143433)