Skip to main content

Version 9.1.226 (4 May 2026)

Communication Portal

Resolved Master Data deletion relation being slow (#147642)

Problem

Problem

SQL cursor performance issue checks every FK relation before attempting to delete the master data item 

 Solution

Solution

SQL improvement to minimise the cursor and a single select to determine any relations

 

Resolved red-dot appears after reading messages (#147066)

Problem

Problem

When a message is sent, the end user receives it, and there are local-storage checks to keep track so as not to always hit the database to refresh. But never reset when opening the modal to set the local key, even if the server/database side has been updated to read

 Solution

Solution

Corrected logic to update values when opening the modal

Resolved notification not being sent out (#147971)

Problem

    RecipientUserId is needed in the notification service, which the communication portal is not passing through 

     

    Solution

      Added a change to send through the userId for the recipientUserId

       


      API

      Ensure font fallbacks work on file conversion (#147982)

      Problem

      Problem

      The Docker file is missing some dependencies needed for font fallbacks.

       Solution

      Solution

      Add dependencies needed for font fallbacks to the Docker file. Also, improve the code for the fallback to be more robust.

       

      Add embedded fonts for sync fusion to use on the Linux server for docx to PDF conversion (#147982)

      Problem

      Problem

      Word (docx) files don't display content when converted to PDFs

       Solution

      Solution

      Add embedded font types to the Linux server for Sync Fusion to use in conversion. Also, remove previously added debug logs

      Fix successful logins logged as failed attempts (#147675)

      Problem

        When logging in successfully multiple times in quick succession, logins are blocked (successful logins marked as unsuccessful attempts)

         

        Solution

          Do a check to see if the login was successful, or if the successful login is being routed to the disclaimer required before logging the attempt

           


          Imports

          Serve PaySpace user export as a stream (#146311)

          Problem

          Problem

          Large payspace clients experience the following issueissue: StatusCode="ResourceExhausted", Detail=" Received message exceeds the maximum configured message size.") Multiple pull requests are also processed using unnecessary resources. 

           Solution

          Solution

          Change ListUsersExportPerDatePayspaceAnonymous to a server-streaming RPC and update server/client code to stream users in batches. The ExportData proto and ExportDataServiceV1 now stream UserExport responses (batched at 1000) and write each batch to the response stream. The Import API handler was updated to consume the async server stream from JobProfiler, aggregate users, and adapt logging to per-user transactions. Also injected IImportQueries and added a check to prevent concurrent PaySpace pull imports (logs a fatal error and aborts if an active import exists). Miscellaneous fixes: improved null-safety and mappings when building UserExport payloads and adjusted log messages.

          Improve Payspace performance when fetching employee positions and extend logging in Payspace implementation (#146311)

          Problem

            When pulling a large number of positions from PaySpace, it takes a very long time and fails. Logging is limited to debugging the PaySpace API calls and results

             

            Solution

              Introduce several improvements and refactorings to the PaySpace user details import flow, focusing on simplifying data handling, improving logging, and enhancing error/warning reporting. The changes include updates to proto files, removal of unnecessary dependencies, streamlining of collection operations, and improved logging for better traceability and maintainability. Reduce the fields selected from the position call and implement parallel tasks to speed up processing by 5

               


              People Groups

              Correct problem with user people group fetch excluding appointments that end on the current day (#147959)

              Problem

              Problem

              When a user's appointment ends on the current day, then no people groups are returned on which the user is a part of, resulting in no menu items being displayed.

               Solution

              Solution

              Correct the filter condition on the query to consider the end date of the appointment as inclusive.

               


              Dashboards

              Adding filter info and refreshing image list on upload and delete (#146695)

              Problem

              Problem

              Users are not aware that older banners still exist and can be accessed via the search field, as the list is now limited to 21 banners and older items are no longer shown by default. When new images are uploaded, they are automatically selected, which can result in more than the maximum of 5 banners being selected. In addition, uploads can cause the displayed list to exceed the 21-item limit. When images are deleted, the list may drop below 21 items, but older banners are not automatically loaded to fill the available space (where available).

               Solution

              Solution

              Added an information section at the bottom of the modal to inform users that older banners can be accessed via the search field. Uploads will continue to auto-select new images, but the oldest selected image will now be automatically deselected to enforce the 5-banner limit. Uploading and deleting images now trigger a refresh from the database, ensuring the displayed list remains accurate and up to date.

               


              Job Management

              Update default required fields for requisition HR process level actions (#142989)

              Problem

              Problem

              HRPRactitionerId should not be required for the post approval actions

               Solution

              Solution

              Remove HRPractionerId as required 

               


              Data Warehouse

              Updated AbsentAttendance for lmTermResults (#147669)

              Problem

              Problem

              AbsentWithExcuse needs to be excluded withinfrom the absent calculation

               Solution

              Solution

              Updated the Attendances calculation step to only select Attendances where itthey are equal to "Absent"

              Added a step to only fetch Attendancesattendance records for the current year

               

              Adjustments made within lmEmployeeTrainingRequirementsMatrix (#146700)

              Problem

              Problem

              The data is not refreshing as expected within the lmEmployeeTrainingRequirementsMatrix when using the date filter

               Solution

              Solution

              Adjusted the lmEmployeeTrainingRequirementsMatrix DWH Step to do a full refresh only in the morning, and skipping the staging table step

              Corrected the Update step for jpAppointments (#144482)

              Problem

                The Appointments did not update correctly due to how joins were implemented

                 

                Solution

                  Corrected the join to ensure that the existing Appointments are updated correctly

                   

                  Adjustments made within accPAYU tables (#147540)

                  Problem

                    RulesetID, RulesetName and SchemaID need to be added and populated within accPAYUSummary  The accPAYE tables need to be run and populated on the 21st of each month

                     

                    Solution

                      Added new fields RulesetID, RulesetName and SchemaID within accPAYUSummary  Adjusted Container package to execute on the 21st of each month  Adjusted the Cursor that it runs per DBName and SchemaID  Added fields DateFrom and DateTo  Resolved issue where #Totals needs to be done by using #TempOutputWithRowNumber  Corrected ActivityStart

                       


                      Master Data

                      Resolve template propagation for prior partial copies (#147828)

                      Problem

                      Problem

                      Some email templates are not copied to the newly created ruleset.

                       Solution

                      Solution:

                      Resolve the problem with partial job runs where templates wherewere not copied, preventing templates tofrom bebeing copied in subsequent job runs. Root cause:
                        newEvents, newRecipients, and newSchedules only contain items added in the current job run. If a prior run was partially completed (e.g. events/recipients were savedsaved, but templates weren't), these lists are emptyempty, and the existing fallback (existingEvent from template navigations) is also empty since there are no existing templates yet. Fix — both CopyRecipientsAsync and CopyTemplatesAsync:

                        1.

                        • Fetch all target-ruleset entities directly from the DB (allTargetEvents, allTargetRecipients, allTargetSchedules) at the start of each method.

                        2.

                        Merge those with newEvents/newRecipients/newSchedules into allAvailable* lists, deduplicating by Id to avoid double-entries.

                        3.

                        Resolve linked entities from allAvailable* first by PropagatedFromId, then fall back to a code/name match — this handles the partial-run scenario where PropagatedFromId lookup would have been the only path before.


                        Ruleset Management

                        Remove Google country api (#147832)

                        Problem

                          When opening the general table, a call is made to select the current user's country and then set the rulesets

                           

                          Solution

                            Remove the Google location API feature; the user must select the country themselves.

                             

                            Default decryption for clientSecret on the payroll model (#147782)

                            Problem

                              Connector execution fails due to failing decrypting of ClientSecrets

                               

                              Solution

                                Default decryption for clientSecret on the model itself, so it doesn't need to be manually decrypted

                                 

                                Correct theme generation due to flatdatepicker styles (#147900)

                                Problem

                                  The theme selected cannot be generated due to the flatpicker CSS in the site's Sass file.

                                   

                                  Solution

                                    Add support for the Flatpickr date picker library by including its CSS in the project. The main changes involve updating resource management and layout files to ensure the Flatpickr styles are available throughout the application.

                                     

                                    Add the dropdown-toggle class to the dropdown button and hide the caret that is automatically added (#146588)

                                    Problem

                                      The click event on the kebab (Actions) menu icon is no longer firing

                                       

                                      Solution

                                        Add the dropdown-toggle class to the dropdown button and hide the caret that it adds automatically 

                                         


                                        Organisational Structure

                                        Fix import creating duplicates (#147839)

                                        Problem

                                          When importing org nodes, blank intermediate org levels are incorrectly replaced with the root node name while building the org path. That produces paths like `Client0001 | Client0001 | Packaged Gases | Sales`, prevents matching the existing node, and can lead to duplicate org nodes being created.

                                           

                                          Solution

                                            Only fall back to the root node name for the first org level. Blank intermediate levels are skipped when building the org path, so the generated path matches the existing hierarchy, and the importer can reuse the correct node instead of creating a duplicate.

                                             


                                            Notifications

                                            As a user receiving a notification, I want the URL to have my Theme URL (#145940)

                                            Ensured that the following notifications take the current theme key from the user acting, which results in the notification:

                                              Welcome Notification Reset Password New Person Registered Approve Registration Request Registration Request has been approved 

                                               


                                              Learning Management

                                              Fix marksheet save and continue navigation (#147137)

                                              Problem

                                                When a user had unsaved marks and chose Save and Continue, the page sometimes tried to reload the current marksheet and move to the next page at the same time. That clash caused the screen to go blank, and the user lost navigation. 

                                                 

                                                Solution

                                                  The save process was changed so that, when the user clicks Save and Continue, the system now saves the work and then moves on directly instead of trying to reload the current page first. This prevents the blank screen and keeps navigation working properly.

                                                   

                                                  Fix translation for marks save error (#147342)

                                                  Problem

                                                    When someone tried to save marks, and a duplicate mark already existed, the system showed a confusing technical error message instead of a clear explanation.

                                                     

                                                    Solution

                                                      Updated the system so it now shows a proper user-friendly message for that save error, making it clear what went wrong instead of exposing technical text.

                                                       


                                                      People Management

                                                      Adding optional close on backdrop click to ManagePersonModal (#147824)

                                                      Problem

                                                        Remove the static backdrop and allow the user to close the modal by simply clicking away from it.

                                                         

                                                        Solution

                                                          Adding a boolean to give us the ability to toggle this functionality on and off, since this component is used on multiple different pages. Toggling it on for the People Management page.

                                                           

                                                          Ensure user session timeout can be set via configuration (#147837)

                                                          Problem

                                                            User session timeout is hard-coded to 20 minutes. 

                                                             

                                                            Solution

                                                              Get session timeout value from configuration/appsettings and also increase the default to 60 minutes

                                                               


                                                              Performance Management

                                                              Resolved master data searching Perspective (#147640)

                                                              Problem

                                                                When searching perspective, it results in data, but within the mapping, it fails due to the first check instead of returning a default value. Enum value being forced and throws. 

                                                                 

                                                                Solution

                                                                  Corrected returning type of tuple null, null

                                                                   

                                                                  Resolved check-in dial phases (#147902)

                                                                  Problem

                                                                    On the overall summary check-in dial can not be opened unless ratings have been confirmed, discussion resulted in removing the requirement that ratings should be completed. When a dial is clicked to view the ratings, even if the rating phase is no longer active, it can still be edited 

                                                                     

                                                                    Solution

                                                                      Removed ratings completed requirement. Added Check-Ins phase active check to pass through that ensures if the edit modal can be opened or not

                                                                       


                                                                      Event Scheduler

                                                                      Adding a badge to show your booking Reference number (#146254)

                                                                      Problem

                                                                        The system should show “Your Booking Reference Number” somewhere when clicking on an upcoming event

                                                                         

                                                                        Solution

                                                                          Adding a badge with “Your Booking Reference Number” next to the event heading/title

                                                                           

                                                                          Add more default booking reasons plus seed to other rulesets (#146251)

                                                                          Problem

                                                                            Limited booking reasons and master data are not seeded

                                                                             

                                                                            Solution

                                                                              Add more default booking reasons, plus seed to other rulesets