Version 9.1.189 (13 October 2025)
Tenant Management
Tenant Subscriptions (#137663)
Problem
- When the Core package is included in a Pay as you Use subscription (included by default), Standard Reports are excluded on renewal
Solution
- Include Standard Reports in the Core subscription of Pay-as-you-Use clients
Notifications
Check-In deadline for Final Review (#137902)
Problem
- Terminated users are included in the recipient list for PM deadline notifications.
Solution
- Exclude users who do not have an active appointment from being included in the results of contracts that are approaching their deadline.
Training Intervention import does not show progress on the Imports tab (#134550)
Problem
- Integration Imports are not logged on the Notification Imports view:
- Cost Descriptions
- Training Interventions
- Pathway Groups
- Training Intervention Costs
Solution
- Included a logging mechanism for these imports on the Learning Management Module
Ruleset email configuration (#136875)
Problem
- Email from address is case sensitive
Solution
- A small update was made to the email validation logic in the `EmailSetupViewModel`.
- The regular expression previously used for validating email addresses has been replaced with the built-in `[EmailAddress]` attribute, which provides more robust and standardised validation.
- Replaced the custom regular expression for email validation with the `[EmailAddress]` attribute on the `FromEmail` property in `EmailSetupViewModel.cs` for improved accuracy and maintainability.
Identity and Authorisation
Tenant Creation Stuck (#137965)
Learning Management
Assignment Management: Assessment Score to Pull to Marksheet (#137841)
Problem
- When a learner's score on the Marksheet has been captured and overridden, the assignment score is added additionally to the response, resulting in 2 scores being returned.
Solution
- Corrected the conditional check determining whether to use the score imported from the assignment or the overridden score.
Data Warehouse
Training Matrix - Refresh (#137719)
Issue 1:
Problem
- Not all the lmEmployeeTrainingRequirementsMatrix are being added due to the date filter within the script
Solution
- Adjusted the source script to return all non-deleted Training Requirements Matrix within DataSource EmployeeTrainingRequirementsMatrix
Issue 2:
Problem
- The source query for EmployeeTrainingRequirementsMatrix will not return all the data due to the Date filter logic
Solution
- Adjusted source query for lmEmployeeTrainingRequirementsMatrix to return TrainingRequirementsMatrix data for the current year
Request for access rights matrix (#137643)
Problem
- New Datasource is required to store UserPermissions data
Solution
- Added new Datasource jpUserPermissions
People Management
Save button disabled and Show default to be selected on open when ruleset does not have its own Virtual Tour (#137844)
Problem
- A check is done, which does not allow the user to save a virtual tour if there are no slides added, which can lead to the user not selecting DO not Show virtual tour and save
Solution
- Remove the logic check done for slide count and change the visibility default selection to show default, as this is the default rule.
More descriptive error to be shown when saving a Tour without slide details (#137846)
Problem
- When adding a new slide with no content and saving, in the backend, this throws an exception as the body HTML is needed, but it is not a descriptive error
Solution
- Implement logic check on the controller with the correct text error being returned
Tour shows after having set it to not show again (#137801)
Problem
- When saving a virtual tour from the culture selection, it takes the user's signed-in locale instead of the selected locale
Solution
- Correct the locale that is used to save the virtual tour
Add employee address & Work location (#137612)
Problem
- The client wants to add the employee's address and physical work location to the placeholders so that it can be used in the auto-docs contract setup.
- Currently, they have to type it in manually for each employee
Solution
- Implement additional placeholders relating to user address details
Theme Management
Hanging banners not shown correctly (#137802)
Problem
- When the primary colour is of a very light hue, the resulting tertiary colour exceeds 100% lightness and gets converted to white (#ffffff).
Solution
- Add handling to ensure that the lightness/desaturation never exceeds 100% V9 Portion
Performance Management
Text Sanitation Changes '&' to '&' (#132912)
Problem
- On the review setup template, the names were still not sanitised
Solution
- Add the new tag helper to sanitise text
Translations
Language selection duplicated on drop-down (#135774)
Problem
- Language options are shown in duplicate on the Login screen.
Solution
- Remove duplicate language options from the language list returned from cache
Date picker format remains on English (SA) when changing to English (US) (#135930)
Problem
- Date formats in localstorage was not updated immediately after changing language and logging in. This happened because a cookie was used to determine whether the date format was changed and if it should be updated in the local storage. But the cookie was set in the app controller, just before the user is authenticated, meaning it could not retrieve the correct language from the user claim (as it does not have access to the claim yet as the user is not authenticated), resulting in the fallback language being used, resulting in the incorrect date formats being calculated.
Solution
- Rather set the date format cookie in the home controller (where the user is authenticated) and update the local storage directly from the cookie value (not necessary to retrieve manually anymore) if the cookie values was changed.
Auto-Doc
Username not pulling through (#137664)
Problem
- Username placeholders in document templates display incorrect date values instead of the actual numeric usernames. This probably affects several places in the codebase because the cause is a commonly used method
Solution
- Added a conditional check to respect the `parseOADates` parameter in the `ToSignifyDateTime()` method.