Skip to main content

Version 9.1.215.2 (Support Release - 10 March 2026)

Imports

Correct the retrieval of all users' roles when doing a bulk user role import (#146187)

Problem

  • The api returns no roles when the user list is empty. For the bulk import, the list of usernames is always empty, and so no roles are imported. Blanks in the list are also incorrectly considered as users

 

Solution

  • Exclude empty or whitespace usernames before building ruleset-prefixed usernames for ListUserRolesAsync, preventing invalid/empty entries from being queried. Also, build the response from rolesByUsername.Keys (instead of the original request list) and ensure users without roles get an empty role list, keeping the returned user-role mapping consistent with the queried results.

 


People Management

Resolve the issue where you cannot add an appointment for a user when the appointment history is viewed from the summary page (#146062)

Problem

  • When trying to add an appointment, the '+ Appointment' button does nothing; you have to click on another submenu item within the appointment section and then back to appointment history before the button works.

 

Solution

  • Changed the click event to bind to a class and not the Id of the button. The button does not seem to be immediately available when the partial is being rendered, and the event cannot be bound. 
  • Also removed an incorrect id on the Transfer person button that caused duplicate element ids to exist in the markup.

 

Add materialise people group users tooling and extend the limited API to allow partial refresh (#146057)

Problem

  • The people group materialisation queue is flooded with queue requests, causing the materialisation process to take excessively long. The distribution to other services also causes extreme delay.

 

Solution

  • Add SQL and orchestration tooling to materialise/sync people group users across environments and wire through API flags.
  • Add stored procedures and types: JobProfiler.GetRulesetPeopleGroupsForMaterialisation, JobProfiler.PeopleGroupIdList (TVP), and JobProfiler.SyncMaterialisedPeopleGroupUsers to select, prepare and merge materialised people group users.
  • Add RecalculateMaterialisedPeopleGroupUsers.ps1 and task XML to orchestrate fetching people-group users via the JobProfiler API, batch processing, and calling the sync proc (supports preview mode, batching and logging).
  • Update gRPC proto (people_groups.v1.proto) to include always_recalculate and bust_cache request fields and pass them through in PeopleGroupsServiceV1. 
  • These changes enable controlled synchronisation of materialised people-group users, with options to force recalculation and bust cache, plus a PowerShell orchestrator to run the process and preview changes before committing.
  • Powershell script
    • Fetch the people groups to process for all rulesets or a specific ruleset.
    • Choose all active people groups or only the people groups that have an unprocessed log in the materialised data log queue.
    • Using the limited people group users API, refresh the calculated people group user. Bust the Redis cache 
    • Process the people groups in batches of 150 to keep the CPU and memory used limited
    • Materialise each ruleset's users at the end using a merge statement

 


Organisational Structure

Resolved org structure not expanding on roles (#145942)

Problem

  • Missing logic on the tree view and node expanding within the people group modal

 

Solution

  • Added implementation and missing events and structure to match that of the org structure, to allow expanding events and data to be loaded