Version 9.1.229 (25 May 2026)
Notifications
Fix monthly nth weekday Quartz scheduling (#148903)
Problem
- Quartz does not support multiple monthly nth weekday cron values in one expression, such as MON#1, WED#1. This caused RefreshQuartzSchedules to fail when a schedule selected multiple weekdays or weeks of the month.
Solution
- Split those monthly nth-weekday combinations into separate Quartz triggers under the same grouped job, so each trigger has a valid single # cron expression while preserving the existing schedule processing behaviour.
[People Groups][Admin User][Org Grouped Condition] Summary not showing any persons after having added an Org Condition to a new People Group (#148926)
Problem
- Even though I am expecting to see a list of 7 persons to show on the page, there are none. I have also tried to remove an employee from a long-time existing People Group, and that person is also not removed from the Summary as expected.
Solution
- Move the search button on the notification schedule tools page
[Notification Schedules] Add Schedule Name on the JobDataMap column data (#148855)
Problem
- Please, can the schedule name be displayed somewhere on the details under the JOBDATAMAP column? This will help in finding schedules a little more easily.
Solution
- Move the schedule name and ruleset id's first in the job map to assist the tools page
Safely fail ruleset detail retrieval failure when the ruleset provided does not exist (#148474)
Problem
- Query to retrieve ruleset details fails silently when no information is returned due to a deleted Ruleset, always expecting 1 record. This, in turn, bubbles up to NotificationCommandHandler, which also subsequently fails but repeatedly does this for the same ruleset for each template.
Solution
- Safely handle the Ruleset detail query to return the first or default. And throw with a proper RPC exception. On the notification handler, moved the ruleset detail fetch outside of the template foreach loop to prevent multiple queries for the same information. And wrapped in a try catch when RPC fails, then log accordingly.
Implement changes to the check-in started email to be triggered on a daily schedule only on the day the check-in period starts if the objective setting phase has been approved (#149007)
Problem
- The check-in email sends out without replacing all the linked placeholders. Updating the seed data on R1 does not propagate to other rulesets
Solution
- Update the notification system to improve the handling and content of "Check-In Started" notifications. The main focus is on updating recipient placeholders, email templates, and the logic for copying data, ensuring that notifications are more accurate and flexible. Additionally, some SQL and API changes improve the accuracy of notification triggers and data returned.
Resolved Recipient Code for HR Fallback Template (#148823 & #148435)
Problem
- The HR Approval template used a recipient who had a different event from the template event. When a template had already been propagated, the master data job updated it by resolving the recipient only from recipients already linked to existing propagated templates, which caused it to keep the old recipient instead of switching to the newly propagated fallback recipient.
Solution
- Created a new recipient and updated the template to use the new recipient ID. Changed MasterDataRepository so the template update path resolves recipients the same way as the add path, first by matching the propagated recipient ID from all available target recipients and only then falling back, because this allows historical propagated templates to correctly move to the new recipient without breaking the existing propagation behaviour.
Implement a couple of suggestions on the notification quartz schedule tools page (#147877)
Solution
- Filter schedules displayed on the tools page to the selected ruleset.
- Implement search functionality on the tools page
Corrected send test email disabled (#148529)
Problem
- The send test email button selector was bound to a textarea that is only enabled when a text change occurred
Solution
- Incorrect logic handling, as the send test email button can be used regardless of text changes
Resolved placeholders not being able to add to the cursor position (#148613)
Problem
- Placeholder insertion worked correctly for standard text inputs like the subject fields, but not for the email body because the email body uses the (new)Syncfusion rich text editor rather than a normal textarea. When the user clicked the placeholder dropdown, focus moved away from the editor and its internal text selection was lost. As a result, when the placeholder was inserted, the editor no longer knew the user’s caret position and defaulted to inserting at the beginning of the content.
Solution
- The rich text editor wrapper was updated to track and preserve the editor’s current selection range while the user interacts with the content area. Before inserting a placeholder, the saved selection is restored so the editor inserts the HTML at the user’s last cursor position instead of at index 0. The existing placeholder insertion call in the notification page script was left in place, while the supporting selection save/restore behaviour was added to the shared Syncfusion editor component.
Resolved schedule time being shown (#148778)
Problem
- When turning the repeat task on for a schedule, but there is still a value greater than 0, it shows on the grid view that the schedule is part of a task
Solution
- Added a bool check part of the condition to show the time
Resolved start and end date not being shown (#148609)
Problem
- When a schedule is set to start today, with an end date and saved, when opening the schedule for editing the following day, no value is shown, due to the mindate being set to the current date, which invalidates the previous value selection
Solution
- Add a change to set the mindate for the enddate to startdate, and remove mindate for start date
Report Builder
Resolve issue with data sources not displaying on My Report Builder (#149094)
Problem
- Clicking on a data source when building a report does nothing, but an error is shown in the console logs.
Solution
- Fix query returning user data source access
Resolved reports being imported that can not be viewed (#148820)
Problem
- Reports get imported correctly, but once imported and opened to view, it throws a forbidden error
Solution
- Add a cache bust when a report is imported and added
Performance Management
Resolved PM Query with new replication Library (#149112)
Problem
- Moderation query joined previously to the materialised user to get the position code and position title, which has been removed
Solution
- Corrected SQL join to the new replication library to get the correct position code and title
Resolved templates not saving when updating (#148114)
Problem
- When a template is opened for editing, a new perspective is added and then saved. The template was saved correctly in the database, but when it was loaded again, the query rebuilding the template structure grouped items only by the level 3 item ID. If the same KPI existed under different perspectives or KPAs, those rows were incorrectly merged during reload, so the newly added perspective appeared to be missing even though the save had succeeded.
Solution
- Change the reload query logic to group by the full composite key of level 1, level 2, and level 3 item IDs, which preserves each perspective/KPA/KPI combination as a distinct template item when the template is reopened.
Resolved styling on pill buttons (#148916)
Problem
- Pill items have a lot of padding on the dashboard, and reduce the size to match people management
Solution
- Adjusted padding on the button for the performance management dashboard
Fix error when creating contract survey (#148763)
Problem
- Getting error snack when creating contract survey, but survey information is captured and displays when reloaded.
Solution
- Fix incorrect parameter mapping on state update, causing the error snack to display. Don't allow clicking on the survey dial if a contract does not yet exist to prevent additional errors when trying to create a survey without a contract record.
Fix Mandatory Comment toggle not hidden when editing review period (#148757)
Problem
- When updating a review period item and re-opening the same item on the modal, the mandatory comment toggle is shown. Should only show for Surveys.
Solution
- Resolve the issue where a mandatory comment is set for the review period when not required, causing the modal to display an input field.
Fix Mandatory Comment label on review survey not clickable (#148496)
Problem
- Mandatory Comment toggle on Review Survey is clickable, but the label is not
Solution
- Ensure that clicking the Mandatory Comment label also toggles
Ruleset Management
Resolved Tenant/Ruleset creation errors (#148872)
Problem
- Ruleset materialisation has been removed from all services. During the creation of a tenant/ruleset, an integration event is executed, and all consumers have been removed except the account which sends an extra request to each service to create master data items and relevant information. In those checks, an existing check is called to see if the ruleset exists, does not create any and steps over, which in this case is no longer valid as replication immediately creates a record
Solution
- Remove checks and create a new global check in the account consumer to ensure the ruleset has been replicated correctly before sending to services
Left align Ruleset Id (#148162)
Problem
- For a dt-type-numeric class, it right-aligns the text for the table
Solution
- Added a text-start class to left-align when the table renders
Resolved styling on Tenant Rulesets (#148162)
Problem
- The Ruleset ID column is too wide
Solution
- Added width to minimise the 2 columns displaying
Job Management
Added new replication articles (#140903)
Solution
- Implemented 3 new tables/articles for replication, and added the Libraries for use
Master Data
Resolved Reset on Items of Master data not triggering (#147949)
Problem
- On the Master Data items page, the reset action did not fully clear the active filter state when a filter type, such as SectionItemType, had been applied through the global search/filter UI.
Solution
- The items page script was updated so that both reset entry points clear the page-specific filter state, restore the default sort state, and reload the items view without the stale query or filter values. This is now aligned with the reset behaviour on the master data index page
People Management
Resolved Unauthorised access on dashboard insight people modal (#143187)
Problem
- On Insights, a change was made to make use of the same modal as people management to manage a person. Now, when opening insights, without having the correct permissions and checks, it throws an error
Solution
- Adjusted the query to implement the same flow logic as people management to ensure the user can be managed and accessed
Resolved styling on Summary View indication (#148928)
Problem
- No clear indication of which item is selected
Solution
- Corrected styling and added JavaScript for Ui toggle on class
Fixing profile picture upload bug (#148107)
Problem
- Newly uploaded profile pictures are not automatically selected by default when saving. When cancelling an upload, the previous upload attempt is not cleared correctly. The banner list scrollbar responds slowly, causing a delay when scrolling.
Solution
- Updated the upload process so that newly uploaded images are automatically selected by default. Improved the cancel functionality to correctly clear previous upload attempts and improved scrolling.
Updating Advanced search filter positions to job title (#148365)
Problem
- In People Management → Advanced Search, the label “Position” may be unclear or inconsistent with other terminology used in the system.
Solution
- Updated the label from “Position” to “Job Title” for improved clarity and consistency.
Resolved SQL timeout exceptions on large datasets (#148844)
Problem
- The query was timing out because paging was being applied after a wide, heavily joined result set had already been built and sorted, so later pages became increasingly expensive as the SQL query had to process far more data than was actually needed for the page being returned.
Solution
- The query was reworked to page against a much narrower intermediate result first, and only then join the extra user, org, manager, and company-date details, which reduced the amount of data being sorted and joined and produced the large speed improvement.
Data Warehouse
Updated DWHDataIntegrityReport to align with the latest Materialised changes (#142737)
Problem
- The DWHDataIntegrityReport needs to align with the latest Materialised changes
Solution
- Updated DWHDataIntegrityReport to align with the latest Materialised changes
Updated TenantManagement_ETL to align with new Materialised changes (#142737)
Problem
- The package fails currently due to new Materialised changes
Solution
- Updated package TenantManagement
Imports
Corrected handling for empty org codes on the PaySpace integration (#148414)
Problem
- When the parent org code is empty on PaySpace, the user import gives an error.
Solution
- Added better handling for when the org code is empty on PaySpace.
Event Scheduler
Adding eventScheduler tabs to pageMappingHelper to fix the userGuide Button (#148927)
Problem
- A null reference error occurs when clicking the help (?) button on the Event Scheduler pages, including List View, Calendar View, and QR Code View.
Solution
- Updated the page mapping helper to ensure the User Guide modal receives the required page information when opened from the Event Scheduler pages.
Improve styling on the calendar view (#149001)
Problem
- The Calendar View expands when a user zooms out on the page to see the Book Yourself button
Solution
- Improve styling on the calendar view by adding a proper flex layout instead of hard-coded height values. This led to weird issues, where on small screens the calendar did not show a scrollbar, along with the selected event on the right.
Resolve issue where future-dated sessions are not persisted (#148716)
Problem
- On an event when adding multiple future-dated sessions, the dates in the state are not correctly updated to the selected value. When clicking on save, the initial set dates from the state are selected and submitted, and on reload, the chosen dates no longer reflect. Cannot replicate this locally, only happens on k8s environments
Solution
- Changed the input handler to on change and added normalisation to the date selected value.
Identity and Authorisation
As a user receiving a notification, I want the URL to have my Theme URL bug fixes (#148379, #148423 & #148490)
Problem
- The reset password page does not use the theme from the link, but rather the default ruleset theme.
- Theme not shown correctly when the user clicks on the link in the email
Solution
- Ensure that the reset password page uses the theme key from the return URL, resulting in the correct theme displaying on identity.
- Ensure that the return URL in the confirmation link contains the current theme(of the approver) and ruleset code
Moving terms of use link and removing some notes on system access (#148294)
Problem
- On the login page, the Terms of Use and Privacy Policy links are not positioned as required. In addition, on Ruleset Setup → System Access, the footnote stating “If blank then … will be used” is misleading, as no link is displayed when the URL is left blank.
Solution
- Moved the Terms of Use and Privacy Policy links to display below the SSO options on the login page. Removed the incorrect footnote from the Terms of Use, Privacy Policy, and Uptime Monitor link settings to ensure the UI reflects the actual system behaviour
Resolved MS login for multiple email addresses (#147592)
Problem
- When there are multiple users with the same email address in identity, it immediately fails external (Microsoft) login. For Rulesets (Clients) reusing email addresses, new active users can not sign in due to an old user still referencing that email.
Solution
- Add a new change to try to fetch the correct user based on the latest active appointment
HR Processes
Add hidden field support (#147849)
Problem
- With new recruitment development on HR processes, "Id" fields are part of the request body, which is not very user-friendly.
Solution
- Add setup for "hidden fields", so that certain fields for an hr process can be hidden from displaying to the user. Note, also improved performance on the position select 2 for approval levels, as I noticed the page started to get slow when the modal is open
Adding the eye icon on Historical Approvals (#148303)
Problem
- On Historical Approvals, items can be opened and viewed, as there is no visual indicator on the card.
Solution
- Added a view (eye) icon to the card on Historical Approvals to indicate when an item can be opened and viewed, aligning with the behaviour shown in Historical Requests.
Translations
Updating My Profile on navbar to preferences (#148306)
Problem
- The label “My Account” does not accurately reflect the purpose of the page and may be unclear to users.
Solution
- Updated the label from “My Account” to “Preferences” to better represent the functionality of the page
Communication Portal
Resolved styling for add button container (#137794)
Problem
- When the hover shows the 2 selection items, it pushes the button upward within its container instead of overlaying it
Solution
- Correct CSS styling to overlay the button with the menu items
Organisational Structure
Assign incumbent data and correct position data (#148701)
Problem
- Under org structure edit, position data seems to display incumbent data, and incumbent data is all marked as 'undefined'
Solution
- Assign the incumbent data its value and correct the position data