# Version 9.1.197 (24 November 2025)

#### **Performance Management**

##### Moderation breaks when QA is required

**Problem**

- When the user only has the PM admin role for the moderations, the moderation page breaks due to requiring the user to also have People Admin role when QA is required.

**Solution**

- Allow the check for both PM and People admin roles

##### Sanitisation of review items names (#139392)

**Problem**

- Adding an "&amp;" to the text input of the review items and saving encodes it as "&amp;". Whenever saving an reloading, another "amp:" is added.

**Solution**

- Added sanitisation tag helpers to input and textbox of review item name. image Tested with various special characters. Input also blocks escaping character like "&amp;" as you type.

##### Check-in dial not being able to be clicked (#140857)

**Problem**

- To be able to click the check-in dial some conditions must be met, whereas one of them is that the ratings phase should have been started, but should the ignore phase date be active it does not validate this check hence why the dial can not be clicked

**Solution**

- Add an either or check to include should the ignore ratings phase be active

---

#### **Ruleset Management**

##### Resolved notification email url generation check

**Problem**

- When no path specified it uses the correct fallback but when in code it adds new url path with added route

**Solution**

- Before returning add an additional check to trim any leading '/'

##### Resolved theme service MVC route

**Problem**

- Route incorrectly calculated

**Solution**

- Resolve fix for app

---

#### **Event Scheduling**

##### Resolved Base URL for custom domain

**Problem**

- Incorrect base url configuration key used for custom domain on learning management

**Solution**

- Corrected base url

##### Cost Structure not pulling through after running Training Intervention Cost Import (#139814) 

**Problem**

- Cost Structure not pulling through after running Training Intervention Cost Import

**Solution**

- This happened due to an entity framework error which occurred because entities already tracked were again marked to be tracked. Simplified and improved import logic to not manually track cost description entities

##### The newly added cost on v9 page wipes out the v8 cost on from the Training Intervention (#140232)

**Problem**

- The newly added cost on v9 page wipes out the v8 cost on from the Training Intervention

**Solution**

- Do no remove costs when deselecting cost descriptions when adding new cost descriptions. Costs can now only be added via the cost description modal and removed (with confirmation) from the table displaying the costs.

##### Booking Requests do not show up on HR Processes tab (#141033) 

**Problem**

- Booking Requests do not show up on HR Processes tab

**Solution**

- This happened when updating the status of the booking on the admin page. Ensure that hr process requests are also submitted from the admin page when updating the booking status of an attendee.

##### Show loading indicator for export (#141057)

**Problem**

- There is no loading indicator when exporting files

**Solution**

- Implement change to show loading indicator when doing an export

##### Decline reason not being populated (#140387)

**Problem**

- Decline reason not being replaced on email

**Solution**

- Corrected templates to have correct placeholders

##### Email calendar attachment not sending out (#139709)

**Problem**

- Recipient code missing for the one request, and type request should not be specified on a invite import as outlook see the request as an accept/decline type

**Solution**

- Correctly add recipient code and fix the request body

##### Implemented suggestion and empty list (#139872 &amp; #140253)

**Problem**

- When there is no data in the table it is blank

**Solution**

- Add change to show row with wording indicating nothing to show, also add suggestion to swap admin and manager around

##### Sync notifications when new event is created (#139835)

**Problem**

- When a new event is created notifications are only created when confirmed

**Solution**

- Change to sync notifications when it has been created

##### Individuals loading people group target audience (#140249)

**Problem**

- When having a people group and target audience load, it will load under attendees when switching over to individuals,

**Solution**

- Add original check to validate and clear before switching as it will reload when opening target audience on people group again

##### Auto mark attendance check (#139385)

- Add new check in fronted to specify the minutes after each session to mark attendance

##### Syncfusion license error (#139610)

**Problem**

- At seemingly random times on master a syncfusion license error will occur.

**Solution**

- Moved the license registration from App.tsx to Index.tsx to hopefully make it more stable.

##### Last survey notification not being sent (#140104)

**Problem**

- Event schedule survey links not being sent for the users

**Solution**

