Version 9.1.252 (7 September 2026)
AutoDoc
Ensure the admin only receives emails for active employees (#154866)
Problem
- Admin received a reminder for an outstanding document for a terminated employee
Solution
- Ensure the user and the admin are both active
Performance Management
Added recompile to PM query (#155012)
Problem
- SQL Server was reusing a cached execution plan that was poor for some parameter values, causing parameter sniffing performance issues.
Solution
- Added OPTION (RECOMPILE) to the main query so SQL Server builds an execution plan per execution using the current parameters.
Resolved spyscroll on Contract with Nav and content sections (#154486)
Problem
- The ScrollSpy used a fixed 310 px offset, causing navigation items near the middle of the content pane to be highlighted instead of the section displayed at the top.
Solution
- Changed ScrollSpy to track sections at the top of the pane using a 100 px tolerance. When the pane reaches the bottom, it switches to a bottom fallback so the final section can still be highlighted. Also added a new utility class to keep contained and split for easy debugging and reference
Changed historical graph year order and fixed the graph when 100% rating (#154846)
Problem
- Historical Score Graph with full rating hides score at the top
Solution
- Ensure rating is not hidden when rating is 100%
- Change the Order of Historical Score Graphs
Additional fixes in calendar TypeScript to address the month selector not working. Ensure previous calendar functionality still functions (#154485)
Problem
- Previous fixes to calendar controls worked, but caused incorrect behaviour on the month picker, and focus was diverted when clicking on the year picker.
Solution
- Reworked the calendar input to ensure that all calendar controls function (paging arrow, month dropdown, year scroller, date selection). Ensured that the calendar displays docked to the relevant input.
Fixed inconsistent date formatting on review year setup phase dates (#154466)
Problem
- When editing performance year period phase dates, depending on user culture, the formatting can be inconsistent between right after change and on load / reload.
Solution
- Ensure that the date inputs are correctly formatted to ISO for save operations and to user culture for display purposes.
Resolved issue where paging to next date on calendar input caused other calendar inputs to focus (#154485)
Problem
- When more than 1 calendar input exists on a modal, paging to the next month causes other input to be focused and its calendar to be opened. MDB focus trap moves focus to the first input and opens that picker.
Solution
- Added a guard to prevent focus transfer and ensure that the calendar stays docked to the correct input.
Communication Portal
Resolved styling on portal header (#155024)
Problem
- Left-aligned the unread message count label and the “MARK ALL AS READ” button
Solution
- Added a change to styling to align context flex start
Removed border radius from button (#154525)
Problem
- When the form is being synced to save on the client, it accesses the control .data(), now this only accesses those values it was rendered with or created, but if a value is updated on an existing item within the other file, it sets the .dataset.{} value, which is not read
Solution
- Added change to access .dataset properties
- And corrected and ensured that the same variables are used for btn-primary and btn-secondary
Added backdrop shadows for comms portal and system message (#154521)
Problem
- When opening the Communication Portal modal, the background behind the modal is not greyed out.
- When opening a System Message on the Communication Portal, the Communication Portal modal is also not greyed out.
Solution
- Added a backdrop to the comms portal
- Added backdrop to System message modal centered and changed the z-index of the different backdrops
Resolved DateTime differences (#154595)
Problem
Solution
- Added a fix to convert back to UTC when saving and, when showing, convert again from UTC
Set default width starting point of banners (#154511)
Problem
- Gantt chart overlaps with the banner list
Solution
- Added a change to increase the default width
Added client-side validation for system alert dates (#154902)
Problem
- A recent change was added where validation within the controller restricted certain values and threw a snack error message, but a suggestion was requested to add client-side validation to display a span text
Solution
- Add jQuery client-side validation that matches to show the span error message
Added change to active search users (#134821)
Problem
- Terminated users could be searched
Solution
- Added a change to the Users view to only return active appointment users
Implemented suggestion to move carousel buttons (#153514)
Problem
- Carousel prev and next got lost within the banners; moved them to the bottom right
Solution
- Added CSS to move the prev and next of the carousel to the bottom right
Resolved Load more on recipients (#153972)
Problem
- Load more does not work correctly as the start increases, but in the query it does a skip of start * size. Requested to add a navigate back before search
Solution
- Resolved the load more to not try to append load with previous results - just load the next page size so only increase number
- Added navigation back
Resolved Audience being created without dates (#153519)
Problem
- Could save an alert without a valid start and end date selected
Solution
- Added a check within the controller to ensure values are selected
Implement standalone Communication portal page for the mobile app (#154022)
Problem
- The communication portal is a modal and thus cannot be opened in a webview on the mobile app.
Solution
- Open the communication portal in a standalone page that the mobile app can open
Data Warehouse
Resolved errors where the records were not inserted in the correct order for jpHRProcessRequestData and jpHRProcessRequestPivotData (#154850)
Problem
- The records were not inserted in the correct order for jpHRProcessRequestData and jpHRProcessRequestPivotData
Solution
- Resolved errors where the records were not inserted in the correct order for jpHRProcessRequestData and jpHRProcessRequestPivotData within the Insert Staging Steps
Resolved an issue with jpReportingLines where the latest records were not refreshed (#154796)
Problem
- The latest jpReportingLines did not refresh within the DWH
Solution
- Resolved an error within the insert step for jpReportingLines to ensure that the latest records are inserted
Added field PersonInPosition within jpJobPositions (#153622)
Problem
- Field PersonInPosition needs to be added within jpJobPositions
Solution
- Added field PersonInPosition within jpJobPositions
Imports
Import Sage profile images (#148015)
New functionality:
- This change adds a PowerShell process that imports employee profile photos from Sage into Signify.
- It can run automatically every day through Windows Task Scheduler.
- Developers can also run it manually to preview which employees and photos will be processed before starting an import.
- How it works
- Retrieves employee photos from Sage.
- Filters the results by the configured company and company rule.
- Selects the latest photo for each employee.
- Safely ignores identical duplicate Sage records.
- Stops when duplicate records contain conflicting photos.
- Uploads photos to Signify in small batches.
- Records successes and failures in timestamped log files.
- Returns a failure exit code when a scheduled import does not complete successfully
Correction to import of custom fields (#154641)
Problem
- Import fails when new users and existing users are imported that have custom fields
Solution
- This change makes improvements to the `ImportUsersCommandHandler` in the Account service, focusing on better error reporting and ensuring proper entity detachment during user import operations.
People Management
Fixing tables not loading after using the breadcrumb back button (#153690)
Problem
- After using the Back button, the relevant tab is displayed, but its data is not refreshed or displayed.
Solution
- Updated the page onload event to make the correct data call and update the correct table. Additionally, updated the URL when switching tabs so that a page reload uses the current tab instead of the previously selected tab.
Correct schema selection for table relationships, only show recycle bin when user has delete profile permission, prevent deletion of useractions (#151416)
Problem
- Recycle bin shown when user does not have delete profile permission; UserAction table records also deleted for user.
Solution
- Correct schema selection for table relationships, only show recycle bin when user has delete profile permission, prevent deletion of useractions
Make Delete and Merge Profile permissions disabled by default (#151415)
Problem
- Merge and Delete module permissions should be disabled by default
Solution
- Add migration to make Delete and Merge Profile permissions disabled by default
Report Builder
Add a " No results found" message on data source field search (#154857)
Problem
- On Report Builder data sources, when no results are returned for the field name search, all sources are shown with no indication as to why
Solution
- Added small span text to indicate no results were found
Notifications
Fallback to from email of default ruleset when current ruleset's user own smtp setting is off (#154837)
Problem
- From email of the current ruleset is displayed even though the user's own SMTP setting is off.
Solution
- Fallback to the From email of the default ruleset when the current ruleset user's own SMTP setting is off.
- This brings it in line with the email template page default From email that is displayed.
API
Add endpoint to terminate user (#153656)
Problem
- There is no endpoint to terminate a user.
Solution
- Add an endpoint and function that takes Username, terminationDate(in format yyyy-MM-dd) and terminationReason(takes a string and matches it with the termination reasons for that ruleset in JobProfiler.TerminationReasons) and terminates the user.
Organisational Structure
Resolved delete tooltip not showing (#153241)
Problem
- The delete icon was missing the class in which it was identified to register the tooltip
Solution
- Added the missing class
Master Data
Resolved Single Global Admin can not access master data (#153620)
Problem
- When a single admin is given, a user can not see the master data
Solution
- Added a check to ensure that if the user has the single role admin and the manage master data permission, they can see all
Job Profiler
Fix ListUserJobProfileInherentRequirements EvidenceQuery alias (#154786)
Problem
- The SQL selects from an alias that was not set
Solution
- Ensure the alias is correct