Skip to main content

Version 9.1.217 (23 March 2026)

People Management

Fix adding Employment History opens blank modal (#146276)

Problem

  • Adding Employment History opens a blank modal 

 

Solution

  • Hook the button click event on the document to ensure the event is always bound

 

Resolved Dashboard work anniversary date (#143995)

Problem

  • On the dashboard, the work anniversary is using a custom calculation and not the same method as the people dashboard uses

 

Solution

  • Updated method being used, as well as including the start date in the company as requested to be used, should it have a value

 

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 on 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)
    • 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

 


Report Builder

Added authorisation checks when running reports to ensure that the user has report permission (#146156)

Problem

  • Although the report permissions are enforced on the front end and only display the available reports that the user has access to, should the user have the URL or report ID for any other report, they can still run and view the report.

 

Solution

  • Cache user report access and perform validation when running a report to ensure that the user has the required access.

 


System Access

System Menu target audience not being able to select any values (#146218)

Problem

  • When linking people groups in the System Menu, existing (previously saved) items were not displaying as checked checkboxes after reload. Instead, they appeared as either

 

Solution

  • Always render the checkboxes, as the existing linked target audiences can not be interacted with.

 


Performance Management

KPI and KPA tooltips causing styling issues (#146000)

Problem

  • KPIs and KPAs tooltips are currently causing incorrect styling for Review Setup Templates

 

Solution

  • Removed jQuery tooltips, added, as they conflict with MDB tooltips, also added a title tag to the KPIs to ensure the tooltips are displayed.

 

Ensure Bulk Recalculation Errors are properly logged, and the batch status is correctly updated (144245)

Problem

  • When bulk recalculations fail due to an unhandled exception, the batch status remains unprocessed, and the items don't indicate the failure. 

 

Solution

  • Ensure bulk recalculation failures are properly logged and status updated. Also had to change how the datatables are destroyed/cleared, which has changed with the latest versions.

 

Template tooltips display as text and cause incorrect page styling (KPAs) (#146000)

Problem

  • When editing a review setup template and providing a KPA with a very long name, the tooltips display without hovering over the text, causing incorrect page styling.

 

Solution

  • Added the on-hover tag to the HTML element to ensure it only shows when the user hovers over the ellipses.

 

Template tooltips display as text and cause incorrect page styling (#146000)

Problem

  • When editing a review setup template and providing a KPI with a very long name, the tooltips display without hovering over the text, causing incorrect page styling.

 

Solution

  • Added the on-hover tag to the HTML element to ensure it only shows when the user hovers over the ellipses.

 


Data Warehouse

Adjusted PowerShell scripts for ContentManagement (#143697)

Problem

  • The PowerShell scripts did not run successfully on the file server due to authentication errors

 

Solution

  • Adjusted PowerShell scripts to use SQL Auth so that they can be run within SQL Job instead

 

Renamed the DataSource name from "User Access" to "Invalid User Access" (#136620)

Problem

  • The data source name User Access for audit is not efficient

 

Solution

  • Renamed the DataSource name from "User Access" to "Invalid User Access" within the Data Dictionary

 

Added RulesetID within lmReportCards (#144417)

Problem

  • Field RulesetID is required within lmReportCards

 

Solution

  • Added field RulesetID within lmReportCards

 

Created DWH Package backup folder (#143175)

Problem

  • Currently, there is no DWH backup of the package for the case of rollback

 

Solution

  • Created DWH Package Backup folder
  • Added the current DWH package to the newly created folder

 

Added fields ProfileName and LineManagerProfileName (#144930)

Problem

  • Fields ProfileName and LineManagerProfileName are required within accUsers and jpReportingLines

 

Solution

  • Added field ProfileName within accUsers
  • Added field LineManagerProfileName within jpReportingLines

 

Added fields YearName, GradeName and CycleName within lmReportCards (#144417)

Problem

  • Fields YearName, GradeName and CycleName are required within lmReportCards

 

Solution

  • Added fields YearName, GradeName and CycleName within lmReportCards

 


Job Management

API Endpoint returning inactive employees (#146082)

Problem

  • API Endpoint returns terminated employees.

 

Solution

  • Modify logic to ensure only employees with active appointments are being returned.

 

ListOrgUser endpoint returns Children Org users (#145915)

Problem

  • The ListOrgUser Endpoint returns the children of the searched org as well.

 

Solution

  • This is not the intended behaviour of this endpoint, corrected the logic so it only lists the org which was searched for and not levels below this org.

 


Learning Management

Resolve TinyMCE warning displayed and editor disabled on absent notification email modal (#146211)

Problem

  • When attempting to send absent notifications, a warning is displayed, and the tinymce editor opens. 

 

Solution

  • Explicitly state the GPL licence key usage on the React editor component. 

 


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.

 


Communication Portal

Resolved Notification message still referencing old table (#146107)

Problem

  • Changed mad to rename tables and structure, but the notification query was not updated to reference the new tables 

 

Solution

  • Updated the reference tables to correctly call the new tables

 


Notifications

Update example data for anniversary notification, resolve problem with tinymce editor injecting current address before placeholder, Show "No placeholder" message when placeholder table is empty (#145927)

Problem

  • TinyMCE editor injects the correct relative path into the Source of image, example data for images are not correct, and when the list of anniversaries is empty, the placeholder is still shown in email instead of replacing it with No Birthday list. 

 

Solution

  • Update example data for anniversary notification, resolve problem with tinymce editor injecting current address before placeholder, Show "No placeholder" message when placeholder table is empty

 


Translations

Updated translations (#145685)

Problem

  • Tenant Setup | Hover over any of the Product icons on the list page. The message at the bottom of the pop-up should be changed.

 

Solution

  • Updated the message to the desired text: "Licences not displayed inherit from the CORE Licences". Used AI to translate the updated message to all available languages.

 


Event Scheduling

Add translations for error:learningManagement.eventScheduleIncorrectWhoCanBookType (#145966)

Problem

  • No translation existed for error:learningManagement.eventScheduleIncorrectWhoCanBookType 

 

Solution

  • Add translations for error:learningManagement.eventScheduleIncorrectWhoCanBookType Also, add .cursor-pointer style globally and explicitly