Skip to main content

Version 9.1.225 (4 May 2026)

People Management

Catching and handling error occurring when terminating inactive person (#146377)

Problem

Problem

When attempting to terminate a user without an active appointment, a “We’re Sorry” page is displayed. 

 Solution

Solution

A message is now shown instead, clearly explaining the issue without redirecting to the “We’re Sorry” page

Implement a unique field configuration on the ESS settings (#144890)

Problem

    Cannot define Username, Id Number, Passport Number, Employee Code, and Email as unique for the ruleset using ESS settings

     

    Solution

      Introduce enhanced uniqueness validation for user-related operations, ensuring that users cannot be created or updated with duplicate key identifiers (such as username, employee code, ID number, passport number, or email) within the same ruleset, according to the ESS setup's unique field configuration. The changes span updates to the data model, gRPC contracts, and command handlers to support this feature.

       

      Resolved transfer user data validation bug (#147063)

      Problem

        When the termination date is before the appointment date when transferring a user to another ruleset, the validation happens, but no message is displayed. The validation was appearing, but instantly hiding itself again.

         

        Solution

          Just ensured that the validation message is not hidden directly after being displayed.

           


          Data Warehouse

          Updated manual step for lmTermResults (#147814)

          Problem

          Problem

          Currently, the DWH will remove any entries within TermResults if the Average is equal to 0

           Solution

          Solution

          Updated manual step for TermResults by removing the delete step where the average is equal to 0

           

          Added step to update existing fields within Data Dictionary (#142732)

          Problem

          Problem

          Fields Selectable and Searchable are not available to select within ReportBuilder for JobPositionsJob Positions

           Solution

          Solution

          Update fields to be Selectable and Searchable for JobPositions within ReportBuilder

           

          Added step to remove duplicate entries within pdmContractPeriodActionPlans (#142737)

          Problem

          Problem

          The DWH table pdmContractPeriodActionPlans does contain duplicate entries based on how the source query is structured

           Solution

          Solution

          Added a step to remove duplicate entries within pdmContractPeriodActionPlans if the fields ContractPeriodActionPlanID, ContractID and ContractPeriodID are the same

           


          Job Profiler

          Future and past subordinates being returned (#146082)

          Problem

          Problem

          Subordinates are being returned for ListManagerSubordinatesAsync who are not active employees.

           Solution

          Solution

          They still had the CurrentPosition = 1 flag. Added the EndDate check for an appointment to filter on present appointments.

           


          Dashboards

          Updating Main Dashboard banner search functionality on Banner Modal (#146695)

          Problem

          Problem

          On the banner selection pop-up, having many banners causes the buttons to move off-screen. When scrolling to reach the buttons, the search bar is no longer visible. Large images can also make the page slow and unresponsive. 

           Solution

          Solution

          Updated the layout so the banner list is scrollable, keeping the search bar and buttons visible at all times.

          Search results are now limited to 21 banners for better performance.

          Selected banners will always be included in the results, along with any that match the search term.

          Results are ordered with selected banners first, followed by the most recently uploaded banners

           

          Adding a clear button to the search field (#146522)

          Problem

          Problem

          The search field does not have a clear button.

           Solution

          Solution

          Add an eraser icon to clear the search field

           


          Event Scheduler

          Changed ScheduleComponent event handlers to useCallback to prevent re-render errors (#146447)

          Problem

          Problem

          A blank calendar page appears after opening the "Multiple Event Booking" modal and then cancelling/closing it again.

           Solution

          Solution

          Improved how the calendar handles updates when opening and closing popups. This ensures the calendar stays visible and continues to display events correctly instead of disappearing or showing a blank screen.


          Tenant Management

          Adding session storage and restore functionality to global search (#142318)

          Problem

            On the Tenants page, search filters are not retained after editing a tenant. When returning to the list, all filters and paging are reset.

             

            Solution

              Added session storage support to the global search control, allowing filter to be preserved where required. This feature can be enabled per data table and is disabled by default. It has been enabled for the Tenants page, ensuring that filters(search terms) are restored when navigating back to the list. 

               


              Content Management

              Add functionality to convert HTML to Word and replace placeholders in a PowerPoint presentation (#145071)

              Problem

                Functionality required to update a PowerPoint presentation.

                 

                Solution

                  Added functionality to replace placeholders on a PowerPoint presentation. Also added a function to convert HTML to a Word document.

                   

                  Fix typos in document placeholder descriptions (#147637)

                  Problem

                    Some of the placeholders had typos in the translation description.

                     

                    Solution

                      Fix translation descriptions in placeholders

                       


                      Imports

                      Add additional unique field validation to pre-import validation (#144890)

                      Problem

                        Correct creation and update of unique user fields in import

                         

                        Solution

                          Refine the error messages for user creation and update failures in the `ImportUsersCommandHandler` to provide clearer and more accurate information about conflicts due to existing users. The changes clarify that the conflict is with another user and improve the details shown for matching fields.

                           

                          Implemented immediate employee sync (#143194)

                          Problem

                            When a new user is created, it is not immediately imported into V8 unless an entire import is kicked off 

                             

                            Solution

                              Added a change after a new user creation happens, create a user import for that username to V8

                               

                              Add additional unique field validation to pre-import validation (#144890)

                              Problem

                                When importing users with the same fields, that is still unique, it is still allowed

                                 

                                Solution

                                  Introduce a Unique flag on SelfServiceSetting and wire it through the validation pipeline to support uniqueness checks for Email, ID Number, Passport Number and Employee Code. Precompute per-field value counts and a uniqueFields map in UserDetailsValidationService, and add duplicate-value checks that emit validation errors when a field marked unique is duplicated. Update all SelfServiceSetting construction sites to pass the new Unique flag and adjust related method signatures. Add unit tests covering unique-field scenarios and update existing tests accordingly.

                                   


                                  Notifications

                                  Adjusted character count for masking rule (#147452)

                                  Problem

                                    Development was done to do character masking with 1 character count, request to do a 2-character count display

                                     

                                    Solution

                                      Added new rules to do character counts, should there be enough characters, 2 prefix shown, masked in between, and the last 2 characters are displayed

                                       


                                      Performance Management

                                      Change score when review setup and item not in use (#145198)

                                      Problem

                                        When a user has added a rating scale, they can not change the score, as there are business rules defined for this

                                         

                                        Solution

                                          Allow a user to only change the score on an item if the review setup has not been used within a contract, and add a safety check within the command to check that the review item has also not been used yet

                                           

                                          Resolve sanitisation problem by handling newlines properly for data table and textarea (#147709)

                                          Problem

                                            Break tags shown on the add/edit modal of KPI, KC review section items

                                             

                                            Solution

                                              Resolve sanitisation problem by handling newlines properly for the data table and the textarea. Items saved from the modal are saved with new line chars \r\n. The sanitiser converts these to break tags that display correctly on the data table. When opening this in the modal again, the breaks are shown in the text area. Added helper functions to replace breaks with newlines when opening the modal and vice versa when saving from the modal

                                               


                                              Workplace Assessment App

                                              Implemented new endpoint for Observation app to upload stream file content (#143882)

                                              Problem

                                                Endpoints created to allow the observation app to stream files, large files to service, due to http2 endpoints not being able to make public, normal http1 api transcoding takes place. But with large files, this causes timeouts and stream errors, for example, 60mb to be converted to a base64 string fails 

                                                 

                                                Solution

                                                  Added a new endpoint and proto to accept a streamed body file and use that to then send for the next method. Add a new app setting to allow/regulate the upload max file size

                                                   


                                                  Master Data

                                                  Resolved master data items being searched (#147640)

                                                  Problem

                                                    When searching for a master data item, the global search text is not passed through, resulting in no value sent to the master data service. This results in the top 50 records, where after those server results are returned to the page, it only filters client side from the 50, hence why not all records are returned 

                                                     

                                                    Solution

                                                      Add a correction to also search for the query string, as those values are not part of form data when posted from the jQuery table

                                                       


                                                      Learning Management

                                                      Log mark audit failures and incorrect audit table names (#147362)

                                                      Problem

                                                        Users could accidentally save duplicate marks on the Marksheet by clicking the Save or Inherit Marks buttons multiple times before the request is completed. This caused errors that were either silently swallowed or shown as a confusing technical message with no guidance on what to do next.

                                                        Solution

                                                          Duplicate prevention (frontend)
                                                            The Save and Inherit Marks buttons are now disabled while a request is in flight, preventing the user from submitting the same marks more than once. Duplicate prevention (database)
                                                              Two partial unique indexes have been added to the `Marks` table to enforce that a learner can only have one mark per assessment per cycle at the database level — a safety net even if multiple requests arrive simultaneously. Existing duplicate rows are cleaned up as part of the migration (keeping the most recently edited entry). A backup of the `Marks` table is taken before any changes are made. Meaningful error messages
                                                                When a duplicate mark is detected, the user now sees a clear message: _"A mark for this user already exists. Please reload the page to see the latest marks."_ All other save/inherit failures show the server's error details (if available), followed by "Please reload the page and try again."_ so the user always knows the next step. If there is no specific error detail, only the reload instruction is shown — no empty or generic filler text.

                                                                 

                                                                Add idle auto-save and unsaved changes warning to Marksheet (#147137 & #147138)

                                                                Problem

                                                                  When teachers or administrators are entering marks on the Marksheet, their work can be lost if they:
                                                                    Step away from their computer without saving Accidentally navigate away from the page or close the browser tab Get distracted and forget to click Save There was no safety net to protect unsaved mark entries, which could result in having to re-enter all the data again

                                                                    Solution

                                                                      Idle Auto-Save
                                                                        The system now automatically saves mark changes after a period of inactivity (defaulting to 5 minutes). If a user steps away or gets distracted, their progress is saved in the background without any action required. This behaviour can be configured or disabled via application settings. Unsaved Changes Warning
                                                                          If a user tries to navigate away from the Marksheet while there are unsaved changes, a clear warning message is shown asking whether they want to save, discard, or stay on the page - giving them full control and preventing accidental data loss.


                                                                          Communication Portal

                                                                          Resolved member count (#147597)

                                                                          Problem

                                                                            User count not returned for group discussions

                                                                             

                                                                            Solution

                                                                              Re-added count, and show loading indicator for internal use as well.