# Version 9.1.234 (15 June 2026)

#### **People Management**

##### Fixing 0px width on modal data table (#150848)

**Problem**

- Table headings are rendered in a 0px-wide div.
- This causes them to become unreadable.

**Solution**

- Recalculate the data table width after loading data to prevent this issue from occurring.

##### Updating NoticePeriod type to decimal (#148364)

**Problem**

- The Notice Period field does not allow decimal values to be saved. Users should be able to enter values such as 0.5 for two weeks and 0.25 for one week.

**Solution**

- Updated the NoticePeriod data type from integer to decimal and configured the frontend number input to support decimal step values.

##### Add materialise interaction for new user created (#150725)

**Problem**

- When a new user registers or is created, they are not added to the all people group

**Solution**

- Call the materialisation service for the new user to be added to all people

##### Replacing position filter with job title filter on advanced search (#149108)

**Problem**

- Request to update the position filter to a job search filter.

**Solution**

- Updating the advanced search multi-select to have job titles and not positions.
- Updating search functions and queries to also filter on job title instead of position.

---

#### **Communication Portal**

##### Fixing incorrect join (#150862)

**Problem**

- Query joins the user table with HrProcessRequestApprovalFiles table, userid = username

**Solution**

- Fix the join so that it is done on username to username

---

#### **Learning Management**

##### Auto-save only V8-imported marks (#150858)

**Problem**

- When a teacher opens the marksheet, the system automatically imports any new scores that came across from V8 and saves them.
- Today, auto-save also re-saves every other mark on the sheet, even marks that didn't change.
- The business rule for this feature is "only auto-save the marks received from learner records" - everything else on the sheet should be left alone until a person clicks Save.

**Solution**

- The auto-save now sends only the marks that V8 actually imported, and only for the students those marks belong to.
- Marks that already existed in V9 are left untouched.

---

#### **Performance Management**

##### Ensure Activities, Measures, Ratings subsections are hidden on ratings modal when empty (#150987)

**Problem**

- When a KPI has no activities, measures or ratings, the subheaders for the items still display.

**Solution**

- Ensure that when either has no data, the header is not shown

---

#### **Data Warehouse**

##### Added custom step to remove certain Performance Management DWH data (#149539)

**Problem**

- Certain V9 Performance Management data needs to be removed from the DWH

**Solution**

- Added a custom step to remove certain Performance Management DWH data

---

#### **System Access**

##### Improve the auth sign-out when accessing the system with a support URL or when the refresh token expires, and the user is not allowed to continue (#139977)

**Problem**

- Reusing the support URL does not sign the user session out, but just continues on the previous session.
- Using the support login Microsoft Auth sometimes redirects the user to signify login rather than authenticating on Microsoft.
- When the refresh token expires, the user is not properly signed out, and the session persists indefinitely
- When the user is signed out, the SignalR hub generates a lot of errors due to the session not existing, and the user ID claim could not be determined.

**Solution**

- SupportLogin 
    - fix form submission so the clicked provider button is preserved — track submitter, use form.requestSubmit when available, and add hidden-input fallback; also, minor JS variable cleanup.
- AuthorizationController 
    - centralise sign-out logic into SignOutExpiredSessionAsync (sign out SignInManager, OpenIddict scheme and delete Identity.AuthenticationProvider cookie) and replace direct HttpContext.SignOutAsync calls when handling expired/missing sessions.
- AppController 
    - Set the impersonation cookie explicitly to "True" and perform an OpenID Connect sign-out with a redirect back to Home instead of a simple HttpContext.SignOutAsync.
    - Ensure that when a support URL is used, the user starts with a clean session.
- UserNotificationHub 
    - guard group add/remove calls with an authenticated check to avoid operating for unauthenticated users.
- Misc 
    - remove unused System.Globalization usings and reorders/adjusts using directives in affected Identity pages.

---

#### **Content Management**

##### Fix: Image Compression does not work as an API (#140481)

**Problem**

- Image compression does not work for API requests, and the client gets unauthorised even though the API request was sent with a bearer token with the correct header.

**Solution**

- Modify the authorisation on the endpoint to accept "Bearer" as well as "Cookies", as there is a frontend page which uses this controller action

---

#### **Ruleset Management**

##### Resolve issue where deleted People Groups are still considered part of Menu Item Target Audience (#150039)

**Problem**

- When a People Group is linked to a menu item and that People Group is then deleted, the menu item shows no linked TA, but the menu is not displayed for any users.

**Solution**

- Excluded deleted People Groups when retrieving menu item-linked target audience People Groups.

---