Version 9.1.220 (13 April 2026) Event Scheduling Make the loading indicator smoother (#145136) Problem On the Event Scheduling Calendar view, clicking an Event flashes the right-side modal. This was due to the loading indicator abruptly displaying and hiding instead of transitioning.  Solution Add a transition effect to the indicator, making its hiding and showing appear much smoother Make event detail event clicking smoother (#145136) Problem When events are open on the right side of the calendar, and you click on other events, the screen flashes.   Solution Cache event details so that they do not empty when loading the new details, which causes the empty details to be briefly rendered before rendering the new details, which results in the flashing. Data Warehouse Adjustments made within LearningManagementReport_ETL (#144417) Problem The Calculation for Pass or Fail did not calculate 100% for grades 10-12 due to missing subjects within the calculation The latest ModeratedMarks were not updated within lmStudentSubjects    Solution Updated Step to calculate Pass or Fail for Grade 10-12 within lmTermResults by including two new subjects Resolved issue where the 7 hours ago latest Moderated or Calculated Marks were not used within step "Update fields CalculatedMark and ModeratedMark within #ResultsTI" for StudentSubjects Added the latest V9 DWH Package to the repo (#143176) Problem The latest V9 DWH Package needs to be added to the repo as backup after Live deployment   Solution Added the latest V9 DWH Package to the repo Removed Previous SQL Scripts that are not part of the Code Review Folder Structure (#145986) Problem There are previous SQL files that were used for the Code Review process before the new folder structure was added    Solution Removed Previous SQL Scripts that are not part of the Code Review Folder Structure Added field Completed within pdmContractPeriodActionPlans (#146665) Problem Field Completed is required within pdmContractPeriodActionPlans    Solution Added field Completed within pdmContractPeriodActionPlans Updated Existing DataSourceFields (#146665) Problem Field Progress needs to be renamed to Milestones within ContractPeriodActionPlans   Solution Update FieldAlias "Progress" to "Milestones" for DataSource ContractPeriodActionPlans Added field "CustomField" within lmStudentSubjects (#144417) Problem Field CustomField is required within lmStudentSubjects    Solution Added field "CustomField" within lmStudentSubjects Communication Portal Resolved extra column on file attachment (#146678) Problem Extra icon on the left-hand side when sending an attachment   Solution Remove column Resolved New discussions not shown first (#147067) Problem Discussions with new messages are not prioritised at the top   Solution Add an order clause to correct the new message shown at the top Removed Flags (#146682) Problem Flag Icons render within the library differently and return Unicode when the text is extracted   Solution Removed Flag Category of Emojis   Remove inappropriate icons (#146683) Problem Certain icons are references in the library that can be used, which is not ideal for children who have access to the icon picker   Solution Remove the few icons that could be identified Added new Reload icon button (#146674) Problem V8 does not allow signal-R updates currently, so no way to refresh the views or indicate when the user is on a page    Solution Add a new reload button to refresh the discussions Added loading indicator for external clients using package (#146681) Problem When within external service, there is no loading indicator that gets triggered, as this is the V9 reference loaders.    Solution Add a loading component to be used for external clients using the package(v8) Corrected business rule on subject type ignores global setting for discussions disabled (#146739) Problem When the global setting of discussions is disabled, a user can not open or create any discussion    Solution Add a business rule that if it is of a certain subject type, it is allowed to continue Resolved Text overlapping tone colours on emojionearea (#146680) Problem In the Emojione area, the tone colours and the first heading overlap one another   Solution Added override styling to add margin to the tones to push content down Resolved Icon Search Background Colour (#146674) Problem V9 colour is calculated from the site CSS with the current background colour lightened. Which V8 does not have   Solution Add a new Model check if step type is of type topic, add the v8 background colour Ruleset Management Nullify client secret in payroll connector (#146732) Problem Client secret available in plain text on inspection of payroll connectors   Solution Nullify client secret Correct actions and delete on the payroll connector list (#146588) Problem Cannot open the kebab menu on the payroll connector list  Cannot delete a payroll connector PowerShell scripts are too lengthy in the list   Solution This pull request improves the user interface and user experience for the Ruleset integration management page in both the backend view and the frontend JavaScript. The changes focus on enhancing usability, accessibility, and code maintainability, particularly around dropdown menus, script display, and modal confirmation behaviour. Themes drop-down not loading for system menu items (#146750) Problem When a menu item is selected, the page content is loaded dynamically. The themes dropdown was not being initialised as part of that process, so clicking it had no effect.    Solution Added code to explicitly initialise the themes dropdown each time the page content is loaded, so it responds correctly when clicked. Job Management Resolved people group org unit selection in tree view modal (#145942) Problem Org Unit on tree view modal not rendering, and incorrect nodes are shown; no implementation done for the nodes, incorrect logic on the page    Solution Added new logic and handler events to handle the different selections Resolved ordering on appointment history (#145442) Problem When no order has been identified by defaults it is ordered by the first column, which overrides the foreach on initial data order   Solution Add the calculation to order by the correct start data Duplicate subordinates returning (#146924) Problem The API endpoint ListManagerSubordinatesSimplified returns duplicate subordinates   Solution Added a distinct keyword to ensure unique subordinates are returning. Add position activation functionality and future planning (#139481) Problem A position cannot be reactivated from the front-end. Future planning cannot be captured   Solution Add active switches to the position list page  Add a future planning section to position creation  As a People Management Administrator, I want to be able to set the status of each position (e.g., Planned, Budgeted, Unapproved, Approved), so that I can generate categorised reports for better workforce planning. As a People Management Administrator, I want to be able to define the validity period of each position (e.g., Valid From and Valid To), so that I can track position timelines. Helper text must show that it is for future use as well. As a People Management Administrator, I want to be able to specify the Minimum and Maximum Budget for each position, so that I can analyse and report on budget allocations across positions. As a People Management Administrator, I want to see the newly entered data on the Job Management page, where all the positions are summarised. Custom styles for the date filter have been added to the position HTML so as not to override the global CSS, which seems to be an issue only on these pages ListOrgUsers endpoint returns future and terminated employees (#146921) Problem The ListOrgUsers endpoint returns terminated or future appointments   Solution Added the new IsCurrentPosition check to filter out terminated and future appointments. Identity and Authorisation Resolved Disclaimers (#145552) Problem An incorrect logic check existed for the ruleset disclaimer before pulling the job profile disclaimer details. Redirect occurring from disclaimers back to the login screen    Solution Resolved if check, Changed logic checks to ensure context items are added if accepted and not based on their render mode from Razor if conditions Added a redirect check to redirect to the disclaimer page again instead of all the way back to login Cleanup expired ID tokens (#144999) Problem Expired tokens in OpenIddictTokens will become a performance problem as an index was removed during the .NET 10 upgrade   Solution Create a quartz job to remove expired tokens at 4 am every day Content Management Centralise decryption of NextCloud credentials (#147083) Problem The decryption feature is missing in the OCI Share link development The integration setup is confusing because it sometimes includes an encrypted client secret while at other times it does not.   Solution Implemented the missing decryption feature Ensured that the encrypted data is always stored in a secret and that a public method is used for decryption. Next cloud not working due to missing config (#146727) Problem The missing configuration is causing the next cloud to break   Solution Add encryption keys to the Content management appsettings   Upload of and handling of evidence using the workplace assessment app (#143882) Problem There is currently no way to upload evidence on a question, e.g., a short video or photo   Solution If you are online, sync starts in the background and will even continue when the app is closed Compress evidence using the V9 compression service, and store compressed evidence in the local entity Sync back to V8 once compressed evidence is ready, prompt the user to Submit Send compressed content to the content service and store the ContentId against answers On V8, when the submit method is called, send ContentId in AssessmentAttemptDTO with the Questions object - one to many If the user has an access token for V9, use this to access the content; else, use stored credentials for api user to upload content On People Management > Assessment List, if evidence is available to attempt per question, make the "Download evidence" link available People Management Use StartDateInCompany to calculate work anniversary (#146800) Problem On the people management dashboard, the work anniversary query currently uses the user's current position to determine the date, rather than the user's start date with the company   Solution Return StartDateInCompany to PeopleController and use it for work anniversary mapping Reporting Lines on Summary Page not underlined as a link (#145925) Problem Reporting lines have no on-hover effect (underline)   Solution Move hover class anchor tag When moving an org node to another parent node, correct the update of the calculated org flat path (#146379) Problem When moving an org node, the calculated org flat path is not updated   Solution This pull request updates the UpdateOrgStructureParentCommandHandler to improve how changes to the organisational structure are handled. The main change is the addition of logic to update the flattened organisational path after a parent update, ensuring data consistency across related structures. Notifications Newly appointed users are getting work anniversary notifications by only returning records of tenure greater than 0 (#146919) Problem Work Anniversaries email is being sent on the appointment date to new users    Solution Resolve the problem of newly appointed users getting work anniversary notifications by only returning records of tenure greater than 0 Add a line break before the V9 footer to allow space between the email body (#146666) Problem The V9 build in the footer sometimes touches the normal email body   Solution Add a line break before the V9 footer to allow space between the email body and the footer. Imports Ruleset Culture never sent to v8 for schema setup (#134516) Problem The ruleset's culture is never sent to the v8 schema setup endpoint; this results in en-GB always being set in V8.    Solution Added the culture to the API request for v8. Correct the delta check for optional staging for the import data (#145548) Problem When the appointment details have not changed, but the other personal details have changed, the user data is not staged for import   Solution Move the appointment to a conditional OR with the other personal details. Ensuring that the link to download the User Validation Report is only shown for User imports and PaySpace Pull imports. (#146598) Problem The link to download the User Validation Report is shown for reports for which it does not work.   Solution Hiding the User Validation Report download link for all reports except the select few reports for which it works. Tenant Management Use the system Close Date to change the colour to Red (#146313) Problem The system does not use the system's Close Date to change the colour to Red   Solution Update expiry colour display condition to only display on the close date within 1 month   As a Consultant or Tenant Admin, I want the Expiry Date to be set at the end of the following month by default (#144228) Problem When creating a tenant, the expiry and system close date are not defaulted to the end of next month, and boolean values for lock system and display expiry messages are not defaulted to disabled. Page also not ordered by expiry date ascending.   Solution Tenant creation defaults expiry and close date to the end of next month. Lock system and expiry messages display defaulted to disabled, and the page is ordered by expiry date ascending by default.   As a Tenant Administrator on R1, I want to have updates to the Update Expiry Date modal (#144227) Problem New expiry date should be the same as the current expiry date; buttons need to be added to quickly set dates (for end of this week, end of next week, etc); and a new toggle to be added to enable and disable subscription expiry and system close notifications   Solution New expiry date defaulted to current expiry date; 4 buttons added to quickly set the dates; new toggle added which persists in the database against the subscription, and displays value; and then added logic to ensure when disabled, no system expiry or close notifications are sent Performance Management Inform user buttons are to create agreement for the selected period (#142925) Problem When you move past the review setup tabs at the top, the narrator will simply read the names of the buttons, which will be the same as the names of the tabs. This can be confusing.   Solution Include the review setup component as a tab index   Inform the user that the page is loading when creating an agreement (#142928) Problem Loading is not verbally indicated by NVDA   Solution Indicate loading when creating contract   Narrator mentions heading types and sizes (#142929) Problem NVDA reads heading levels (h4, h6)   Solution Suppress the heading levels where possible   Unable to interact with my own agreement (#142931) Problem Tab navigation is not complete when tabbed past timelines   Solution Update tab order and inclusion   Investigate the possibility of adding pauses between phrases (#142918) Problem It is sometimes a bit difficult to follow what the narrator is saying because they ramble off sentences without pausing. Please investigate if it is possible to add some pauses so that you can more easily distinguish between different concepts.   Solution Create tab-list and add aria improvements to improve flow and readability. Also added accessibility sentence to translations.   Review setup container not selected (#142933) Problem The tablist forces you to tab through all items to progress.   Solution Create an index for the entire tab list, and allow the user to press enter to tab through the list, or tab over the list Screen flickers when moving the mouse pointer over the period label (#144966) Problem When hovering over some elements that have a popover, it continues to re-render and the popover flickers, as if its visibility state is constantly changed.   Solution Memoised the popover properties so that it does not re-render when anything else on the dashboard changes. Found an additional issue where for a fraction of a second, the popover is shown topleft of the viewport before it positions where it's supposed to. Enforced additional CSS onto the popover to attempt to prevent that from happening.   System Access Encrypt secrets, passwords and tokens (#144974) Problem Secrets, passwords and tokens used in V9 are stored in clear text   Solution Encrypt and decrypt secrets, passwords and tokens when records are stored and fetched from the database by means of changes to OnModelCreating Technical Syncfusion license key is visible in dev tools (#144510) Problem SyncFusion license key is available in clear text in the local storage view in dev tools.   Solution Remove the license key from local storage; instead, make the lightweight api call. Also, encode the response, and decode it in code   Media compression process (#140481) Problem Currently media is uploaded in its original size to the system without being compressed or optimised   Solution Implement a PowerShell script to Compress uploaded media Remove original large media Keep track of what was compressed to compress once