# Version 9.1.203 (19 January 2026)

#### **System Access**

##### Update email confirmation logic for user import and update to allow a user without an email to login (#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**

##### Change Import Modal to only fetch import status and available imports when opened (#138821)

**Problem**

- Currently, on every page, navigation checks are done on the import status being retrieved

**Solution**

- Change to only load the import status when being opened

---

#### **Job Management**

##### Resolved positions not loading the correct filter type (#140550)

**Problem**

- When job profiles are loaded, icons indicate the count of vacant, filled and inactive positions, but once clicked, it results in all positions

**Solution**

- Implement new development to list positions based on the filter type

##### Resolved sanitise text on reporting line (#142578)

**Problem**

- The title of the span is being set and used from JavaScript to set the modal title. When the title of the modal is set, it gets set with the encoding values when HTML is rendered

**Solution**

- Add a change to set the modal title as raw text to not be encoded

---

#### **Report Builder**

##### Resolved data source width expand and console error on invalid ajax json (#140432 &amp; #141369)

**Problem**

- On Firefox, the expand click event did not trigger from SVG find, script issue on Firefox that does not allow inline events CSP\* Console errors being logged when JSON is passed, which is HTML for partial views

**Solution**

- Add a change to rather just check for class collapse, move the event handler to the JavaScript file. Add a change on ajax.ts to handle JSON to not parse, should it be HTML and rather warn than error

##### Resolve issue where race condition on Ruleset creation prevents initial user from materialising on ReportBuilder (#140410)

**Problem**

- When a new ruleset is created, the ruleset creation is requested on each service sequentially. However, the user is copied to the new ruleset as soon as the ruleset is created, and then the SingleUser event is emitted, which informs all other services to materialise the user. This creates a race condition where the SingleUser create event reaches ReportBuilder before the ruleset creation has happened, and because of the foreign key relation between the materialised user and materialised ruleset table on RB, the user creation fails, and the first ruleset user is never created.

**Solution**

- Added additional functionality on the RulesetCreation on ReportBuilder, after the ruleset has been materialised, to check if there exist materialised users and then fetch all current users for the ruleset from Account Service and materialise them immediately

---

#### **Performance Management**

##### Reload page when user contract is deleted (#142780)

**Problem**

- Page reloads only if an additional contract is deleted

**Solution**

- Add a change to reload the page after the primary contract deletion

##### Resolve issue where bulk actions are not displaying all users (#142546)

**Problem**

- On bulk actions, the list of people displayed on the select list does not include all the available users, because only the first 20 users are filtered out when fetching details from JobProfiler, and then those with contracts or for the review year setup aren't all returned.

**Solution**

- Change functionality to the first page for users from performance management, then after selecting job details. Fixed the load more / load all functionality

##### Add loading indicator when creating contract (#142777)

**Problem**

- When creating a contract for a review setup, no loading indicator

**Solution**

- Add loading indicator

##### Resolve order of review setup names (#141701)

**Problem**

The order causes the numeric values to be incorrectly ordered, for example, Setup 1, Setup 10, Setup 2

**Solution**

Add change to the comparison to take numbers into consideration

---

#### **Identity**

##### Enhance MFA process with option to remember (#134730)

**Solution**

- Add change and enhancement to the MFA process. Add input to allow ruleset to change the number of hours to remember MFA, should they wish

---

#### **People Management**

##### Optimise user org path queries and improve appointment selection when calculating people group users (#142962 &amp; #142233)

**Problem**

- A user with an active and future-dated appointment has an incorrect future status in the calculated people group, and the user is excluded from the TA where it is used.

**Solution**

- Refactored user org path queries to use temp tables and bulk copy for efficiency, and improved appointment selection logic to better prioritise current appointments. Updated related PeopleGroups queries and gRPC service to handle distinct user IDs and avoid unnecessary queries.

##### Fix uploading profile image, causing user banner to be removed (#142688)

**Problem**

- Uploading a profile image causes the user's banner to be removed.

**Solution**

- Use the existing profile image if one is provided.

##### Fix banner not updated if you upload a new one (#142688)

**Problem**

- If you open the modal to change a person's banner and/or profile image and then upload a new banner image, that banner image will not be set as the new banner image for the person. The first time you select it, nothing will happen, but if you select it a second time, the banner is updated.

**Solution**

- Return uploaded banner image details and set them so that they can be used when the image is saved.

##### Remove functionality to copy profile image and avatar for transferring the user to the ruleset (#142521)

**Problem**

- Profile image and avatar should not be copied to the new user with transferring the user to a new ruleset

**Solution**

- Remove functionality to copy profile image and avatar for transferring the user to the ruleset

##### Resolve search and collapse problem on Orgnode tree on transfer person to ruleset modal, and prevent transfer of user with same ID number in destination ruleset (#142696 &amp; #142694)

**Problem**

When searching for organisations, the treeview populates duplicates. Able to transfer a person with Idnumber that already exists on the destination ruleset

**Solution**

Resolve the search and collapse problem on the Orgnode tree on transferring a person to the ruleset modal. Prevent transfer of the user with the same ID number in the destination ruleset

---

#### **Notifications**

##### Cannot send a list of CC or BCC recipients via the external email API (#142336)

**Problem**

- When more than one CC or BCC email address has been configured on V8, V9 do not send any emails

**Solution**

- Correct the concatenation of the list of emails to allow the SMTP service to process them

---

#### **Data Warehouse**

##### Implemented Performance Improvements within PerformanceManagement\_ETL.dtsx (#140865)

**Problem**

- Performance Improvements are required within the SSIS Package PerformanceManagement\_ETL.dtsx due to the growth of system data and the DWH Package

**Solution**

- Removed the DELETE and Truncate Steps and replaced them with Update and Inserts for the below Data Sources: pdmContracts, pdmContractSurveys, pdmContractPeriods, pdmContractPeriodActionPlans, pdmContractPeriodSectionItems, pdmReviewYears, pdmContractPeriodEvaluations, pdmReviewYearPeopleGroupsSetup, pdmContractPeriodSectionItemModerations
- Adjusted steps for Custom fields calculations/insert for pdmContracts and pdmContractPeriods to only do this for active Contracts/ContractPeriods

##### Added new Join between jpAppointments and jpJobProfiles (#142103)

**Problem**

- Join are required between jpAppointments and jpJobProfiles

**Solution**

- Added Join between Appointments and JobProfiles for Report Builder

##### Implemented Performance Improvements within LearningManagementReport\_ETL.dtsx (#140865)

**Problem**

- Performance Improvements are required within the SSIS Package LearningManagementReport\_ETL due to the growth of system data and the DWH Package

**Solution**

- Removed the DELETE and Truncate Steps and replaced them with Update and Inserts for the below Data Sources: - lmAttendances - lmReportCards

---