Version 9.1.235 (15 June 2026)
Data Warehouse
Added step to execute PowerShell scripts for ContentManagement (#136619)
Problem
- The PowerShell scripts need to run first before running the DWH Packages
Solution
- Added a step to execute the required PowerShell scripts for ContentManagement
Adjustments made within JobProfiler_ETL SSIS Package (#151077)
Problem
- Redundant fields need to be removed from the JobProfiler SSIS Package
- The Insert step needs to be updated for Appointment to fetch all current-year Appointment data
- The isLatestAppointments only refreshes at midnight
- End dates that are NULL need to be updated for Appointments
Solution
- Removed redundant fields within JobProfiler_ETL SSIS Package
- Updated Insert Script to refresh all Appointment data for the current year
- Updated the IsLatestAppointment step to refresh with each run
- Added a step to update the EndDate if it is NULL for Appointments
Removed redundant fields within PerformanceManagement_ETL SSIS Package (#150517)
Problem
- Redundant fields need to be removed within PerformanceManagement_ETL
Solution
- Removed redundant fields within the PerformanceManagement_ETL SSIS Package
People Management
Add validation for duplicate support users on the default ruleset, adjust translations for support users (#148351)
Problem
- Unable to log in with the support user that has been assigned to the ruleset.
- Get error message:
- Support impersonation is not enabled for the user
Solution
- Add validation for duplicate support users on the default ruleset, adjust translations for support users to make it clear what the problem is, as the user support date has expired
Fixing the "service not available" error
Problem
- Changes to the advanced filter criteria can cause a frontend error when restoring previously saved filter values from local storage.
- This occurs when the stored filter structure no longer matches the current filter structure expected by the application due to recent development changes to the filter structure.
Solution
- Added validation to compare the stored filter structure against the current filter definition before restoring it.
- If the stored filter is incompatible, it is automatically cleared and ignored. If the structure is valid, the filter is restored as normal.
- This prevents errors while maintaining filter persistence for compatible saved filters.
Correct export of people dashboard and report builder reports (#149495 & #149491)
Problem
- The People Dashboard cannot be exported.
- Reports exported do not display under the exports tab
Solution
- This pull request introduces several improvements and fixes related to file export and upload functionality across the API, gRPC, and web layers.
- The main focus is on enhancing the handling of user file types, improving error handling during export operations, and refining method implementations for exporting files.
Event Scheduler
Fix calendar view console warning (#151002)
Problem
- Syncfusion calendar component produced the following warning in the browser console: "[WARNING] :: Module "Week" is not available in the Schedule component! You either misspelt the module name or forgot to load it."
Solution
- Ensure the warning does not display by explicitly setting the calendar current view to Month (we do not use the week view at all)
Notifications
Ensure schedule run times are captured as UTC (#149421)
Problem
- Schedule run times get a bit confusing, seeing that the run time is selected as local time, but then, when processed, it is converted to UTC - this leads to inconsistencies.
Solution
- Just as we do with the additional service imports, where the times are captured and stored directly as UTC, we do the same with schedules. I did update labels to assist the user so that they know the selected times are UTC. I also added help text when selecting the run time, so that you can see what the selected UTC is in local time. This just makes the whole process more consistent and less confusing
Performance Management
Inform user buttons are to create agreement for the selected period (#142925)
Problem
- Duplicate heading readings and incomprehensible speech.
Solution
- Remove duplicates and improve the flow to tab through buttons before they are read
Focus on the Review Year drop down after creating agreement (#146075)
Problem
- When loading the page after creating an agreement, the review year drop-down list does not focus.
Solution
- Focus on the year drop-down list on page reload
Improve handling period sections (#146076)
Problem
- My agreement section for review periods and summary has an illogical flow. I need to be able to enter into and have a comprehensible flow.
Solution
- Group review periods and summary separately, and allow entering into sections for further action and hearing.
Focus on the "Create new agreement" modal after clicking the Start button (#146081)
Problem
- Incomprehensible flow for creating a new performance agreement and missing enter logic to allow user access to all functionality.
Solution
- Update and improve, creating a new agreement flow on all corresponding pages
Improve narration in an agreement (#146085)
Problem
- Incomprehensible flow in an open agreement.
Solution
- Improve flow, speech and functionality for all sections, including enter functionality for new grouped tabs
Corrected view subordinate button no longer displaying on dashboard (#148720)
Problem
- On the Manager Dashboard, the View Subordinates button was no longer displaying for employees who are managers.
Solution
- Corrected dashboard query that was incorrectly determining subordinate count by looking at the current user's manager instead of the current user's reportees.
Job Management
Add confirmation modal for copying a Job Profile (#148305)
Problem
- When copying a job profile, there should be a pop-up modal to confirm if the user wants to copy the JobProfile
Solution
- Added a new modal, which appears when the user clicks on the copy button
Identity and Authorisation
Improve handling of the expiry of the refresh token to allow the user to log in again (#139977)
Problem
- When a user's refresh token period expires, and the access token cannot be refreshed, the session page breaks due to the existence of invalid authentication cookies.
Solution
Resolved Null theme for Identity Translation PR (#148357)
Problem
- Incorrect throw for the theme service, which can be null with the first load for identity translations
Solution
- Removed check
Refactor Identity Translations to use MVC translations (#148357)
Problem
- Identity had its own Resource.ResX localizer, as well as MVC, has its own Translation dynamic tree.
- This means that Identity could not be translated by a ruleset to be used
Solution
- Removed Resource. resx in Identity
- Added a new section identity within MVC translations, implemented a new MemoryCache Localisation to be used within a new base page model to retrieve localisation.
- Tries to get the memory cache translation, should it not be available or timed out, fetch new namespace translation from mvc load into memory and use on each page as needed with T("..")
System Access
Ensure the provider is set for support login (#148127)
Problem
- Provider not available in support login, causing an incorrect redirect on challenge
Solution
Communication Portal
Do not display "Null" (#151091)
Problem
- Incorrect logic was used for item counts on the second inner badge
Solution
- Correctly handle logic flow
Incorrect validation for Mandatory fields (#151085)
Problem
Solution
- Added null empty checks to pass in blank
The Banners are not displaying to all users by default when there is no Target Audience (#151086)
Problem
- Publish to the dashboard, check used to show within the communication portal banners
Solution
- Remove check for dependency on publish to dashboard
An empty Target Audience selection list appears when linking Jobs (#151089)
Problem
- In some cases, when opening the link modal, it does not result in items.
Solution
- Add retry check and stale removal on data for page items
An error appears when viewing the "Summary" of the Banner Target Audience (#151092)
Problem
- SQL query times out when having lots of audiences
Solution
- Improve SQL query join
The Banner Overlay resets after save (#149890)
Problem
- Culture difference on double pointer
Solution
- Added an attribute to model binding for the attribute to resolve
Imports
Correct disability import check and change user repository to load navigational properties sequentially (#150961)
Problem
- On the user imports, the user disability records are getting duplicated with each import. Each import creates a brand new disability record for the user, even though the user already has the disability record.
- The current user gets from the repository leads to a Cartesian product, causing degraded performance. Consider 1 User, having 200 User Files, the user has 2 next of kin records, the user has UserReleaseHistory for each release, 50 records, and then the user has 100 transgression files. The way EF compiles the query is Users left joined to all the other tables, and multiplies the rows for each collection navigation. The above example leads to 1x 200 x 2 x 50 x 100 = 2 million records returned; this is extremely inefficient.
Solution
- Fixed the user disabilities query to select disabilities for the user IDs provided (dapper IN was set to be NOT IN)
- Changed the Get for User to load the main entity and then load each collection sequentially. Initial execution time of cartesion product query: 00:01:05 -> 2, 338, 770 rows, for one user. Updated execution time with sequential collection load: 00:00:01 ALL queries (1 main entity + 9 collection fetches) -> Total 494 rows (across all result sets for user + user's files and transgressions)
Send Welcome Email to imported users (#149149)
Problem
- There should be functionality for sending a bulk welcome email during the import process.
- There should also be a new import setting to toggle whether or not this functionality should occur.
Solution
- Add a new import setting
- Add the send welcome email functionality to the import process if the setting is active