Skip to main content

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

  • Add a hidden provider input and update client-side submit logic to populate it from the clicked submitter so the provider value is consistently sent with the form.
  • Also, add a server-side fallback in OnPostAsync to default the provider to Microsoft when none is provided.
  • This ensures the provider is always available for processing (covers cases with/without JS and relies on the submitter value when multiple provider buttons exist). 


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

  • Banners must be able to create without text and values

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