- Correct logic to handle per batch of users

##### Enhancements on the calendar view (#138282, #139847, #139616, #139606)

- \*\*139282\*\* Change wording on upcoming events if you are not booked - You are not booked on any events Make the Calendar borders lighter
- \*\*139847\*\* Finalised &amp; Cancelled Event not to display on Calendar View
- \*\*139616\*\* Show the events in the range that expands. Add the dates as well
- \*\*139606\*\* Orange dot when not approved but booked Don't show anything when not booked Display \[Pending Approval\] in the MyUpcomingEvents at the top Show tooltip when hovering over the event showing the status of the event (not booked, booked, pending approval)

---

#### **Learning Management**

##### Update marksheet legend definitions (#141310)

**Problem**

- Updates to marksheet legend definitions are required.

**Solution**

- Updated marksheet legend definitions.

##### Add ruleset to master data year cache retrieval on class subject save validation (#141224)

**Problem**

- The retrieval of year master data for when validation is performed on the class subject save, is not taking into account the ruleset.

**Solution**

- Added ruleset to master data year cache retrieval on class subject save validation

##### Refactored SQL query to retrieve all previous cycles and marks for class subjects (#140434)

**Problem**

- The system currently relies solely on the previous cycle/term to retrieve the most recent training intervention ID for data transfer. As a result, only the marks from Term/Cycle 4 are used for inheritance.

**Solution**

- We updated the backend query to include all cycles/terms, allowing us to Use the most recent training intervention ID for mark inheritance.

##### Comments to use 3 columns and wrap the text (#141203)

**Problem**

- The comment options are loading one after the other below one another which is leaving a lot of white space or available screen space un-utilized.

**Solution**

- Changed so comments use 3 columns and then wrap onto the next row

##### Subject cycle date range validation and subject detail UI values updating (#139581)

**Problem**

- Subject cycle validation is being checked against the currently saved Year date range, instead of the Year value that is being saved on the form.
- The subject detail UI values should only update after a successful AJAX call.
- The dates were being incorrectly formatted for the subject detail.

**Solution**

- Fixed subject cycle validation to perform date validation range checks against the Year currently being saved on the form.
- Ensure the subject detail UI values only update after a successful AJAX call.
- Fix date formatting for subject detail.

##### Created SQL Script that will insert DWH scores into table Marks (#140444)

**Problem**

- The scores within the DWH will need to be imported within LearningManagement.Marks as ModeratedMarks

**Solution**

- Created custom Script to insert DWH Scores within V9\_Master\_Learningmanagement.LearningManagement.Mark as ModeratedMarks

##### Support dynamic date formats with Day.js integration (#140434)

**Problem**

- Culture affected date calculations in the backend, preventing the inherit marks button from being available.

**Solution**

- Added backend date format to ensure compatibility with all cultures.

---

#### **Data Warehouse**

##### Adjustments made within lmStudentSubjects and lmTermResults (#140444)

**Problem**

- The Mark field should be updated with either Calculated- or ModeratedMark if it does exists within StudentSubjects
- The Calculated Mark should be set to Blank if it is 0
- The new Comment fields should be included within TermResults

**Solution**

- Added step to update Mark field to either Calculated- and ModeratedMark within StudentSubjects
- Added Step to set Calculated Mark to blank if it 0 within StudentSubjects
- Added the required comment fields within TermResults

##### Performance Improvement within jpAppointments (#125159)

**Problem**

- Container for jpAppointments currently fetches all the data within the Source DB with each DWH run

**Solution**

- Adjusted Source Query to only fetch data by using ReferenceDate
- Added Step to only insert data into DWH table if it does not exists

##### Added step within PerformanceManagement\_ETL.dtsx to remove certain pdm records as per requests (#140774)

**Problem**

- Certain pdm records needs to be removed from the DWH as per requests

**Solution**

- Added step within PerformanceManagement\_ETL.dtsx to remove certain pdm records as per requests
- Implemented performance improvement for Container pdmReviewYearPeopleGroupsSetup

##### Added fieds Calculated - and ModeratedMark within lmStudentSubjects (#140444)

