Skip to main content

Version 9.1.272 (9 November 2026)

General

Add people group switching to pending access page (#158054)

Problem

    Cannot switch to another people group when the user has no access  The user must retry every so often to see if the user is calculated The differential of people group check only the first load of Edit

     

    Solution

      Pending access page now shows the active people group and lets users switch to another shared group via a new SwitchPendingAccessPeopleGroup action (local retry URLs only). The page auto-retries every 10 seconds with a visible countdown. The bypass TempData key is now a shared BypassKey constant. A new IsBypassActive helper keeps a per-user, session-backed bypass window so the check survives across requests. The appoint-existing-user step no longer sets All People as the active group. Also adds unit tests for IsBypassActive and updates the pending access message and labels in the en-GB, en-US and en-ZA locales.



      HR Processes|V9-Identity and Authorisation

      Re-add Landbot authorisation that was removed during a merge (#157325)

      Problem

        Some users spend a lot of time using Landbot/Signibot, which causes the access token used to authenticate Landbot to expire while they are still busy.

         

        Solution

          Changes were previously made to allow an expired access token to be authenticated. This was reverted because it would require updating each Landbot bot manually. It was then changed to be optional, but that change was lost during a merge. 

           


          HR Processes

          Unable to approve some items where I am not able to approve others as a Fallback Approver (#157955)

          Problem

            Later approval levels could remain unclickable when the same approver appeared at multiple levels.

             

            Solution

              Updated the fallback tab to allow access as earlier levels are completed; awaiting verification in the application. 



              Identity and Authorisation

              Ensure that when the ruleset ID is not available during the authorisation process, the user is forbidden to continue (#152148)

              Problem

                Identity is throwing an unhandled exception during /connect/authorize when an unauthenticated request does not contain a usable ruleset value. Instead of returning a controlled authorisation or validation response, AuthorizationController throws while appending the Identity. Ruleset cookie, producing 1197 unhandled request failures.

                Solution

                  This pull request improves the validation logic for the ruleset ID in the Authorise endpoint of AuthorizationController. It now checks that the rulesetId is a valid, positive integer before proceeding, and returns a proper error response if the validation fails. This helps prevent unauthorised or malformed requests from being processed.


                  Resolved translation (#157541)

                  Problem

                    Generic translation is used and not descriptive of the next steps

                     

                    Solution

                      Request to add a more descriptive translation



                      Job Profiler

                      Added label for Group fallback approvals (#157950)

                      Problem

                        Where an approval falls back to People Group, there should be an indicator that this is a group, as it is when a People Group has been deliberately set on an approval level.

                         

                        Solution

                          Add label for People Group fallback approvals



                          Learning Management

                          Add filter to make creation of attendance more robust and prevent unique DB constraint exceptions (#152146)

                          Problem

                            System.ArgumentException: Bulk operation completed with some errors: Id 0: Cannot insert duplicate key row in object 'LearningManagement.Attendances' with unique index 'IX_Attendances_AttendanceDate_StartTime_EndTime_UserId_ClassSubjectGroupId'. The duplicate key value is (2026-10-14,

                             

                            Solution

                              This pull request improves how attendance items are processed in the CreateUpdateAttendancesCommandHandler by deduplicating attendance entries before creating or updating records. This ensures that only the most relevant attendance entry per user and time slot is used, preventing duplicate records and potential data inconsistencies. Attendance item processing improvements: Deduplicated AttendanceItems in the request by grouping on AttendanceDate, StartTime, EndTime, and UserId, and selecting the most relevant entry (preferencing those with non-zero Id and latest in the list). Updated logic for creating new and updating existing Attendance entities to use the deduplicated list, ensuring no duplicate attendances are processed.



                              HR Process Automation 

                              Request to add name and surname part of dialogue title for auto doc (#158128)

                              Solution

                                Request to add Name and surname to the dialogue title and not just username when breaking out from onboarding



                                People Groups|V9-Learning Management

                                Delete Subject People Group When Subject Is Deleted (#157900)

                                Problem

                                  When a Subject is deleted, the linked PG should also be deleted.

                                   

                                  Solution

                                    Ensure PG is deleted when Subject is deleted.



                                    People groups

                                    Filter user people group permissions on active people group (#156932)

                                    Problem

                                      When a people group is inactive, it can still be linked to a user with permissions. When a people group already linked to a user becomes inactive, the user can still use the people group on the people group dashboard and see it on the people group permissions page

                                       

                                      Solution

                                        Limit the list of people groups to only active people groups. When a people group is inactive, do not show it on the user screen or people management dashboard even though it is linked to the user



                                        Performance Management

                                        Resolved internal evaluation list of users' performance (#155620)

                                        Problem

                                          The controller pulled all the data of the ruleset and then sent that list of user IDs to fetch only the email data; this could be well over 20k+ records

                                           

                                          Solution

                                            Added a change to return the email part of the materialised data and removed the second gRPC call; also implemented paging to be used so that it does not return all 20k+ records, as this mapping affects the gRPC response size


                                            Corrected translation for identity register page (#157960)

                                            Problem

                                              Translation was just showing the path and not the actual translation

                                               

                                              Solution

                                                Corrected in the Translate method, as during page navigation the translation library can get lost, so reload to populate


                                                Implemented fix for jQuery table clear (#158072)

                                                Problem

                                                Clicking Link Item accessed DataTables’ private property oFeatures.bServerSide, which was undefined in the running version, causing the JavaScript error.

                                                 

                                                Solution

                                                  Removed the manual clearing code and used ajax.url(ajaxUrl).load() to reload the items. Selected items are cleared before loading to prevent selections carrying over between sections.


                                                  Added missing delimiters for userIds in bulk action (#155047)

                                                  Problem

                                                    The subtext on the UI makes use of more possible delimiters that are being used in the gRPC to actually split

                                                     

                                                    Solution

                                                      Added the missing delimiters


                                                      Resolved People group user status and to be used in PM (#157660)

                                                      Problem

                                                        When a user’s status changed, a people-group refresh only updated their status in the groups being refreshed. This could leave the same user showing as Active in some groups and Terminated in others.

                                                         

                                                        Solution

                                                          The refresh now updates the affected user’s status across all their existing people groups, keeping it consistent. The date rules remain unchanged: a user stays Active on their last service day and becomes Terminated the following day.

                                                           

                                                          Fix review Period header for My Agreement not aligned (#157981)

                                                          Problem

                                                            Review Period header for My Agreement not aligned

                                                             

                                                            Solution

                                                              Fix styling to ensure aligned Co-authored-by: William



                                                              Report Builder

                                                              Set General Category as default and correct copy functionality on ruleset creation (#157840)

                                                              Problem

                                                                General category needs to be set as the default and first category. When creating a new report, General should be the 1st option returned. When copying Category Masterdata to a new ruleset, DisplayOrder is set to 0 for all categories

                                                                 

                                                                Solution

                                                                  Migration to add missing General category and amend display order. Change report folder category selection to order by DisplayOrder. Ensure displayorder and default category values are set when master data is copied.


                                                                  Corrected tooltips showing nonstop after hover (#157956)

                                                                  Problem

                                                                    Two tooltip systems were responding to the same editor buttons, causing the tooltips to stay visible after you moved your mouse away.

                                                                     

                                                                    Solution

                                                                      Updated the page so only the editor’s own tooltip system handles those buttons. This should allow the tooltips to disappear normally.


                                                                      Resolved the export on count of subreport console errors (#155593)

                                                                      Problem

                                                                        Exporting the count modal from View Report failed because its export data was missing the header and footer structures required by the Excel exporter.

                                                                         

                                                                        Solution

                                                                          Added the missing structures in view-subreport.js, matching the working editor export. Excel export now generates successfully.



                                                                          System Access

                                                                          Correct mapping for user dates (#150818)

                                                                          Problem

                                                                            InvalidOperationException in JobProfiler UserQueries.GetUserDatesAsync — UserDatesPreview record type missing parameterless constructor for Dapper materialisation

                                                                             

                                                                            Solution

                                                                              This pull request refactors the UserDatesPreview record in UserViewModel.cs to use an object initialiser style with properties instead of positional parameters. This change improves code clarity and future extensibility. Refactoring for clarity and extensibility: Changed UserDatesPreview from a positional record to a record with init-only properties for Birthday and WorkAnniversary, allowing for more explicit property initialisation and easier future modifications.


                                                                              Align 2FA lock period with password failure lock period (#156908)

                                                                              Problem

                                                                                The lock period on 2FA is longer than the password lock. Causing unexpected wait periods

                                                                                 

                                                                                Solution

                                                                                  Align the lock period of 2FA with the lock period of password failure for consistency