Skip to main content

Version 9.1.274 (9 November 2026)

General

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

Problem

  • Cannot swithc to other people group when user has no access The user must retry every so often to see if the user is calculated The differal 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

Readd 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 was previously made to allow a expired access token to be authenticated. This was reverted because it would require update each landbot bot manually. It was then changed to be optional but that changes was lost during a merge. This PR just reapplies those changes.




HrProcesses

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. Co-authored-by: William




Identity and Authorisation

Ensure when ruleset id is not availalble during the authorisation process the user is frobidden 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 authorization 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 Authorize 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 unauthorized or malformed requests from being processed.


Resolved translation (#157541)

Problem

  • Generic translation is used and not descriptive on next steps

Solution

  • request to add more descriptive translation




Job Profiler

Added label for Group fallback approvals (#157950)

Problem

  • Where an approval falls back on 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.




Onboarding

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

Solution

  • Request to add Name and surname to the dialog 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 groups permissions on active people group (#156932)

Problem

  • When a people group is inactive , it can still be linked to a user with permisions 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 in on the people group permissions page

Solution




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 userids to fetch only the email data, this could be well over 20k+ records

Solution

  • Added change to return email part of materialised 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 to Translate method, as during page navigation the translation library can get lost so reload to populate


Implemented fix for jQuery table clear (#158072)

Problem

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 make suse 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.




PerformanceManagement

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 new report General should be the 1st option returned. When copying Category Masterdata to 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 select 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 initializer 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 WorkAniversary, allowing for more explicit property initialization 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