**Problem**

- Fields Calculated - and ModeratedMark are required within the Datawarehouse

**Solution**

- Added fields Calculated - and ModeratedMark within lmStudentSubjects

---

#### **Identity and Authorisations**

##### Implement new custom domain (#138243)

- Add new change to allow for custom domains on MVC

---

#### **Job Management**

##### Align status header column

**Problem**

- Misalignment of columns

**Solution**

- Align the status header column

##### Resolved wrapping of status text (#140362)

**Problem**

- Width is not defined and some screen resolutions still wrap the text

**Solution**

- Add change to hard define the width size

##### Master data of incorrect product type (#140350)

**Problem**

- Master data product type incorrect

**Solution**

- Correct the product type for master data item

##### Display Document max size error message (#140612)

**Problem**

- Max size error for file not being displayed

**Solution**

- Add change to validate size

##### A global:messageNotification... error appears when uploading a document (#140616) 

**Problem**

- After uploading a file it triggers previous handler and does not show correct translation

**Solution**

- Detach handler before attaching new and correct translation

##### Evidence modal styling issues (#140621) 

**Problem**

- Alignment on the table data

**Solution**

- Resolve the class margin that has been added

##### The "Delete Reason" field caches the previous delete reason (#140623)

**Problem**

- Delete modal content is not being set

**Solution**

- Reset delete modal content after deletion

##### Remove the "yet" on the "Not yet Set" toggle (#140815)

**Solution**

- Suggestion to change translation and resize status

##### Position title not being set in modal title (#140556)

**Problem**

- Modal title was not being updated with the position title

**Solution**

- Add change to populate title with position title

---

#### **People Management**

##### New user sync (#126727)

**Problem**

- The user sync from V9 to V8 runs the full employee import that is inefficient.

**Solution**

- Corrected the field names of the appointment history API call to match the names on V8. Use the new User sync in V8

##### Fix breadcrumb back arrow no longer displaying (#140853)

**Problem**

- Back arrow no longer displays correctly on breadcrumb navigation.

**Solution**

- Remove condition check preventing arrow display that was intended to solve another problem unsuccessfully.

##### The address details not saving on the summary (#139878)

**Problem**

- Address details does not save on the summary when that is the only PG permission active to view or edit When Payroll connectors has been configured the connector drop down displays to the manager even though the section is disabled on the PG The logged in user can see the payrol details on their profile summary

**Solution**

- Only check if the section has changed to determine if it can be saved. Only show the payroll dropdown and payroll id to the manager that has view or edit rights on the PG and never to the user

##### Correct summary page authorisation for inactive and unchanged sections. Corrected data loss between users with view right and admins with edit rights (#139878)

**Problem**

- When the address section is disabled the user receives an unauthorised exception. When the user as data in a section but no view rights the dat is lost when saving data on the summary. The summary page save unchanged data unnecesarily.

**Solution**

- This pull request refactors how permissions and change tracking are handled for user profile summary updates in the People Management module.
- The main improvements include fine-grained permission checks for each profile section, tracking which sections have changed, and updating the view model and controller logic to support these features.
- This results in more secure and targeted updates, allowing only authorised edits and reducing unnecessary data processing.

---

#### **Notifications**

##### Communication Portal height (#140695)

**Problem**

- When there are no discussions a class is added to restrict the height, but when a new discussion is to be started that height does not reset

**Solution**

- Add change to remove the restirction

---

#### **Content Management**

##### Consolidate ContentType enum and change all references to point to centralized enum (#139343)

**Problem**

- There are inconsistencies between the MVC ContentType and ContentManagement ContentType enums leading to incorrect value assignments when the types are sent from MVC to CM.

**Solution**

- Centralise the ContentType enum and update all references. Add migration to force recreation of missing ContentType folders on nextcloud.

---

#### **Report Builder**

##### Increase people group filter length and add margin between filter and buttons (#140337)

**Problem**

- People group filter styling on ReportBuilder view report page needed some changes.

**Solution**

- Added bottom margin to people group filter and made it span parent container width to allow for longer PG names

---