Version 9.1.173 (21 July 2025)
People Management
Unable to access employee profile (#134130)
Problem
- When a ruleset has more than one loction master data record, the people edit page break between different users who is linked to different locations. Only one location is stored in the cache, and then the other person's location cannot be found. This breaks the summary and address views.
Solution
- Updates the `ListMasterDataCachedAsync` method in `src/Web/WebMVC/Services/MasterDataService.cs` to improve the handling of `RecordIds` during filtering.
- The changes simplify the logic and ensure the original `RecordIds` are preserved for filtering operations.
- Changes to `ListMasterDataCachedAsync`: * Updated the method to store the original `RecordIds` in a separate variable (`originalRecordIds`) and set `RecordIds` in the filter to an empty enumerable. This ensures the original values are not overwritten during processing. * Modified the filtering logic to use the `originalRecordIds` variable instead of directly accessing `cfgFilters.RecordIds`. This improves clarity and preserves the integrity of the original filter data.
Switching profiles on PM (#131168)
Problem
- On larger rulesets, viewing a user's profile on people management can sometimes timeout, especially if they are viewing a terminated user (which is not stored in people group users cache). The check to see whether the admin has access to the user is also excessive, requiring an entire people group of users to fetch and then just checking whether the user ID exists in that set or not. Recent improvements to MaterializedPeopleGroupUsers are already alleviating some issues with this, but an additional change is described below to streamline this check.
Solution
- Change HasUserInActivePeopleGroup in the UserService to check if the cache is populated for that people group. If not, emit an integration event that will fetch and populate the users for that people group into the cache. Added new PG gRPC methods to only do a check whether the provided userid exists within the provided people group id on MaterialisedPeopleGroupUsers and return true/false. This happens regardless of the above check for cache.
Send Welcome Notification displays the incorrect username for the user with a ( ' ) (#134187)
Problem
- When a user has the " ' " character in their name, the system does not render this character correctly.
Solution
- Modifying the frontend logic to render it as raw HTML, which then displays the character correctly.
Kudos show duplicates on Dashboard (#134263)
Problem
- The user can send a KUDO to themselves, which creates issues with the Kudo Give and Receive system.
Solution
- Prevented the user from being able to send a kudo to themselves by modifying existing logic.
- Added a new banner to distinguish the signed-in user from other users in People Management
Performance Management
Bulk delete (#133673)
Problem
- When contract periods are deleted in bulk action, the contract itself is still not deleted
Solution
- Add a new case to delete the contract when there are no other contract periods that are not deleted
Import Key Competencies for Templates (#133580)
Problem
- When importing Review Setup Templates, the section 'Key Competencies' is not allowed and therefore dismissed. Some Business rules that validate the data only occur in the import, which can lead to the import failing
Solution
- Implemented a new change to allow the section ' Key Competencies' to be added within the Import. Modified the validation logic that checks the Import file with the few business rules that were not checked before scheduling the import
Action Plan not pulling through (#134225)
Problem
- When retrieving action plan data to display for the functionality to copy from, an error occurs that needs new implemented data fields which was not provided in the query
Solution
- Enhanced method to provide and retrieve the needed fields for display
Error When importing Templates (#134207)
Problem
- When a decimal value has been added with a separator that is different from the machines culture, the value is marked as failed and can not be converted. When the Stretch Target section KPI is not picked up with changes made for Key Competencies
Solution
- Change the conversion to not check at the culture and make use of the default invariant culture. Add a check for stretch targets to resolve the field value
VB item weights not copied when weights are entered manually (#133589)
Problem
- When auto copy is enabled, for the value and behaviour sections, the weights were taken from the Review Setup (by design). This however, is not following how business wants to use it and when auto copy is enabled, it should take the items & weights from ALL the sections from the source contract.
Solution
- Modified the copy contract from previous functionality to take the items & weights from the source contract for the Values & Behaviour and Leadership Behaviour sections when auto copy is enabled.
Report Builder
Training Report (#133748)
Problem
- Incorrectly setting up the report builder filters can lead to incorrect data being returned.
Solution
- Modifications to the data retrieval to ensure correct behavior for filter conditions and enhancing the readability of the additional filter examples to more clearly highlight usage.
Employee Profile Data Category appears multiple times on Report Data Access list (#133537)
Problem
- Employee Profile Data Category appears multiple times on the Report Data Access list
Solution
- Ensure that duplicate categories do not display by filtering out archived categories.
The imported report does not have the people group filter (#134242)
Problem
- When a report is exported, the check to show the people group filter is not included in the export data, as well as when an import is done, the fields are not updated as there are no fields parsed in the export
Solution
- Modify the export to include the field, and also update the fields within the import based on the data in the export file.
Language
Date format (English SA) not being applied to the report (#133070)
Problem
- Dates and times are not converted properly to the culture format of the logged-in user on the report builder.
Solution
- Ensure that glibc is copied properly to the final image in the docker files, as it was only installed in the build stage (all but WebMVC - is handled correctly).
Tenant Management
Prevent tooltips from displaying until the page has finished loading (#133170)
Problem
- When loading the page, if a tooltip is showing and the page finishes loading, the tooltip gets stuck on the page
Solution
- Delete orphan tooltips after the page finishes loading
Screenshots not displaying correctly (#133883)
Problem
- Not all elements were being consistently captured after user feedback
Solution
- Use the native screen capture to get the image exactly as the user sees it
Notifications
Welcome Email Notification | Reset Password Link not working (#134161)
Problem
- When a welcome email is generated, the reset link and the security key do not match the web-encoded security key when used, and it fails to log in. When a standard user tries to send a welcome email, the feature gives and error
Solution
- This pull request introduces updates to improve security and logging in the Account and Identity services. Key changes include encoding security keys for password reset URLs, enhancing logging for invalid security keys, and removing redundant authorisation attributes.
Exports
Streamline V9 to V8 sync (#126727)
Problem
- When a user syncing issue arises, it causes users to not be able to log in to the learning portal
Solution
- Implement a new endpoint to retrieve simplified data to sync
Data Warehouse
PAS report shows template ID instead of the name (#134074)
Problem
- The TemplateNames for ContractPeriods are being stored as IDs when the templates are copied
Solution
- Added a step within the DWH that will update the TemplateName field correctly if it has been copied for ContractPeriods
PAS report shows template ID instead of the name (#134074)
Problem
- There are scenarios where the TemplateNames field is not updating correctly within DWH pdmContracPeriods due to scenarios with users and the current DataSource setup
Solution
- Added a short-term solution that will update the TemplateNames based on the scenarios identified
Ruleset Management
The default displayed language is not applied from the Login page (#132901)
Problem
- The login screen is not correctly selecting the default language defined in the ruleset. When a user logs out, their cookies are cleared, causing the login screen to revert to the system’s default language rather than retaining or applying the intended user's ruleset default.
Solution
- Updated the retrieval process to fetch and apply the ruleset’s default language during login. Additionally, upon user logout, the culture cookie is now set with a short expiration time (a few seconds) to ensure it is deleted, allowing the login screen to re-render with the correct default language settings.
System Access tab loads indefinitely (#134150)
Problem
- Randomly, when opening the system access page for ruleset management, an infinite loading indicator appears.
Solution
- This is due to components being used before they are properly configured. This was fixed by ensuring the components are initialized correctly and then the system can access them.
Identity and Authorisation
External user registration (#134195)
Problem
- After a user has registered, they are locally redirected to a confirmation page or return URL parsed in, because of the local redirect function being used, this causes issues with return URLs that contain '~/' values
Solution
- Enhanced code check to redirect based on a logic expression for '~/' values and do a Local redirect if no character found.
The default displayed language is not applied from the Login page (#132901)
Problem
Solution
SigniChat
Unable to open/initiate chat (#133060)
Problem
- Error occurs when the user types a message using Signi chat.
Solution
- Error occurred due to the name of the user being stored in the 'Name' claim and not in the 'GivenName' claim. Updated method to check both 'Name' and 'GivenName'
Learning Management
Ellipse text after a minimal number of characters (#133729)
Problem
- The system displays the entire Training Intervention name in the delete modal, which can be overwhelming to the end-user
Solution
- Use an extra-large modal for delete to improve the display of large training intervention names.
Limit the number of cycles to 10 per subject (#133746)
Problem
- Users were able to add more than 10 cycles, which caused the marksheet layout to break and made it difficult to read or use.
Solution
- Added a limit to prevent adding more than 10 cycles. This helps keep the marksheet neat and easy to work with. Now, the "Add Cycle" button automatically stops working once the limit is reached
HR Processes
Error displayed when setting Sensitivity Fallbacks (#134265)
Problem
- When updating the fallback configuration, instead of retrieving the username from the identity service, it tried to retrieve the surname.
Solution
- Retrieve the username correctly from the identity service when updating the fallback configuration.
The drop-down contains duplicates of persons in the process (#134270)
Problem
- [Request More Information] The drop-down contains duplicates of persons in the process.
Solution
- Fix duplicates displaying on request for more information by ensuring that the user and level are unique
Imports
Unable to execute an Additional Service User Import (#134257)
Problem
- When including support users, the user sync fails
Solution
- Remove the support user type to be excluded from the external user import sync
Dashboards
HR Processes: General HR Requests ChatBot (#133209)
Problem
- Additional fields like position in org and job position are not available to the bot
Solution
- Key updates include the addition of a new `BotUserDetails` record, refactoring variable declarations for consistency, and extending user-related services to include master data integration.
- customData: { person_name: person_name, person_surname: person_surname, person_initals: person_initals, person_known_as: person_known_as, person_title: person_title, person_user_id: person_user_id, person_username: person_username, person_email: person_email, person_mobile_number: person_mobile_number, person_language: person_language, person_ruleset_id: person_ruleset_id, person_access_token: person_access_token , person_id_number : person_id_number , person_race: person_race, person_gender: person_gender, person_citzenship: person_citzenship, person_home_language: person_home_language, person_employee_code: person_employee_code, person_is_linemanager: person_is_linemanager, person_birthday: person_birthday, person_work_number: person_work_number, person_profile_image_url: person_profile_image_url, person_position_code:person_position_code, person_position_title: person_position_title, person_position_start_date: person_position_start_date, person_position_end_date: person_position_end_date, person_location_in_org: person_location_in_org }
- These changes collectively improve the application's ability to handle detailed user data, streamline code readability, and integrate master data for enhanced user-related operations.
User Permissions
Profile Returns an Error on User Permissions (#134137)
Problem
- If a role has only one permission, excluding the permission from a user causes the role to crash
Solution
- Return no permissions to view since there are no permissions left.
System Access
The email sent contains a non-working link (#134262)
Problem
- When using a redirect URL, the login page causes an infinite loop. The base layout fails on pages where the breadcrumbs are not used
Solution
- Improve input handling and error resilience in two areas of the codebase. The most important changes include enhancing the parsing logic for input strings in the login page and adding error handling to the shared layout view.