# Version 9.1.255 (28 September 2026)

#### **Performance Management**

##### Added bustable methods to queryable cache attributes (#155589, #155592)

**Problem**

- Missing bustable methods; cached values were being returned

**Solution**

- Added bustable methods to clear cached values

##### Implement event publish after loading the bulk action (#155511)

**Problem**

- When loading a bulk action, the action is never processed.

**Solution**

- This change makes a small but important update to the bulk action event-handling process.
- After adding and saving the integration event, it now ensures that all pending events are published through the event bus.

##### Added Kpi Name to evaluations (#155219)

**Problem**

- KPI name was not being rendered on the frontend, as well as a request to change the translation and remove the default KPI translation above each rating scale

**Solution**

- Added kpi name rendering, changed the translation and removed the removal of kpi translation

##### Fix review document handler logger dependencies (#155503)

**Problem**

- Opening Portfolio of Evidence files from KPA or KPI rows returns "Invalid identifiers" because the review-file handler cannot resolve its logger dependency.

**Solution**

- Use the registered generic logger in the affected review-file handlers and add dependency-injection coverage for all review-file query handlers.

##### Truncate Check-Ins label with tooltip when translation is long (#155250)

**Problem**

- On the performance dashboards, the "Check-Ins" label (on the check-ins dial, the check-ins count badge, and the "Check-Ins &amp; Ratings" accordion header) was previously changed to wrap onto multiple lines when the translation is long.
- Wrapping looked untidy inside the small circular dials and badges.

**Solution**

- Instead of wrapping, the label is now shortened with an ellipsis (…) when it does not fit, and hovering it shows the full text in a tooltip. Short labels look exactly as before.

##### Lock KPIs and add functionality to rate KPIs as an Admin (#153180)

**New functionality:**

- A new Performance Management permission is available
- Rate KPIs
- When creating a template, the following options are available
- Lock editing for person
- Lock editing for manager
- Lock rating for person
- Lock rating for manager
- For an admin with the permission, allow the option to be selected under the module-specific functions menu
- A new page is available where a KPI can be selected and rated

##### Performance Management Feedback Report (#150927)

**New functionality**

- Add a column to the Score Label Mapping to add text for achieving higher performance
- Add a toggle to enable the Feedback Report
- Show the report for the end-user

---

#### **People Management**

##### Allow documents to be previewed and updated (#152813)

**New functionality**

- Allow editing of uploaded documents
- Allow previewing of documents without having to download them 
    - Documents can be previewed
    - It converts the document to PDF and then uses the normal PDF viewer to preview it (same one used on auto doc)
    - Document types which can be previewed: Word, Excel, PDF, text files, and standard images

##### Change Merge and Delete permission translations to title case (#155330)

**Problem**

- Some People management role permissions are not in title case

**Solution**

- Change Merge and Delete permission translations to title case.

##### User Activity Tracker (#152090)

**New functionality**

- This includes activity on V8 pages and V9 pages.
- The HR automation pages in the Blazor project are not yet tracked.
- In order to make this more useful and assist with testing, I have added user activity under audit information of the user.
- Only the latest 200 activity records will be returned on the page.
- These are the business rules of the tracker 
    - It only starts tracking after the user stays on the page for 5 seconds (startDelay).
    - Once started, it sends: 
        - start once,
        - heartbeat every 5 minutes by default,
        - end when tracking stops.
- It tracks inactivity and will suspend after 20 minutes of no interaction.
- If user activity returns after inactivity suspension, it resumes with the same sessionId and sends a new start.
- It does not end just because the tab becomes hidden:  
    
    - on hidden: sends one heartbeat (prefers beacon), stops interval heartbeat;
    - on visible: sends heartbeat and restarts heartbeat interval.
- It ends permanently on page lifecycle exits (pagehide, beforeunload) and avoids duplicate permanent end events.
- It listens to activity events: mousemove, mousedown, keydown, click, touchstart, and scroll.  
    
    - heartbeat and end payloads are minimal (session + last seen + timestamp); start includes page/user context.
- Requests go to /App/ActivityTracker endpoints by default (StartTracker, Heartbeat, EndTracker), with base URL auto-derived if needed.
- For reliability, it prefers navigator.sendBeacon for exit/background sends, else falls back to fetch with keepalive: true.
- It includes an anti-forgery token (\_\_RequestVerificationToken) if present, both in the header and payload.
- Tracking errors are swallowed so user experience is not interrupted.

##### Add Person Profile Image Setting (#153139)

**New functionality**

- Enable or disable the ability for users to upload a profile picture, so that my company can prevent users from displaying a profile image if required
- Configure permission settings for updating profile pictures, so that I can decide whether employees or only administrators are allowed to change profile pictures

---

#### **System Access**

##### Correct external menu routing for additional services general and deep link types (#155499)

**Problem**

- General external pages return an error
- Deep link external pages do not correctly authenticate

**Solution**

- Updates menu URL generation to route AdditionalService deep links through encoded redirect paths, and adds explicit handling for MenuType.General to support external redirect/service links more consistently.
- It also broadens ruleset menu previews to include all external menu items, not only those missing an external code.

---

#### **Ruleset Management**

##### Resolve "Default Text" snack when toggling screen capture tool (#155038)

**Problem**

- "Default Text" snack when toggling screen capture tool

**Solution**

- Resolve "Default Text" snack when toggling screen capture tool. response is the raw JSON body from the server ({ Message, RedirectUrl? }), not a plain string. When a RedirectUrl is present, the global AJAX handler reloads the page and shows the message afterwards. Passing the object straight to snack() would render the snackbar library's "Default Text" placeholder.

---

#### **Data Warehouse**

##### Implemented performance improvements within PeopleManagement\_ETL (#155300)

**Problem**

- Performance improvements need to be implemented for PeopleManagement\_ETL

**Solution**

- Added hashrows for accUsers to improve performance
- Removed Source step for Steps to improve performance/memory usage

---

#### **Report Builder**

##### Make the download of the report in Report Builder fire-and-forget; resolve the problem with the first load that does not download (#146300)

**Problem**

- Large downloads can take a few minutes, locking the system.
- Download fails with the first page load.

**Solution**

- Make the download of a report in Report Builder fire-and-forget; resolve the problem with the first load that does not download

##### Integrations: Bulk Additional Service Imports: DWH (#140632)

**New functionality**

- A new section under Integrations is available
- Data Warehouse refresh
- All the sources are available

##### Replace jQuery contextMenu with custom context menu (#152615)

**Problem**

- With the upgrade of jQuery to v4.0.0, a bunch of previously deprecated $.api functions have been removed Eg. $.isFunction &amp; $.isArray
- Some plugins still make use of these and are now outdated; one of them, jquery-contextMenu, does not have an updated version and is not compatible with jQuery 4

**Solution**

- Replace the contextMenu functionality on ReportBuilder with a custom context menu (Bootstrap Dropdown / Alternative?)

---

#### **Imports**

##### Add company pay frequency master data (#154755)

**New functionality**

- A new field is added to People Management and the PaySpace push

---

#### **Identity and Authorisation**

##### Strengthen permission checks on Identity user creation (#152824)

**Problem**

- A change was made to remove the Auth role, as there is a new people group role to appoint new people

**Solution**

- Added a new policy to validate and ensure the current user can create a new identity user

##### Registration - Hide the password field during registration (#152969)

- System Access tab - Password and Confirm Password slider
- Both Always Required and Visible to be ON or OFF together (when one is On, so is the other and the same when Off)
- Password field to be removed from Registration field
- Email should be triggered, and the request should show on Registrations | Awaiting Approval
- User who is approver needs the role/permissions to do so

---