Version 9.1.208 (9 February 2026) Performance Management Error when adding a review setup without a name (#143965) Problem The user gets an error when they add a review setup without a name.  Solution Make the name field a required property and give the custom sanitised input elements a required tag, which renders the required appearance Fix event handlers being removed globally after page help is selected (#143965) Problem After selecting the page help icon within the modal, it removes all click event handlers on buttons, etc.  Solution Corrected to make specific before removing click events Resolved order of impersonating user route value (#143573) Problem The route path expects the primary contract, then the impersonated user, whereas it is being supplied in reverse When the allow upload is checked, GRPC throws a valid exception that needs to be caught  Solution Corrected the order of path variables provided.  Catch error and return a valid response Competency Analysis Fix popover, where the text is displayed in bold (#121394) Problem The competency description popover displays in bold Solution Ensure the popover text does not display in bold Ruleset Setup Created a script to dynamically delete data from Ruleset (#143128) Problem Cannot dynamically delete data from Ruleset Solution Implemented a new script to Archive and then delete data of a ruleset by id  Resolve URL sanitisation on multiple tabs (#143741) Problem Cannot save on the system access, widgets and integration tabs  Solution Corrected the URL sanitisation on the system access, widgets and integration tabs Moved allowed domains configuration to ruleset 1  Data Warehouse Updated Script for DWH Weekly Integrity Report (#142737) Problem Script monGenerateDWHDataIntegrityReport needs to be updated for data source accDisciplinaryActions  Solution Updated Script monGenerateDWHDataIntegrityReport to update accDisciplinaryActions missing section to align with DWH Source Script Created new Datasource cmNextCloudContents (#143697) Problem New dataSource cmNextCloudContents is required within the DWH  Solution Created new Datasource cmNextCloudContents Created new SSIS Package ContentManagement_ETL Adjusted SQL Query C_03712_99999_monitorDWHPackageResultsReport.sql (#143261) Problem Adjustments need to be made to C_03712_99999_monitorDWHPackageResultsReport.sql  Solution Adjusted script to exclude PackageLog.dtsx and select from WINDSORHYBRID Updated accChats due to Refactor for Communication Portal (#143780) Problem The package for accChats failed due to a refactor being done for the Communication Portal  Solution Adjusted source script with accChats to use new tables from the Communication Portal Removed ReportCard fields within lmStudentSubjects and lmTermResults (#112511) Problem The ReportCard fields are not required anymore within lmStudentSubjects and lmTermResults, as this is available within lmReportCards  Solution Removed ReportCard fields within lmStudentSubjects and lmTermResults Updated Container for jpHRProcessRequestData (#143579) Problem The jpHRProcessRequestData Update process did not work correctly Solution Changed the update back to Truncate and Insert to ensure the data is being inserted correctly for jpHRProcessRequestData Adjustments made within V9FullRefresh updates (#143176) Problem When the V9 DWH are deployed to Production, the full refresh should not be updated for the afternoon run Solution Updated Full Refresh steps to only update after 12 pm if the DWH package is deployed on Production during the morning Updated Source Query for PackageLog.dtsx (#143261) Problem PackageLog.dtsx needs to be excluded from PackageLogs Solution Updated Source Query to exclude package_name 'PackageLog.dtsx' Report Builder Added extra filter cases for datetime2 and adjusted filter for "Choose a specific date" (#142737) Problem The filters, when using datetime, did not filter correctly "Choose a specific date" required conversion for certain scenarios  Solution Added extra filter cases for datetime2 Adjusted filter for "Choose a specific date" Removed smalldatetime as we do not use this currently Notifications Resolved Properties not being replaced correctly (#143598) Problem With the new masked property development done, once a property exists both for mask and non-mask, it will always just replace masked property values, keeping the placeholder for the property name  Solution Add a change that should we identify it is masked, do an extra check if there is any placeholder without the masked property to also update and replace People Management Remove previous validation messages and classes when selecting values for position and org. Resolve timeout on org node treeview  (#143806) Problem Validation messages are not removed immediately after selecting values, only after the form is posted. A timeout occurs when opening the org tree structure in the position transfer page.  Solution Remove previous validation messages and classes when selecting values for position and org. Also noticed while testing the bug, the org tree times out.  Added a recompile option on the query, as the query runs fast in SSMS Improve error messages for overlapping appointments (#143328) Problem When adding a new appointment, editing an existing appointment or transferring the use,r the error message provides unspecific information to the user when it overlaps with a current appointment for the user themselves or on another position for another user  Solution Add new error messages for the overlap with more details of the user and the appointment that is overlapping.  Remove duplicate code and improve error message handling.  New error messages: Appointment overlaps with the user's own current appointment on position {{PositionTitle}} from {{AppointedFromDate}} to {{AppointedToDate}}. An appointment already exists for position({{PositionTitle}}) from {{StartDate}} to {{EndDate}} for user {{Username}}. Always include default avatar images on the list of available avatar options (#135931) Problem The default list of avatar images is not shown.    Solution The previous fix was reverted with the merge Restored solution to always fetch default avatar images    Imports Add API call to v8 to delete appointment history (#143323) Problem When an appointment is deleted in V9, the Appointment history is not deleted in V8. There was a request to add an API endpoint in V8 (Already merged) and an API call in V9 to ensure the Appointment History is deleted.  Solution Add new functionality in the import service to delete Appointments based on a List of IDs. This endpoint is generic and can also be adjusted to work for various other types of items, for example, job profiles. Communication Portal Resolved member count error (#143761) Problem When selecting room members, this will return a view of users within the group, but still used old table for members  Solution Corrected query to select the room members "Create New" button scrolls with the chat list (#143763) Problem The new button is positioned absolutely within a relative container, causing the render to work, but as content gets shown from the accordion button is scrolled alongside container    Solution Adjust to render outside the modal body, which is not within the relative container that makes it to the modal position itself   [PM] Cannot return to the list of chats if you've sent a message from within a person's agreement (#143858) Problem When inside a PM contract, discussion is open, which calculates to create a new discussion and not open discussion list, but once navigated back to the dashboard, a REACT change occurred, and no page redirect in MVC, which does not reset the content for the modal and the bool value is allowed to just reopen the modal as no 'context' has changed    Solution Add route value to be saved alongside the opening of the modal, so that should the route change, navigate inside REACT the portal will force reload if it is different from when opened in another context   People Groups Add 'LastRefreshed' to list ruleset people groups (#143598) Problem When a V8 menu is clicked, and the user's data is imported, then the peoplegroups linked to a user are also imported as subgroups, and their users are linked When more than one user is imported that has the same PGs linked to them, the PG data is unnecessarily fetched from V9, causing the PG calculation to use unnecessary resources   Solution When the PGs linked to a user are fetched, return the last refreshed date for the PG also Only fetch PG users then for the linked PGs where the last refreshed date is after the last edit of the people group users on V8 This will limit unnecessary calls to the Peoplegroup users   Learning Management Filter MaterialisedPeopleGroupUsers to only show active people on the PG on the attendance and marksheet page. When inheriting, marks only inherit from people who are an active part of the PG (#143629) Problem On the attendance and mark sheets, inactive users are also included who are part of the PG   Solution Change to not take People condition for a user into account when the person is terminated The person will not be part of the people group users, and the count on the list of people items will not count this item Do not show terminated people on the attendance or attendance detail pages When marks are inherited, do not inherit marks from previous for terminated users in the subject's people group   Content Management [Image Resources] [Translation] Translation for "Image Type" is missing (#143740)  Problem Missing translations in the file type    Solution Added translation for field    [Image Resources] Preview not available when uploading a GIF file (#143783)  Problem Restriction has been implemented to only compress image types, which excludes SVG and GIF files. Because of this, it does not render a compressed image and shows no preview available, which can cause confusion and seem like an error    Solution Adjust the flow to handle the null value of compressed to then not show the selection of image type, which results in the original image being selected    [Image Resources] [Suggestion] Streamline upload modal (#143736)  Problem No clear indication as to why there is a choice or reason    Solution Add a label to indicate to select an image, move the compressed to the first selection and add a subtext to indicate the reason for the selection    [Image Resources] Display loading indicator after selecting an image (#143734)  Problem When a file is selected, a new fetch call is made to retrieve the image and the compressed file; this does not trigger the ajax load to trigger a loader    Solution Add a new implementation to trigger a global event so that a loader is shown and then removed when the result is received