Version 9.1.237 (15 June 2026) Job Management Request a job structure import on the creation of a new job profile or position. Standardise the Save of profile and position. Return job profiles without positions when syncing job structure to V8 (#151154) Problem On creation of a new job profile or position a job structure import to V8 is not run. On saving the position of the profile, the behaviour is not the same.  Solution Request job structure import on creation of a new job profile or position. Return all job profiles, even if they already have a position linked to them or not. Change Save behaviour to be the same for a job profile and position (save, redirect and display created successfully) Force refresh after copying a job position (#151286) Problem The Job Profile's page requires a refresh to show the newly added position Solution Use a table reload to ensure it shows. Resolved error where the user was not able to add an org if the org code was deleted previously (#151120) Problem When a user imports or adds an org on the front end that has the same code as an org that was previously deleted, the org does not get created. Solution Updated the index on the table to exclude deleted orgs. Updated the queries to exclude deleted orgs. Report Builder Fix sub report not returning data (#151337) Problem The count shows a load indicator, but no raw data pops up. This happened due to the report filter criteria being built incorrectly, which resulted in an empty result set.  Solution Ensure the filter criteria are generated correctly.  Ensure report view table data is left-aligned (#151519) Problem Column contents centre or right aligned Solution Ensure the report view table data is left-aligned  Ensure only active sub reports are included when exporting (#151465) Problem When exporting a report, it also includes deleted sub-reports  Solution Ensure only active sub-reports are included when exporting a report  Performance Management Updating displayed error message (#151340) Problem When adding a document link, users only receive a generic "Invalid document link" message. This does not clearly indicate whether the URL format is invalid or whether the domain is not included in the approved whitelist.  Solution Added client-side URL format validation to verify that the entered value is a valid URL before submission. Invalid URL formats will continue to display the "Invalid document link" message. If the URL format is valid but the domain is not whitelisted, the system will now display the more specific validation message returned by the server, providing clearer feedback to the user. Exclude inactive Master Data items from new contract creation (#147678) Problem When section items are made inactive in Master Data, they still appear linked to review setups. When creating contracts from this setup (or copied from a template, or previous), the inactive items are created on the new contract, causing errors during creation since the inactive Master Data cannot be retrieved. Solution Ensure that inactive items are excluded when viewing the Review Setup and when copying/creating a contract. Resolve bug where Check Ins comment label overlaps typed comment (#151030) Problem When typing a comment into the Check Ins modal, after the text area loses focus, the label overlaps the typed text  Solution Replace the default HTML textarea with MDBTextArea, which handles the floating label state automatically. Resolve the issue where a user without a performance manager cannot create a contract (#151445) Problem User's that do not have a Performance Manager cannot access PM to create their contracts. They should be able to create the contract, but not be able to submit objectives. Solution Corrected the issue on the query returning user available review year setups, which was excluding users who do not have performance managers. Prevent duplicate section links when copying (#151533) Problem When VB and LB are active, but no items are linked to the review setup, both the previous contract items and all the library items are copied to the new contract in case of multiple periods, causing the creation to fail Solution Add checks to avoid re-linking ValuesAndBehaviours and LeadershipBehaviours items when copying a contract period if those sections already exist on the target contract period. The conditions now verify contractPeriod.ContractPeriodSections doesn't already contain the section before falling back to link master-data items (LeadershipBehaviours still respects allowLeadershipBehaviours). This prevents creating duplicate section entries during the copy operation. Enforce culture-insensitive transfer of decimal data when saving performance data (#147853) Problem When performance management decimal data, such as weights, is saved, the current server culture sometimes causes the values to be received as 0, causing validation to fail Solution Add the FlexibleDecimal attribute to allow replacing culture-specific decimal characters like commas with periods during model binding  Ensure Activities, Measures, Ratings subsections are hidden on check-ins modal when empty (#150987) Problem When a KPI has no activities, measures or ratings, the subheaders for the items still display on the Check-Ins modal Solution Ensure that when either has no data, the header is not shown on the Check-Ins modal  Imports Keep the latest termination date if no current or future appointments are found (#151609) Problem When using the pre-import script, it filters out terminated employees when there are no current or future appointments for that user.   Solution Keep the latest terminated record IF there were no Current or Future Appointments   GRPC Unauthenticated Error (#151197) Problem The import service gives an unauthenticated error during the user import.   Solution Add an Allow Anonymous to the newly added method.   Add pre-import step for User Imports (#149150) Problem There should be an option to have custom user import steps prior to the staging happening in the Account Database.   Solution Add functionality for custom import steps on the Import Service, before staging the data in the Account database. Added a custom import script Exports Fix PaySpace organisation and position create/update (#150845) Problem PaySpace pushes were failing for several setup-dependent cases in the payroll integration. Root organisations could be sent with an invalid parent, employee custom fields could be overwritten or omitted during updates, and position updates could fail when PaySpace required grades or when an existing position row belonged to a closed payroll run. Newly created organisation units were not added back into the in-memory PaySpace organisation list for the current run, and the closed-run position fallback depended on a generic exception message instead of the PaySpace API response details.   Solution The push now uses PaySpace upload codes as the stable organisation match, preserves existing employee custom fields when updating employees, sends grade values when pushing positions, and avoids reusing old position effective dates when a position change needs to be sent. Newly created organisation units are available for the rest of the same push run, and preserve structured PaySpace API response details when position updates fail, so the closed-run retry is based on the API response body instead of a rethrown generic message.    Notifications Extensive Unit Tests for NotificationServiceLevel on Account service (#150982) Problem Some services have many event codes and recipients which trigger emails. Each event/recipient triggers an email with different data and for different people During development, when these queries are altered for specific cases or a new event/recipient, developers might not test other emails which also reuse that query, nor do testers know whether a query has been reused and adjusted to accommodate the new case.   Solution Add new Unit Tests for Account Service for each 'switch' case with the correct business rules to ensure that, should a request be given to test that query, it will produce the same results as expected using IMock and MockData for repositories   People Management Fix Manage Own Data permission not working (#151271) Problem Manage Own Data permission not working   Solution Fixed the permission checks so users can only edit their own personal details when ManageOwnData is enabled.   When the ID number is changed on the person summary page, also update the identity ID number for 2FA (#151170) Problem When updating the ID number on the people summary page, the ID number in Identity is not updated.   Solution Add vm.Biographical has changed to the condition that triggers UpdateIdentityUserAsync, so Identity is updated when biographical fields change. Also, reformat the if condition across multiple lines for readability.   Remove the user login history tab from my preferences (#151293) Problem The My-Signins page has been moved to the audit section on the user profile and enhanced. The Signins on my preference is deprecated and no longer accurately shows a user's sign-ins   Solution Remove the Login History UI from the account user view. This deletes the _LoginHistory.cshtml partial and removes the corresponding nav-link and tab-pane rendering from Index.cshtml (including the LoginHistoryViewModel creation/render call). Cleans up the user account page by removing the sign-in history feature and its markup.   Add confirmation modal for job positions (#151300) Problem Job positions should have a confirmation modal similar to Job Profiles when copying   Solution Added a new modal and the same copying functionality to Job Positions   Resolve issue where active positions linked to inactive profiles could not be found on the org after being linked (#151113) Problem Position does not show after being added to the org node    Solution The check about active positions was extended to check for active job profiles also. The same was done for the inactive check   Translations Resolved translations (#151488) Problem Incorrect translation used When submitting from Ajax through a handler, the basePage Model of translation T() has no translations anymore due to the page dropping the list reference and needs to be refreshed from cache    Solution Added a correction to the translation to be retrieved from cache on ajaxHandlers called   Data Warehouse Updated C_03549_99999_monGenerateDWHDataIntegrityReport to align with Materialsed changes (#151372) Problem The script is failing due to materialised changes    Solution Updated C_03549_99999_monGenerateDWHDataIntegrityReport to align with Materialised changes