Skip to main content

Version 9.1.251 (7 September 2026)

Ruleset Management

Resolve the resource exhaustion error when error logs exceed 1000 (#154679)

Problem

  • Resources are exhausted when error logs exceed 1000; the current 5000 limit is unnecessary for on-screen analysis.

 

Solution

  • Reduce the returned error logs to the last 500 logs

 

Session does not expire (#152563)

Problem

  • User session never expires, and it is difficult to know when it will expire.

 

Solution

  • This solution introduces significant improvements to session management, token lifetime configuration, and user experience around session expiry. The changes ensure that session expiry is consistently enforced and communicated across the backend and frontend, and that refresh token lifetimes are configurable and respected throughout the application stack.
  • Session expiry has been added to the footer of the profile drop-down.
  • The warning message shows from 30min before the session expires every 5min and then again 60s before the session expires to warn the user of the session expiry.

 


People Management

Fix inconsistent subordinate count (#153718)

Problem

  • Subordinate count displays inconsistently

 

Solution

  • This was due to the query joining to the incorrect column. Ensures that it joins to the managerId column, correcting the count 

 

Ensure the user, when not authorised to edit appointments, does not receive a 405 screen (#154695)

Problem

  • When a user is not allowed to edit appointment history based on the people group access, the user receives a 405 error rather than getting notified of the not authorised exception.

 

Solution

  • This change updates the way unauthorised access is handled in several actions within the PeopleController.
  • Instead of returning a generic Unauthorised () response, the controller now provides user feedback via a localised error message and redirects the user back to the appropriate edit page or tab.
  • This improves the user experience by making authorisation failures clearer and guiding users back to relevant pages.

 

Fix squashed tooltip on People Management Data sources tooltip (#154698)

Problem

  • With numerous data sources linked to the category and the tooltip displayed, the popover content is squashed and the text overlaps. 

 

Solution

  • Correct styling on the popover to ensure that tooltip text does not overlap and the popover size is updated correctly. 

 

People with birthdays not available on the People dashboard. Unable to edit a user's profile when a unique ID number is active (#154605)

Problem

  • Birthday saved with a time component.
  • Filter criteria on the People Management dashboard incorrectly filter on birthday 
  • When a unique ID number is active, saving on the profile screen incorrectly validates for the user itself 

 

Solution

  • This change focuses on improving date handling and filtering logic across several user query endpoints, as well as ensuring consistent date-only comparisons in both application code and SQL queries.
  • Additionally, it introduces a minor scheduling fix for bi-weekly notifications.

 

Add Allow HID for iframe to allow signature pad connection (#154099)

Problem

  • Signature pad does not want to connect when trying to sign an assessment document from within V9 

 

Solution

  • Add Allow HID for iframe to allow signature pad connection

 

Improve large data source tooltip layout and positioning (#154378)

Problem

  • Large data source tooltips displayed all items in a single column, causing the popover to exceed the screen and briefly overflow while positioning.

 

Solution

  • Display large tooltips across a maximum of four columns, dynamically increasing the column size for larger lists and constraining the popover to the viewport.

 

Adding breadcrumb when redirecting to update people group view (#153690)

Problem

  • When opening one of the Event Scheduling People Groups and clicking Back or Cancel, the system navigates the user to Custom People Groups instead of returning to Event Scheduling People Groups.

 

Solution

  • Added the appropriate breadcrumb action so that the Back button in the ribbon redirects the user to the correct tab on the People Groups page.

 

Permanent deletion & merging of user profiles (#111732)

New functionality features:

  • Create additional permissions to delete and merge profiles
  • Delete a person's profile from the Grid View
  • Merge a person's profile from the Grid View
  • Add a Recycle Bin to the filters to see the deleted profiles
  • Have a summary of the merge on a person's profile

 


Performance Management

Add Dapper type handler for Section enum (#154345)

Problem

A bunch of PM queries are failing because Dapper cannot map the custom "Section" enum automatically

 

Solution

Add a Dapper type handler globally for PM so that it can map the enum properly in queries 

 

Resolve DataTables error on Review Setup page (#154694)

Problem

DataTables warning is displayed when loading the Review Setup admin page, and template information is not displayed.

 

Solution

Resolve issue on review setup templates query handler breaking due to enum conversion. 

 

Updating global modal margin (#154465)

Problem

Navbar was set to be in front of the modal overlay. This causes the modal header to be rendered behind the navbar. 

 

Solution

Update modal margin so that the modal is always rendered below the navbar.

 

Resolve issue where on Single Approval Final Rating button text not displaying correctly (#154484)

Problem

On single participation (Manager only) review setups, when the manager has completed ratings, the button still only displays Rate for the Final Rating phase. It should reflect Final Rating, the same as with Dual Participation

 

Solution

Correct the Rate button label to display Final Rating for Single Participation

 

Resolve edge case scenario where unapproved score differs from approved score due to decimal precision (#154439)

Problem

When the unapproved score is calculated, the score can work out to more than 4 decimals in precision depending on the score and weight distribution. This leads to a 0.01 difference in some instances displayed on the front end, due to the 4-decimal rounding not being applied until the rating is saved. (Enforced by DB precision).

 

Solution

When calculating the score for the Contract Period, ensure that 4-decimal rounding is always applied.

 

Add a PM historical graph (#148639)

New functionality features:

Styling of the Review Year button 

Add a new button to access the historical scores for myself

Add a new button to access the historical scores on the Overall Summary of the Managers Dashboard 

 

Setting when Dual Participation is inactive to have only Final Rating (#148703)

New functionality features:

When dual participation is not selected, have an option to select whether only the Final Rating should be completed

Include this rule on the Agreement Import

 


Data Warehouse

Moved SystemAlerts to the Communication category within ReportBuilder (#154598)

Problem

The SystemAlert data sources were in the incorrect Category within the ReportBuilder 

 

Solution

Moved SystemAlerts to the Communication category

 

Merged ES with TS within stored procedure C_03798_99999_reportCustomUserUsage_2026 (#152566)

Problem

The count for Event Scheduling needs to be included within Training Scheduling 

 

Solution

Merged the Event Scheduling count with Training Scheduling within the stored procedure C_03798_99999_reportCustomUserUsage_2026 

 

Updated jpAppointments step to use Delete/Insert instead of Update/Insert (#142737)

Problem

The jpAppointments Update step did not update existing fields as expected

 

Solution

Updated the jpAppointments step to use Delete/Insert instead of Update/Insert

 


AutoDoc

Add SendReminders to ListUserDocumentsPreviewQueryHandler, fixing the query (#154703)

Problem

SendReminders missing from query, causing page load to break

 

Solution

Add SendReminders back to the query 

 

Fix Create Document item on Kebab menu is disabled (#154060)

Problem

The grid rendered before ruleset settings loaded, so Extended Core defaulted to false and disabled “Create Document” incorrectly

 

Solution

Treat ruleset settings as unloaded initially and show loading until the real feature status is available 

 

User with no permissions sees enable Create Document menu item and can select a template before seeing unspecified error (#154125)

Problem

User with no permissions sees the Enable Create Document menu item and can select a template before seeing an unspecified error 

 

Solution

Ensure the button only displays when the user is an admin 

 

Special characters not displayed correctly on Create Document confirmation modal (#154136)

Problem

Special characters not displayed correctly on Create Document confirmation modal

 

Solution

Decode the username before displaying 

 


Communication Portal

Added image upload for system messages (#154601)

Problem

When adding an image to a system alert/message, the image is never actually uploaded.

 

Solution

Correctly handle uploads using the "Insert Image" control and pasting an image into the RTE.

 


Notification

Allow nullable Quartz simple trigger string props (154089)

Problem

Quartz simple-property triggers can store NULL string properties, but the generated Notification schema marked STR_PROP_* columns as required. This made it so that the Notification service did not successfully do its part during ruleset/tenant creation

 

Solution

Override the Quartz EF model so those string properties are nullable and future migrations align with Quartz runtime behaviour.

 

Implement SMS portal as a SMS provider (#153056)

Problem

An additional SMS provider with WhatsApp capability is required.

 

Solution

This solution introduces multi-SMS provider support (ZoomConnect and SMSPortal) into the notification system. The main changes include adding the SMSProvider enum, updating SMS setup commands and handlers to support provider selection, and modifying queries and models to store and return the selected SMS provider type.

 


API

Expose functions over api for event scheduling on the mobile app (#154097)

Problem

Certain event scheduling data is not available on the mobile app.

 

Solution

Expose certain functions as endpoints for the mobile app to use.

 


Report Builder

Bust report permission cache when copying a report. Improve report permission denied error notification (#154401)

Problem

When opening a copied report immediately, an empty snack message is displayed. The issue is that the report permission check is failing because the user permission cache is not cleared once the report is copied, and as such, the error is actually 403. 

 

Solution

Ensure the user report permissions cache is busted when report copy succeeds. Changed the auth failure to return a formatted 403 message and display a snack accordingly.

 


System Framework

Correct watermark that gets cut off on certain screen resolutions (#154033)

Problem

When cropping an image on a screen with higher resolution, the watermark is being cut off 

 

Solution

Correct the watermark that gets cut off on certain screen resolutions

 

Safari modal focus fix, Firefox sharing notification fix (#154033)

Problem

Firefox: sharing notification shown in screen capture; Safari: screen capture not focusing after capture

 

Solution

Safari modal focus fix, Firefox sharing notification fix

 

Resolve focus problem on Safari after screen capture (#153916)

Problem

Safari still not focusing

 

Solution

Resolve Safari focus problem

The finally block now calls window.focus() instead — reclaims OS/browser-level focus from Safari's native picker without depending on the modal's visibility.

unhideModalAfterCapture() now calls modalElement.focus() itself, right after restoring opacity/pointer-events — so the focus reclaim happens at the one point the modal is actually a valid, visible focus target again, and it's covered on every unhide path (success, error, and cancel) since they all go through this function.

 


System Access

The time displayed on the watermark is not the same as the default timestamp the screen capture is named with (#153224)

Problem

It appears the zip folder on display on the screen capture contains UTC.

 

Solution

Correct the timestamp on the watermark and zip file name, and correct the translation on the Email button

 

Session expiry notification does not dismiss (#153089)

Problem

When will the session expire? It shows 30 minutes before it expires on every page.

When the session expires on an SPA file, the page breaks on click.

 

Solution

Add checks to show the 5-minute warning only once every 5 minutes.

Add an auto-redirect to log out when the user session has expired.

 

Issue with error message translations when using Microsoft login (#152530)

Problem

Issue with error message translations when using Microsoft login; message shows translation path

 

Solution

Update external login translations to use TranslateAsync

 


Audit

Multiple entries created in the Identity audit table (#144811)

Problem

When changes are made to a user role on the System modules admin screen, 3 audit entries are logged in the Identity audit table. 
 

Solution

Resolve Audit entities getting lost or not always logging correctly