Version 9.1.202.2 (Support Release - 7 January 2026)
System Access
Update email confirmation logic for user import and update to allow a user without an email to log in (#142626)
Problem
- A user without an email address cannot log in because the email has not been confirmed
Solution
- In ImportUsersCommandHandler, email is now considered confirmed if the user has no email address
- In UpdateUserCommandHandler, email is always marked as confirmed
- These changes ensure consistent handling of email confirmation status during user import and update operations
Imports
Remove duplicate self-service settings in validation when importing users (#142626)
Problem
- Cannot import users when ESS settings are duplicated in the DB
Solution
- This pull request addresses the issue of duplicate entries in the `SelfServiceSetup` table and improves the handling of required fields in the user details validation logic. The most important changes are as follows:
- Removes duplicate rows in ESS settings, keeping only the most recently edited entry for each unique combination of `FieldSection`, `FieldId`, and `RulesetId`.
- Updated the construction of the `requiredFields` dictionary in `UserDetailsValidationService.cs` to ensure unique combinations of `FieldSection` and `FieldId` are included, preventing issues caused by duplicate settings.
Performance Management
Resolved KPI not being able to delete (#143253)
Problem
- Primary contract bool value not being sent through, which caused an invalid object
Solution
- Add a change to pass through the primary contract's bool value
People Management
Re-add transfer person JS logic (#143186)
Problem
Solution
- Re-add it
Fix materialisation when a people group has not materialised before | Fix regression bug on people termination (#136729)
Problem
- When materialising people groups and the list of people groups to materialise is empty, it only materialises for people groups that have already been materialised in the past.
Solution
- When the 'forceSync' parameter is true, refresh for ALL people groups on the ruleset (if an empty people group was received).
- Still, only materialise people groups already materialised when 'forceSync' is false.
- PLUS Other issue picked up while testing:
- Termination broken due to a regression bug.
- A new field was added to a model used in a query in the job profiler, but the query was not updated, which results in the query breaking, meaning ultimately, people cannot be terminated anymore.
- Updated the model to make use of auto properties instead of a constructor, which makes it easier for Dapper to map the query result to the model.