RELEASE NOTES
A collection of the Release Notes for the different versions of the system.
List of the Release Notes
Signify continually develops new functionality and resolves issues, so our system is continually improving. We also develop exciting new modules in line with how the use of Human Resource Information Systems is changing. A list of the Release Notes for the different versions is shown below.
Click on the Document or Known Issues links below to download the documents.
2026
Version
Date
Notes
v8.31
Jan
Document
Known Issues
The 8.31 release contains the following system improvements and changes:
Enhancements to the Training Intervention Import
The introduction of Custom URLs on Pathways
Pathways Admin Tree View page styling enhancements
Additional exclusion conditions have been added to Pathways Target Audience
Various changes which make cross-schema access to certain Learning Content possible
2025
Version
Date
Notes
v8.30
Oct
Document
Known Issues
The 8.30 release contains the following system improvements and changes:
Enhancements to the setup of MP4 and PDF content on the Content Library and the way they are displayed on My Achievements
Audit information for changes to Pathways has been introduced
v8.29
July
Document
Known Issues
The 8.29 release contains the following system improvements and changes:
Enhancements to the display and navigation of pathways
LMS Portal displays changes and the ability to send notifications from the LMS Portal
v8.28
May
Document
Known Issues
The 8.28 release contains the following system improvements and changes:
Digital signing on Licences and Assessment attempts
The Salary Review module has been enhanced,
Improvements on the LMS Portal module
Enhancements to the Recruitment module
v8.27.1
Apr
Document
Known Issues
The 8.27.1 release contains the following system improvements and changes:
Enhancements to Learning Portal’s Learning Menu
v8.27
Feb
Document
Known Issues
The 8.27 release contains the following system improvements and changes:
Enhancements to the Recruitment module,
Enhancements to the Learning Store module,
New features on the Assignment & Moderation module
2024
Version
Date
Notes
v8.26.1
Dec
Download
The 8.26.1 release contains the following system improvements and changes:
New features on Pathways
Enhancements to the Career & Succession modules
Newly introduced import
v8.26
Nov
Download
The 8.26 release contains the following system improvements and changes:
New features on Pathways
Enhancements on Personal Development Plan
v8.25
July
Download
The 8.25 release contains the following system improvements and changes:
Enhancements to the Pathways module,
Enhancements to the Mentors & Coaches module
v8.24
April
Download
The 8.24 release contains the following system improvements and changes:
Enhancements to the Salary Review module
Enhancements on the Licences module
Multifactor Authentication on Login
Enhancements to Notifications
2023
Version
Date
Notes
v8.23.1
Nov
Download
The 8.23.1 release contains the following system improvements and changes:
Enhancements to the Fit & Proper tab on the LMS Portal,
Enhancements on the Salary Review module
v8.23
Oct
Download
The 8.23 Release contains the following system improvements and changes:
Improvements to the LMS Portal.
Addition of functionality which allows Facilitators to sign assessment transcripts.
Changes to the Job Profiler module.
v8.22
July
Download
The 8.22 Release contains the following system improvements and changes:
Enhancements to the Sharepoint Step on Learning Pathways
Enhancements to IDP Discussion’s Development Identified tab
Enhancements to the Training Scheduling booking pages
Enhancements to the Assessor/Moderator Library
v8.21
May
Download
The 8.21 Release contains the following system improvements and changes:
Modifications to database structure to facilitate easy integration with the new Signify system
Enhancements to Learner Records pages
Updates to Administration pages
v8.20
March
Download
The 8.20 Release contains the following system improvements and changes:
New content type accommodation on Learning Pathways
Enhancements applied to Training History tab on the LMS Portal
Performance improvements on the Training Requirements tab on the LMS Portal
Setting added to Assessment Builder in order to manage open attempts optimally
Redirect link added to Leave Request notifications
Enhancements to Employee Funding
2022
Version
Date
Notes
v8.19
November
Download
The 8.19 r elease contains the following system improvements and changes:
A costing Structure tab has been added to Programmes, Unit Standards & Qualifications detail
Various changes have been made to the Talent Acquisition page
Learner Records can now be transferred from one schema to another New Succession & Career Planning reports have been introduced
Changes have been applied to Candidate Linking and Placement
v8.18
August
Download
The 8.18 release contains the following system improvements and changes:
External candidates may now be placed via the API on Vacancy Tracker
A requisition may now be cancelled at any time during the process on Vacancy Tracker
A new Pathway Type has been introduced to Pathways
The Rating modal pop-up has been added to the end of Pathways
New Appointment and Transfer rule changes to Succession & Career Planning
A new Movement Reason drop down has been added to employee’s appointment information
v8.17
June
Download
The 8.17 release contains the following system improvements and changes:
Enhancements to Succession and Career Pathing
Extra functionality and information on the Fit and Proper tab of the LMS Portal
Ability to add pathways to a Learning Journey
Styling and information on Job Profile Report
Option to log into the system with an email address or employee number
Training costs have been added to PDP
v8.16
April
Download
The 8.16 release contains the following system improvements and changes:
Additional functionality added to Pathways,
Additional features and functionality on Training Scheduling
Deletion reason enforcement on Learner Records
Enhancements on Reports
v8.15.1
January
Download
The 8.15.1 release contains the following system improvements and changes:
Various corrections and enhancements to existing functionality
2021
Version
Date
Notes
v8.15
November
Download
The 8.15 release contains the following system improvements and changes:
User and Usage Report now include Signify Mobile Application data
Performance Agreement Status Report to display not yet approved scores
New Fit & Proper tab added to LMS Portal
Email Sent Report has been added
Next Available Course Step setting
v8.14
September
Download
The 8.14 release contains the following system improvements and changes:
Option to add a subgroup as recipients on Due Date & Notifications
Now able to set Appointment Requirements as a Condition for Due Date & Notifications,
Performance Agreement Section Averages per Employee Report has been developed,
A wizard has been added to create Performance Management templates
Job Profiler Competencies page enhancements,
Vacancy Tracker API daily feed of placements by third party & retrieval of details
Talent Management now shows Current Location & Transferability and Emergency Cover & Successor,
Notification now sent from Talent Management when an employee is ‘Ready Now’
Search functionality has been added on list of certificates on Training History
Ability to download simultaneously all certificates achieved
A report has been developed to indicate documents downloaded on Pathways
Job Profiler Competencies weights, levels, proficiency level and descriptions have been enhanced
v8.13
May
Download
The 8.13 release contains the following system improvements and changes:
Changes made to accessing Pathway administrative pages
Enhancements on the LMS Portal
v8.12
March
Download
The 8.12 release contains the following system improvements and changes:
Addition of bypass login link to Vacancy Tracker Notifications
Ability to add different weight percentages for review periods
Check in changes applied to Performance Management
Unsaved data warning implementation on Performance Management rating page
Clicker Assessments facility for multiple consecutive assessments
STO ability to select engineers/licence administrators across all locations
Public licence restrictions displayed on licence cards
Introduction of various reports
Enhancement of List of Training Interventions in Library Report
Enhancement of SharePoint Server configuration
v8.11.2
February
Download
The 8.11.2 release contains the following system improvements and changes:
Various minor enhancements and fixes to existing functionality
2020
Version
Date
Notes
v8.11.1
December
Download
The 8.11.1 release contains the following system improvements and changes:
Pathway changes to accommodate school system
Assessment Builder Clickers
v8.11
November
Download
The 8.11 release contains the following system improvements and changes:
New WSP/ATR Dashboard [Client specific],
SMS functionality on Forgot Password,
Mentoring and Coaching has been revamped,
Updates on Performance Management,
Reporting updates,
Updates to the Training Libraries’ Certificate functionality, and
Vacancy Tracker (Recruitment Requisition) changes.
v8.10.3
September
Download
The 8.10.3 release contains the improved version of the Leave Module as well as a number of minor bug fixes on other modules in the system.
v8.10.2
August
Download
The 8.10.2 version contains the integration between Signify and Signiflow for the licence card digital signatures.
v8.10.1
July
Download
The 8.10.1 version contains the following new and updated features:
Phase 2 of the IDP Discussion including reports and dashboards,
Learner Record import enhancements,
The data displayed on Performance Management screens,
Theme Management changes, and
Extra search functionality on Vacancy Tracker.
V8.10
June
Download
The 8.10 version contains the following new and updated features:
Integration with OrgChart
Pathway enhancements:
Link Share,
Next Available courses visible at end of pathways, and
Scorm packages can be downloaded
Performance Management Enhancements:
Line of sight,
Template weight changes,
New warning messages,
Pop-over messages on ratings,
Simplified performance agreement print preview,
Check-ins throughout the performance cycle, and
Employee dashboard changes
V8.9.1
February
Download
The 8.9 version contains the following new and updated features:
Compliance Programmes Dashboard
IDP Discussion
Position centric reporting lines
Job Profiler imports
Leaderboards
Learner Record fields
Changes to My Details and Target Audiences
Styling changes and some enhancements to Performance Management
Report updates
V8.9
January
Download
The 8.9 version contains the following new and updated features:
Compliance Programmes Dashboard
Position centric reporting lines
Job Profiler imports
Leaderboards
Changes to My Details and Target Audiences
Styling changes to Performance Management
Report updates
2019
Version
Date
Notes
V8.8
October
Download
The 8.8 version contains multiple changes to the Ask the Expert, Performance Management and Notification Plan modules.
Major changes have been made to the SCORM integration, while minor changes have been made to the following:
Event Management – Attendance Register,
LMS Portal,
Manage Employees – Learner Records,
Master data pages,
System Date Format
V8.7
June
Download
The 8.7 version mainly contains changes made to the Talent Management module, which is now called Succession and Career Planning. Other minor changes have also been implemented to the LMS Portal, Master Data pages, Performance Management and Reports.
V8.6.1
March
Download
In Version 8.6.1 the following improvements have been made:
The API has been updated to accommodate Custom fields in the Employee Import.
Badges have been updated to allow for maximum and minimum values.
The Action Plan on Career Conversations can now be printed.
No changes will be allowed on inactive Performance years.
Client Specific report changes has been made.
Vacancy Tracker now integrates with Direct Hire through Web API calls.
V8.6
February
Download
In Version 8.6 the following improvements have been made:
Changes to the API to accommodate User permissions as well as Maintenance mode.
A new Consolidated import that includes Training Interventions, Learner Records and Learner Record cost.
Specific date expiry on Learning Store items.
Workflow history on Licences.
Ability to combine the Custom and Additional fields in Manage Employees
New reports
Ability to accommodate different Question Mark pip files.
Pivotal Programme changes to the Training Libraries.
2018
Version
Date
Notes
V8.5
December
Download
In Version 8.5 the following new development have been done:
The new learning mobile app has been released as a first test-draft version.
Notifications can now be scheduled to go out from the pathways in order to communicate due dates to users.
In Version 8.5 the following improvements have been made:
Assessments can be disabled and / or replaced on the system, preventing administrators from using the incorrect assessments in pathways.
The look and feel of dashboards have been enhanced.
Duplicate requirements (direct or inherent) can no longer be added to Job Profiler.
Programmes will move to outstanding on the LMS portal when linked items expire.
Master data can be added to the system for WSP / ATR Categories.
Training Interventions / Unit Standards and Programmes can be disabled or replaced.
Pathways can be set to display each step as a new page.
Table changes was made to optimise system data access.
API calls have been added to the system.
V8.4
September
Download
In Version 8.4 the following improvements have been made:
HTML Instructions can now be added to Career Conversation
Programmes can be linked to Job Profiles using an import file
Positions can be searched on Job Profiler
Qualifications offered by my learning provider has been added to the PDP module, to Training Requirements on the LMS and to Manage Employees.
Qualifications from the employee’s job can now be viewed on the PDP and LMS Training Requirements.
My Employees have been merged into My Colleagues and the My Colleagues module has been updated and improved.
Security settings have been improved, and
New reports are now available.
V8.3
July
Download
In Version 8.3 the following enhancements have been made to the system:
The general document uploader will now auto-populate the document’s description if the user did not enter a description first.
Multiple learner records can now be created from an event’s attendance register.
Documents that should be available on events can be selected.
The Login and Registration pages have been consolidated into one.
Learner Records have a new field called ‘Compliance Date’.
Additional functionality has been added to the following master data pages: Unit Standards, Programmes and Qualifications.
Changes have been made to the Leadership Behaviours and Finalization of Performance Management.
Multiple report changes have been made.
V8.2
June
Download
The 8.6.2 version mainly addressed system issues and stability optimization.
Also included is changes made to My Colleagues as well as some report changes.
V8.1
April
Download
In Version 8.1 several improvements have been made to the new version 8 ‘look and feel’ as well as general functionality and user friendliness. The following modules have been enhanced in the latest version: • HR Processes • Learner Records • Licences • LMS Portal • Manage Employees and Employee Details • Master Data • Performance Management • Reporting • Training Interventions and Import • Vacancy Tracker
V8
March
Download
It’s out with 7 and in with the new and improved Version 8! Version 8 show cases the new and improved look and feel of the Signify system, enhancing end user experience and satisfaction. The following has also been developed/enhanced for the latest version: • POE Moderation • SMS Scheduler • Offline reporting • Extra fields have been added to the ‘Employee Self Service; • Leave provision for ‘x’ days worked • Reinstate employee • Display additional information on Org Card • Use of apostrophes in Org name • Org search added to pathway target audience • Unique name checks throughout learning libraries • Vacancy tracker changes • Vat on Learning Store Invoice • WSP/ATR Pivotal Training Checkbox
2017
Version
Date
Notes
V7.35
December
Download
In version 7.35 a new module – Career Pathing – has been added to the system, which allow an employee to project their career path within the company.
The following improvements have also been made:
Changes to Career Conversation / Connect Questionnaire have been made to assist in administrative actions.
Dashboards have been created for Career Conversation / Connect Questionnaire.
Training Intervention Requirements on Job Profiler now includes a ‘Required for’ column.
Licences have been changed on both ad hoc licences and grouping function.
A setting has been added to adjust processing rules for Ad hoc licences.
A new Merchant and System messages have been added to the Learning Store.
Job Codes have been added as a search parameter on Manage Employees.
Assessments now includes a ‘Back’ button to enable the user to go back to the pathway without completing the entire assessment.
Portfolio of Evidence can now be completely administrated on the pathway.
Multiple minor changes have been made to Performance Management.
V7.34
October
Download
In version 7.34 the ‘My colleagues’ module has been added to the system. The following improvements have also been made:
Appointment Category has been added to Job Profiler to distinguish between appointments that should be able to link certain items.
Licences now includes an import and changes has been made to the Ad Hoc section of licences to allow for additional training and/or licences to be added to employee profiles.
The ability to log into different schemas with the same user has been made available.
Audit is now kept and visible on screen for Employee Number changes.
Employee profiles for those working on multiple sites (schemas) can now handle learner records from all schemas and distinguish between licences on different sites / schemas.
Pathway Connector has been enhanced to include Unit Standards and Programmes as possible rules on the pathway.
The PDP module now makes provision for the ad-hoc licence training.
Notifications have been added to the system.
A setting has been added to ensure Training Interventions are unique between schemas.
Public licences have been added to the workflows of the workflow recipients.
V7.33
September
Download
In version 7.33 the following improvements have been made:
Connect Questionnaire has been added to the Career Conversation module.
The Employee Licence screen layout has been changed and the licence processing has also been adjusted. The cards available for printing licences have also changed.
The Licence Dashboard has been amended to allow re-routing of licences.
The payment gateway has been improved.
When uploading documents to Learner records the user will have the ability to auto generate the document name.
Performance Management look and feel has been changed (the old look and feel is still available).
Several reports have been added and changed.
V7.32
August
Download
In version 7.32 the following improvements have been made:
Assessments can now be exported, and therefore printed, from assessment pages.
A document can now be loaded to the Assessor / Moderator master data, for external verification purposes.
Employee Evaluation’s module Information Messages can now be customized by the administrator.
The look and feel of learner records have been changed, to look the same as the rest of the system. Learner record duplication verification can now also be switched on per schema.
Licence Notifications have been updated.
Maintain user pathway now has added instructions on the Certification point step.
New reports have been developed.
The New Vacancy Tracker module has been completed.
V7.31
July
Download
In version 7.31 the following improvements have been made:
The Dashboard module has been enhanced so it will be able to display staggered charts. New Dashboards have also been developed for Performance Management and Talent Management (5 box).
The pathway module has been optimized to make it user friendly for mobile devices. The pathway display on the LMS as well as the Pathway steps have been optimized to be more reactive.
SMS’s can now also be sent from the pathway to enable a user to do an entire pathway from their mobile device or pc without having to log into the system first. This works on the same principle as the SCORM SMS’s.
The overall evaluation screen on Performance Management now also show the CWA score for easy viewing.
The quick appoint functionality now has a setting to add two fields to the screen. These fields are ‘Race’ and ‘Gender’.
The ability to add client specific templates for exporting employees’ Previous work experience has also been added to the Manage Employees module admin page.
The Talent Management Module (5-box) has been revamped to have a new look and feel.
V7.30
April
Download
In version 7.30 the Career Conversation has been added as a new Module to the Signify system. This new module is a ‘lighter’ version of Performance Management, which focuses on a conversation between the employee and their manager. The employee’s role profile is discussed and the main focus is on the key performance areas, key performance indicators and competencies. These KPA’s, KPI’s and Competencies are marked as Start, Stop and Continue and all items selected with an output of Start and Stop will form part of the employee’s Action Plan.
The LMS and Pathway look and feel have also been changed to allow for easier navigation and better user experience on mobile devices.
V7.29
April
Download
In version 7.29 the following improvements have been made:
The Dashboard module has been enhanced to include subgroup changes to be used on searches.
Changes have been made to Event notifications that goes out and certificates can now be printed from the attendance register.
Notifications can be enabled to go out when an employee’s employee number changes.
Documents added to Learner records can be downloaded from My Training History.
Job Title and Start Date fields can now be activated to show on registration page.
Access codes have been added as extra security on Assessment builder.
Performance Rating Distribution Report was enhanced to show more data.
V7.28
March
Download
In version 7.28 the following improvements have been made:
Functionality has been added that enables a Learning Administrator to export an existing assessment from the Signify system in the same format that the system requires to import assessments.
Evaluators now have the ability to elect whether or not to participate in an Employee Evaluation.
A new front-end screen has been developed to facilitate the process of importing Employee Evaluation scores into Performance Management. This screen helps you to map which Performance period is mapped to which Evaluation period. You also select the Contract Weight Items that will be used.
A new setting has been added that allows a System Administrator to specify whether or not it is mandatory to upload a document for a qualification.
An improvement was made to the Manage Attendance screen so that cancelled events no longer appear on the list of events when accessing the Event List via the Manage Attendance menu item.
Enhancements have been made to the Portal Web Part Target Audience functionality. An administrator is now able to restrict access to certain Portal menu items for a specific company code.
Functionality was added to allow administrators to set Company Logos, used for Job Profile reports, for each schema.
The process of creating Training Interventions from a Pathway has been improved. When you choose to create an Intervention, you will now be directed to the Intervention creation screen where you have to fill in all the required fields.
The ability to create Training Interventions from Pathway Steps has been added to more Pathway Step Types.
A change was made to the Manage Employees module to only show the subsidiary field when the Salary Review Module is active.
A new colour coding feature was added to the Training Role Monitoring Report which enable a system user to easily distinguish between the different training completion statuses.
A new report was developed to enable a system user to extract Organisation Structure information that was changed during a specified period.
Validation has been added on the SCORM step on Pathways to check if the package is in the correct format and that the required files are included in the package.
New functionality has been developed to enable a workflow administrator to force the creation of workflows for individual licences should they not go into workflow with the normal licence processing.
V7.27
February
Download
In version 7.27 the following improvements have been made:
The entire Leave module has been rewritten in order to cater for more scenarios and better calculating abilities. Phase 1 of the re-write has been made available in this version and more improvements will follow in phase 2.
Refresher courses can now be set-up on pathways and will be displayed on the PDP as soon as the refresher becomes available to the employee.
The Licence Workflow has been amended to cater for different STO’s and Engineers’ per Licence type to be set-up on each schema.
A password can now be selected when using the quick appoint on manage employees. This password will not have to be re-set on the employee’s first login.
2016
Version
Date
Notes
V7.26
December
Download
V7.25
November
Download
V7.24
October
Download
V7.23
September
Download
V7.22
August
Download
V7.21
July
Download
V7.20
July
Download
V7.19.2
June
Download
V7.19
June
Download
V7.18
May
Download
V7.17
April
Download
V7.16
March
Download
V7.15
Febuary
Download
V7.14
January
Download
2015
Version
Date
Notes
V7.13
December
Download
V7.12
October
Download
V7.11
September
Download
V7.10
August
Download
V7.9.1
July
Download
V7.9
June
Download
V7.8
January
Download
List of the Release Notes (2026)
Version 9.1.224 (13 April 2026)
Ruleset Management
Fix the save button incorrectly disabled when changing the disclaimer acceptance message (#147508)
Problem
When the display disclaimer toggle is inactive, and you change the acceptance message, the save button is incorrectly disabled.
It should allow saving when the toggle is inactive and changing the disclaimer or acceptance message.
Only when the toggle is active must the disclaimer/acceptance messages be required, and the save button be disabled when they have no value.
Solution
Correct the onchange condition of the acceptance message to only disable the save button when the show disclaimer toggle is active, and no text is provided.
Communication Portal
Resolved discussions name not being searched on (#147601)
Problem
When searching for discussions, the search for the discussion name is not implemented
Solution
Added a change to search on the discussion name
Performance Management
Fix styling on User Banner for long usernames (#147662)
Problem
With the current banner layout, when the user has a long username, collapsing the banner pushes the username down to fit into the container, causing the other elements to overflow the parent container's bounds.
Slight misalignment issue on the expanded banner.
Solution
Changed the layout of user information on the banner to be in line with the people management user details banner, to have the username always displayed on its own line below the name and surname.
Adjusted styling accordingly to ensure proper alignment and no overflows when collapsed or expanded.
Fix issue where the perspectives list is not searchable (#147622)
Problem
When adding a Perspective to a contract, the perspective list on the modal is not searchable.
Solution
Added a callback to filter out the perspectives list when the search input is changed.
Notifications
Resolve anniversary emails being sent to terminated employees (#147374)
Problem
Anniversary emails are being sent to inactive employees
Solution
Resolve anniversary emails being sent to terminated employees
Version 9.1.223 (13 April 2026)
Imports
Make grading types anonymous when running the Payspace connector on a schedule (#146311)
Problem
When pulling grading types during the payspace import that runs on a schedule, an unauthenticated request is received
Solution
This pull request introduces a minor change to the JobProfilerServiceV1 gRPC service by allowing anonymous access to the ListGradingTypes method.
This update makes the endpoint accessible without authentication.
Communication Portal
Recipient and Owner incorrectly displayed (#147067)
Problem
The results being returned are sorted by unread messages. Still, a rule exists that an entry occurs only when the user first opens this, causing NULL values, and that, when sorting this, it takes priority over 1 unread message, for example.
When a user creates a discussion with another user, the owner sees the recipient's name when opening the discussion, but the recipient sees their name as well, instead of the owner's name
Solution
Corrected order clause to match the same as wproperty
Added a check to correctly retrieve the needed details depending on the owner-recipient.
Resolved the "save and add a new" issue (#147474)
Problem
When a user opens a modal to add a new record, it gets the default values rendered for the colour picker and icon selection. Once they save and add a new one, the form gets cleared, but the default values are not initialised, causing an issue on save
Solution
Add a correction to JavaScript to initialise the fields
Performance Management
Change popover display on contract to have all information combined into a single scrollable popover (#146587)
Problem
Because of the new popover component and the fact that on a contract, there are multiple items that each have individual popovers, when you hover over each item quickly, it does not look great with all the popovers opening.
Solution
Combined the popovers for all the L3 items into a single scrollable popover.
Additionally, added a toggle on the contract footer that allows the user to disable the popovers from showing.
Data Warehouse
Resolved error with Audit_ETLSSIS Package (#147404)
Problem
The package failed for the Audit_ETLSSIS Package due to a staging table that is not being used anymore, which causes a SQL Syntax error
AuditID field is missing within the V9 DWHPackage creation of audUserAccess
Solution
Removed Join within Insert of #AuditResults as the Staging Table is not being used anymore
Added field AuditID within audUserAccess
Main Dashboard
Ensured the Kudos of large size can be read in the tooltip (#147381)
Problem
When a large kudo message is sent, the entire message can not be read in the tooltip.
Solution
Extended height and width params of SyncFusionPopover to SyncFusionPopoverWithEllipseText so the tooltip is scrollable.
Increase the size of the maxPopOverLength parameter to ensure the entire message can be read.
People Management
Updating conditional data to match the current business rule (#147175)
Problem
When updating the Start Date in Group/ Start Date in Company to another date (e.g., 2023) and then updating the Current Position start date, the updated Start Date in Group / Start Date in Company resets to the date that it was before the initial update.
Solution
Applying the current business rule, the Start Date in Group / Start Date in Company should only be reset to the oldest appointment start date in appointment history if it is unset or if it is a more recent date than the oldest appointment start date
Updating datatable hidden field handling (#146324)
Problem
Tables are not correctly centred within the card, causing layout and alignment issues.
Solution
Updated how table columns are hidden to align with standard DataTables behaviour.
This prevents hidden columns from affecting the layout and ensures the tables are properly centred
Version 9.1.221 & 9.1.222 (13 April 2026)
Data Warehouse
Adjustments made within jpAppointments, jpJobPositions and jpReportingLines (#146998, #144482, #147178)
Problem
New Status and Currency fields need to be added within jpJobPositions
Currently, the Appointments are only being fetched and stored for active users
The new field CurrentPosition needs to be implemented within jpAppointments
The latest Appointments are being removed if the StartDates are the same
Solution
Added fields PositionStatus, CurrencyName, MaxBudget, MinBudget, ValidFrom and ValidTo into JobPositions
Adjusted the Insert script for Appointments to include inactive users
Updated the IsLatestAppointment field to rather use CurrentPosition rather than manual calculation
Updated step for Appointments to also check for the latest EndDates to ensure that the latest Appointment is not being deleted within the DWH
Changed Update jpReportingLines_Staging_V9 to jpReportingLines to ensure that the latest user details are being captured from accUsers
Adjustments made within LearningManagementReport_ETL (#144417, #147128)
Problem
A step needs to be added for TermResults to fail learners if there are 2 or more subjects marked as absent
Manual adjustments need to be made within StudentSubjects and TermResults
Solution
Added a step to fail learners if there are 2 or more subjects marked as absent within TermResults
Added manual tasks to update/delete entries within StudentSubjects and TermResults
Removed step where marks are updated as NULL if captured as 0
Master Data
Resolved styling on tables (#145109)
Problem
The master data tables were rendering with inconsistent row heights depending on whether they had an ORDER column.
Tables with the ORDER column (like Communication Categories) displayed uniform row heights, while tables without it (like Communication Priorities) showed noticeably taller, uneven rows despite using the same underlying table structure and markup.
Solution
Modified the initialisation logic to always initialise the DataTable regardless of whether the ORDER column exists, ensuring consistent styling across all master data tables.
The rowReorder feature is now conditionally added to the configuration only when displayOrderExists is true, maintaining drag-and-drop functionality where needed while providing consistent visual presentation everywhere.
Resolved global search on items (#144639)
Problem
Search is incorrect, wrong code in the file for master data
Solution
Removed incorrect code and added a global search to the table
Fix Like and NotLike operators for conditions (#147155)
Problem
Unable to filter on Operator 6 and 7 (like and not like) using master data conditions from the generic master data api call.
Solution
Prepend and append filter value with '%' when using LIKE operator types
Resolved styling on colour-pickers (#145109)
Problem
Styling for colour pickers-incorrect
When opening the modal, it does not render the colour, or when changing
Solution
Added styling updates after the upgrade; styling changed.
Remove the colour-picker class, new styling on that class broke this, as it is only used for an identifier, changed safely
System Access
Resolved release history not updating (#147064)
Problem
When clicking on the release history on the users profile, it loads and fails.
When updating the release history and then saving, it fails on the save as it tries to retrieve EditedUser for auditing, but the entity has no fields relating to this
Solution
Added an interface to not audit the release history view for a user
Communication Portal
Resolved Materialised Users not receiving updates (#147364)
Problem
Using statements for contracts to be received from RabbitMQ events are referencing incorrect using statements, which caused no events to be consumed. So no users are updated for materialised users
Solution
Corrected using statements
Resolved incorrect recipient information for new discussion (#147070)
Problem
When starting a new discussion, incorrect details are shown on the recipient's existing channels
When the user logs in and is not the owner, it shows its own details as if it were discussing with itself
Solution
Correct SQL query
Add a check to show the owner or recipient details
Adding additional styling (#146725)
Problem
The table overlaps the card in the background.
Solution
Added styling to ensure the card grows with the table
Performance Management
Resolve edge case where modifying objectives after approval and adding and/or removing items causes item weights to not sum to 100 (#147159)
Problem
There are specific conditions where a user may modify previously approved objectives, and then proceed to add/remove perspectives, kpas and/or kpis.
This manipulation after the fact messes with the previously calculated weights, and adding a new item results in the new weight calculated being either less than 0 or greater than 100 for the relevant item's KPA / Level2.
This is mostly applicable to contracts where the Weighted over Section setting is enabled.
This leads to a further edge case where, due to the mixture of high and low percentages on the weights, the calculated weighted averages of the KPAs end up as large decimal values with +10 precision, which all sum to 1 (100%).
However, DB only permits decimals up to 4, implicit truncation happens and causes the calculation to gou out by 0.0002.
This will create outliers during rating, where the item score may be off by a range of 0.001 - 0.01 when calculated.
Solution
When the level2weight in this instance is less than zero, make it zero.
This is done only when the weighted over-section setting is in use, and can be set to zero since the approval function will redistribute the weights accordingly.
When the redistribution happens during the objectives approval, do a check to see if, from that perspective, the total kpa weight is not 100 (exceeds margin of error), and if so, redistribute the missing margin to the last kpa - > kpi item.
Eg, Last KPI goes from weight 0.0745 to 0.0747. Low enough difference in score to not have a major effect.
Removed duplicate icons on picker (#136654)
Problem
Duplicate icons
Solution
Removed duplicate icons
Notifications
Ensure invalid bcc and cc email addresses do not break the notification (#144960)
Problem
Email processing fails when a template contains an invalid cc or bcc email address.
Solution
When a template contains an invalid bcc or cc emails address, rather than throw an exception, clear it instead of breaking the entire process.
Also, process templates within a try catch, so that if one template fails, it does not fail for other templates of the same event too.
Translation
Update French & German translations (#145436)
Problem
Missing translations and translated fields with incorrect context for French and German.
Solution
Update all French and German translations with correct context based on en-GB
Organisational Structure
Resolved List Org Nodes check (#147309)
Problem
In the List Org Nodes, there is a calculation done to see if the org node has any children, but it does not exclude deleted nodes, hence why that node can not be deleted
Solution
Fix query to include a deleted check for the has children calculation
Resolved after adding new org node (#144475)
Problem
After adding a new org path and then clicking on positions, the path is not populated on the right
Solution
Corrected jQuery to the correct value to set the path
People Management
Add missing helpetext and drop down values (#146973, #146976, #146978, #146980, #147043, #147045, #147048)
Problem
Add missing translations
Add disabled master data
Solution
This pull request introduces enhancements to the Job Profiler feature, focusing on better handling and display of future-dated positions, improved accessibility and guidance in the UI, and expanded localisation support.
The changes include backend logic updates, frontend improvements for user experience, and the addition of new translation strings across multiple languages.
Request Replacement button not displaying (#146594)
Problem
The "Request Requisition" button does not display when the Appoint New People group permission is disabled.
Solution
Modified the logic so the Request Requisition button is independent of the Appoint New People permission
Add IsDefault switch back for banners when uploading and add translations (#147044)
Problem
Not able to set banners as the default when uploading
Solution
Add IsDefault switch back for banners when uploading and add translations
Theme Management
Add stable version stamp to theme background URL to ensure it is cleaned from cache when changed (#147274)
Problem
When you change the default login background image for a theme, it does not reflect on the login page.
Because the browser/server caches the image, it never reloads the latest from the persistent volume on the pod.
Solution
Added a stable version stamp to the background image.
When it changes on the theme setup, it creates a new version tick; this value is retrieved by the login page and appended to the image URL.
If no stamp, then we will fetch fresh from the volume.
Fixing styling issues (#146724)
Problem
When editing a theme, some content does not fit within the layout on the left of the page.
This causes a horizontal scrollbar to appear.
Certain fields and buttons are also misaligned or extend beyond the visible area.
Solution
Updated the layout and styling to ensure all content fits correctly and displays as expected.
Job Management
Added new Job to recalculate future appointments (#147134)
Problem
New development uses an on-action calculation for the current position, meaning any interaction done on an appointment calculates which appointment is the active one, but for cases where a future appointment start date is set, once that date arrives at the current date, it does not move over unless a user does an interaction on the profile appointment
Solution
Add a new job to use the recalculation service on the user IDs that have a future appointment date set that has arrived
Ruleset Management
Fix Change Icon button on System Menu tab not working (#147268)
Problem
When setting up a Ruleset's System Menu, clicking the Change Icon button on any menu item had no effect — the icon picker dropdown never opened, making it impossible to change the icon for a menu item.
Solution
Fixed the dropdown so it opens and works correctly.
When an item is clicked, the icon preview updates immediately and the selection is saved when the form is submitted.
The original curated list of available icons is preserved.
Added Global admin role as well (#146338)
Problem
Oversight that did not add the Global admin role as well
Solution
Added Global Admin
Identity and Authorisation
Allow http to https redirect to be forced on multiple domains (#147214)
Problem
Current HTTP to HTTPS redirect is only allowed on one domain, but clients who have more than one domain behind a load balancer, where this is required
Solution
Rather use a list of domains to verify against
Resolved autofill in details overlapping (#145431)
Problem
Changes added to toggle on focus for autofill events on a browser tab that does not interact with the control to move the label, but in some cases, it does not always trigger, and every browser has different handling effects
Solution
Added changes to more event handlers and timeouts to take into effect all browsers
Event Scheduling
Removing text-white from the important information section (#146502)
Problem
The system opens the side modal with a section of the Important Information being very difficult to read.
Solution
Updated the font colour so that the text becomes clearly visible and legible.
Learning Management
Add logging for SyncFusion registration on app initialisation and fallback function on marksheet to check for and register licence (#146996)
Problem
Syncfusion invalid license is displayed on the Marksheet page.
Cannot reproduce locally, the app init appears to not fire on production but happens on Master and local, hence why on prod it shows the invalid licence.
Suspicion is that on prod due to environment setup or other factor, the app init never happens when marksheet is loaded (since loaded from external link and loads spa-minimal), and due to that the licence is never loaded.
Solution
Added additional logging to assist with checking when the licence registration fires.
Changed the Syncfusion setup component to keep tab on and expose IsLicenceRegistered to allow checking for that on the marksheet page.
On Marksheet check if the licence is valid and register if not.
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
Version 9.1.219.6 (Support Release - 9 April 2026)
Imports
Make grading types anonymous when running Payspace connector on a schedule (#146311)
Problem
When pulling grading types during the payspace import that runs on a schedule, an unauthenticated request is received
Solution
This pull request introduces a minor change to the JobProfilerServiceV1 gRPC service by allowing anonymous access to the ListGradingTypes method. This update makes the endpoint accessible without authentication.
Version 9.1.219.5 (Support Release - 2 April 2026)
Communication Portal
Resolved Incorrect object null message (#147387)
Problem
The problem with the Dapper query binding to the record was fixed on master, but on release, this issue arose. Could nit-pick over the base on a large development change
Solution
Change from the init constructor to properties
Performance Management
Resolve edge case where modifying objectives after approval and adding and/or removing items causes item weights to not sum to 100 (#147159)
Problem
There are specific conditions where a user may modify previously approved objectives, and then proceed to add/remove perspectives, kpas and/or kpis.
This manipulation after the fact messes with the previously calculated weights, and adding a new item results in the new weight calculated being either less than 0 or greater than 100 for the relevant item's KPA / Level2.
This is mostly applicable to contracts where the Weighted over Section setting is enabled.
This leads to a further edge case where, due to the mixture of high and low percentages on the weights, the calculated weighted averages of the KPAs end up as large decimal values with +10 precision, which all sum to 1 (100%).
However, DB only permits decimals up to 4, and implicit truncation happens and causes the calculation to go out by 0.0002.
This will create outliers during rating, where the item score may be out by a range of 0.001 - 0.01 when calculated.
Solution
When the level2weight in this instance is less than zero, make it zero.
This is done only when the weighted over-section setting is in use, and can be set to zero since the approval function will redistribute the weights accordingly.
When the redistribution happens during the objectives approval, do a check to see if, from that perspective, the total kpa weight is not 100 (exceeds margin of error), and if so, redistribute the missing margin to the last kpa - > kpi item.
Eg, Last KPI goes from weight 0.0745 to 0.0747. Low enough difference in score to not have a major effect.
Version 9.1.219.4 (Support Release - 3 March 2026)
Theme Management
Add stable version stamp to theme background URL to ensure it is cleaned from cache when changed (#147274)
Problem
When you change the default login background image for a theme, it does not reflect on the login page.
Because the browser/server caches the image, it never reloads the latest from the persistent volume on the pod.
Solution
Added a stable version stamp to the background image.
When it changes on the theme setup, it creates a new version tick; this value is retrieved by the login page and appended to the image URL. If no stamp, then we will fetch fresh from the volume.
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.
Ruleset Management
Change Icon button on System Menu tab not working (#147268)
Problem
When setting up a Ruleset's System Menu, clicking the Change Icon button on any menu item had no effect — the icon picker dropdown never opened, making it impossible to change the icon for a menu item.
Solution
Fixed the dropdown so it opens and works correctly. When an item is clicked, the icon preview updates immediately and the selection is saved when the form is submitted. The original curated list of available icons is preserved.
Version 9.1.219.3 (Support Release - 30 March 2026)
Identity and Authorisation
Allow http to https redirect to be forced on multiple domains (#147214)
Problem
Current HTTP to HTTPS redirect is only allowed on one domain, but clients with more than one domain behind a load balancer require this
Solution
Rather use a list of domains to verify against
Imports
Improve performance of user validation report (#145548)
Problem
Compare map data between the current data and the new data sources, a lot of memory
The data is fetched from the account, and the job profiler is slow for a large number of users
When the generated file is more than 30MB, it cannot be sent to the content management for storage
Solution
Implement Hash sets in the compare data method
Implement streaming of Data from the account and job profiler for comparison
The dictionary of results to MVC
The Excel document for content management
Version 9.1.219.2 (Support Release - 27 March 2026)
Identity and Authorisation
Resolved autofill in details overlapping (#145431)
Problem
Changes added to toggle on focus for autofill events on a browser tab that does not interact with the control to move the label, but in some cases, it does not always trigger, and every browser has different handling effects
Solution
Added changes to more event handlers and timeouts to take into effect all browsers
Version 9.1.219.1 (Support Release - 26 March 2026)
Imports
PaySpace API | Not returning Job Grades (#146224)
Problem
Grades are not uniquely imported for job profiles from Payspace
A setting is not available per the payroll connector to define the grading type
When synchronisation is automatically disabled, but the schedule is still active, the PowerShell and PaySpace connectors still run regardless.
Unable to edit and save a Payspace connector without providing the secret again
Solution
This change introduces support for associating a "Grading Type" with payroll connectors, including database, domain, API, and gRPC/protobuf changes.
It also removes several unused payroll providers and makes minor improvements to import command handling and logging.
Correct schedules so that they do not import automatically when auto sync is disabled, even though the schedule is still active.
Ruleset Management
Resolved incorrect role on Upsert virtual tours (#146338)
Problem
The incorrect role is being authorised to save virtual tours
Solution
Corrected role to RulesetAdmin
Identity and Authorisation
Resolved Disclaimers (#145552)
Problem
An incorrect logic check existed for the ruleset disclaimer before pulling 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
Learning Management
Add logging for SyncFusion registration on app initialisation and fallback function on marksheet to check for and register licence (#146996)
Problem
Syncfusion invalid license is displayed on the Marksheet page.
Cannot reproduce locally, the app init appears not to fire on production, but happens on Master and local, hence why on prod it shows the invalid licence.
Suspicion is that on prod due to environment setup or other factor, the app init never happens when marksheet is loaded (since loaded from external link and loads spa-minimal), and due to that the licence is never loaded.
Solution
Added additional logging to assist with checking when the licence registration fires.
Changed the Syncfusion setup component to keep tab on and expose IsLicenceRegistered to allow checking for that on the marksheet page.
On the Marksheet, check if the licence is valid and register if not.
Performance Management
The section weight labels overlap other weight labels (#147088)
Problem
The section weight label is overlapping onto the perspective or kpa label, especially visibly when the weighted over section setting is on.
Solution
Resolve styling issue causing section weight to overlap onto other labels
Version 9.1.219 (23 March 2026)
HR Processes
Ensure file table cannot be filtered (#146728)
Problem
When using global search on HR processes, it also filters the files table (which is incorrect) and results in no files being displayed.
Solution
Remove the filter/search capability from the files table so that it is not affected by the global search
Performance Management
Updated Export button's look and feel (#146586)
Problem
The "Export" button on the View/Print page does not have the same style as other similar buttons on the system.
Solution
Changed export button text to export icon. Updated the button style so that it looks the same as the print button.
People Management
Adding missing text to display on "Not finding the person" modal (#146696)
Problem
There is some information missing on the "Not finding the person" modal.
Solution
An additional bullet point was added to the "Not finding the person" modal.
Ruleset Management
Ensure that when no new payroll secret is set on update, to reuse the secret (#146425)
Problem
Empty secrets sent from payroll connectors cause persistence errors
Solution
Ensure that when no secret is sent, reuse the existing secret
Trimmed leading space from theme (#146654)
Problem
When creating a new theme, leading spaces are not removed if a user adds them
Solution
Trim the space on the Name and code before saving
Imports
Auto-populate the reporting line for the PDP manager based on the line manager (#146225)
Added a custom step to auto-populate the PDP reporting lines with the Line Manager's details (PaySpace import: the reporting lines must be updated automatically)
Version 9.1.218 (23 March 2026)
Report Builder
Resolved SubReport can not be exported (#146574)
Problem
Missing NPM package. Incorrect logic for building the pivot report details, no header values, and incorrect counts starting
On the building of the subreport dropdown buttons, not being initialised after being dynamically built
Solution
Added npm package
Corrected logic for rebuilding the output to the Excel file export
Initialised the MDB dropdowns after being built
Implemented Excel Type replace for Pivot Table reports (#141028)
Problem
When adding multiple columns to pivot on, the back-end runs into a SQL limitation of the length of column name of 128 characters
Solution
When generating the script to execute and formulate columns to pivot, create a new mapping table to reference each column name to an Excel-type column 'A, B .. AA, AB' to allow several columns, and before returning, remap to keep the code and logic as needed.
Avoid intermittent Export Errors (#146243)
Problem
Intermittent errors happen because we don't wait for the file to be exported
Solution
Wait for the file to be exported, and don't go out of scope
Identity
Ensure v8 fallback is only used when v9 password is not set (#146607)
Problem
Users are still able to authenticate using the v8 password after the v9 password was set.
Solution
Ensure v8 fallback is only used when v9 password is not set
V8 password fallback on login (#146398)
Problem
When migrating to V10, a user needs to reset their password to log in and cannot continue using their V8 password until the V9 expiry is reached.
Solution
Introduce support for validating legacy ("v8") password hashes as a fallback authentication mechanism in the identity service.
The changes span the application, database schema, and data access layers to enable seamless login for users with older password hashes.
The most important changes are grouped below.
These changes ensure backward compatibility for users with older password hashes while maintaining the integrity of the authentication process.
Added UI validation check on confirm password and space for recaptcha (#146286)
Problem
Submission can be done, which then results in an error from the backend that the password and the confirmation password do not match
Solution
Add a UI check to restrict and show a validation error message from the frontend side
Event Scheduler
Added event name and ref nr on the confirmation modal (#146253)
Problem
After booking yourself onto an event, the booking confirmation pop-up does not show the event reference number.
Solution
Updated the booking confirmation pop-up to show the event name and its reference number.
Changing button font colour (#146255)
Problem
The system displays the Booking confirmation modal with the "Modify Booking" button not being easily readable due to the Font Color.
Solution
Update font colour to white to make the "Modify Booking" button easily readable.
Added logic to save when whoCanBook is changed with a confirmation Modal (#145624)
Problem
When you change Who Can Book from Everyone to one of the other options, you can’t add people groups until you save first.
Solution
Switching between Who Can Book options now saves automatically.
A confirmation pop-up appears when switching to Everyone to prevent accidental changes.
This helps avoid losing any people groups that were already added.
When marking attendance, and there is only one session, default the drop-down to that session (#146256)
Problem
The default does not show the session if there are no multiples
Solution
When marking attendance, and there is only one session, default the drop-down to that session
No master data for Motivation for booking default values (#146251)
Problem
No master data for Motivation for booking default values.
Solution
Ensure master data for learning management is copied over.
Event Scheduling: Selecting an event/day on the calendar view opens a modal instead of the side view (#145136)
Problem
Selecting an event/day on the calendar view opens a modal instead of the side view
Solution
When clicking on an event on the calendar, do not open a modal; open the side menu.
People Management
Updated styling on the data tables (#146324)
Problem
Paging controls are displayed even when there are not enough items to require paging.
They should only appear when the number of items exceeds the paging limit.
The delete icon is also not aligned correctly
It should appear against the right edge of the table, but there is currently extra spacing.
Solution
Updated the layout and styling so that paging controls only appear when needed.
Adjusted the spacing to correctly align the delete icon with the right edge of the table.
Performance Management
Changed DateTime Picker to Date picker (#146543)
Problem
The new date picker that has been added to the due date field when adding action plans now has a button to select the time as well.
Solution
Removed the time picker.
Updating Score Label Mapping cards to white background (#146352)
Problem
On the Score Label Mapping page (under Performance Years → Review Setups), the mapping header and options are not displayed within the card with the scoring criteria, making the section harder to read.
Solution
Updated the styling so that the mapping header and options are displayed within the card, improving clarity and layout.
No date picker on Action plans (#146349)
Problem
Date time picker not rendering on action plans when using dayjs
Solution
Changed to make use of Syncfusion's picker
Add change to calculate running score when copying manager score to final rating score (#146110)
Problem
Solution
Added a new change to calculate the running score when copying the manager rating to the final rating
Master Data
Fix ListMasterData filter by properly parsing values (#146258)
Problem
Filtering for ListMasterData in JobProfiler/ExportDataService did not work due to the value being improperly parsed as a string.
Solution
Handle different GRPC value types to properly convert the value to the primitive type before calling.ToString()
General
Replace broken popover component with new custom SyncFusion Popover component (#144966)
Problem
Popover on React pages is misaligned and does not behave correctly anymore due to the recent package upgrades. Previous attempts to fix it were unsuccessful, so we decided to replace it with a new popover component.
Solution
Replaced usages of Popover with the new SyncFusionPopover component, a custom component built on the SyncFusion library that works correctly and provides more options for interactability.
Data Warehouse
Adjusted StudentSubjects to include records with ModeratedMark (#144417)
Problem
The DWH currently removes the subjects if all the marks are -1, regardless of whether it has a moderated mark within StudentSubjects
Solution
Added step within StudentSubjects to keep records for scenarios where either all the marks are -1 or where all the marks are -1, but it also has a Moderated Mark
Updated Delete steps for LearningManagement_ETL SSIS Package (#142737)
Problem
The package can fail if LearningManagement is set to false within PackageSettings, which is caused by the delete step for each Data Source within LearningManagement_ETL SSIS Package
Solution
Added IF EXISTS check to prevent deletes when LearningManagement is set to false in PackageSettings for SSIS Package LearningManagement_ETL
Added updates for Data Dictionary (#146242)
Problem
By default, the People Data Source is named as Users - ID Number, which is set by default not to be selectable
Solution
Added Step to rename Data Source Users to People - Added Step to set field ID Number as selectable and searchable
Corrected step for cmFileTypeContents (#143697)
Problem
The package failed on step "Delete cmFileTypeContents" due to an incorrect field name.
Solution
Updated script to use the correct date name field within step "Delete cmFileTypeContents"
Created new Folders for DWH Code Review Process (#145986)
Problem
It is currently difficult to review the DWH scripts due to how SSIS packages work
Solution
Created folders and aligned the container steps that will assist in making code reviews easier using GitHub
Adjusted step within pdmContracts for OverallFinalScore calculations (#146110)
Problem
Currently, the OverallFinalScore are not being updated correctly due to the reference data that is being used
Solution
Updated step by removing @ReferenceDate and added a check if Script is being executed between 12 and 2 am within IF EXISTS to ensure that the OverallFinalScore are being updated correctly within pdmContracts
Tenant Management
Resolve select2 positioning issue (#146533)
Problem
The search box was working, but was not rendering relative to its position after scrolling.
Solution
Ensure the search box appears relative to the clicked spot after scrolling, and clear out any previously opened search boxes
Imports
Add JobProfiler pre-import procedure to remove overlapping appointments (#144266)
Problem
When importing data, all overlapping appointments that may cause a rejection should be removed to prevent rejection.
Solution
Add a custom pre-import script to remove overlapping breaking positions for the user and position.
Learning Management
Resolve the success message not showing on the marksheet and allow the moderated mark to be removed (#146077)
Problem
Success snackbar not showing when saving, also not able to remove the moderated mark.
Solution
Resolve the success message not showing on the marksheet and allow the moderated mark to be removed.
Snackbar is not properly loaded in the SPA minimal page.
Created a helper snack to re-use in spa-mimimal pages.
Version 9.1.217 (23 March 2026)
People Management
Fix adding Employment History opens blank modal (#146276)
Problem
Adding Employment History opens a blank modal
Solution
Hook the button click event on the document to ensure the event is always bound
Resolved Dashboard work anniversary date (#143995)
Problem
On the dashboard, the work anniversary is using a custom calculation and not the same method as the people dashboard uses
Solution
Updated method being used, as well as including the start date in the company as requested to be used, should it have a value
Resolve the issue where you cannot add an appointment for a user when the appointment history is viewed from the summary page (#146062)
Problem
When trying to add an appointment, the '+ Appointment' button does nothing; you have to click on another submenu item within the appointment section and then back to appointment history before the button works.
Solution
Changed the click event to bind on a class and not the Id of the button, the button does not seem to be immediately available when the partial is being rendered and the event cannot be bound. Also removed an incorrect id on the Transfer person button that caused duplicate element IDs to exist in the markup.
Add materialise people group users tooling and extend the limited API to allow partial refresh (#146057)
Problem
The people group materialisation queue is flooded with queue requests, causing the materialisation process to take excessively long. The distribution to other services also causes extreme delay.
Solution
Add SQL and orchestration tooling to materialise/sync people group users across environments and wire through API flags.
Add stored procedures and types:
JobProfiler.GetRulesetPeopleGroupsForMaterialisation
JobProfiler.PeopleGroupIdList (TVP)
JobProfiler.SyncMaterialisedPeopleGroupUsers to select, prepare and merge materialised people group users.
Add RecalculateMaterialisedPeopleGroupUsers.ps1 and task XML to orchestrate fetching people-group users via the JobProfiler API, batch processing, and calling the sync proc (supports preview mode, batching and logging).
Update gRPC proto (people_groups.v1.proto) to include always_recalculate and bust_cache request fields and pass them through in PeopleGroupsServiceV1.
These changes enable controlled synchronisation of materialised people-group users, with options to force recalculation and bust cache, plus a PowerShell orchestrator to run the process and preview changes before committing.
PowerShell script: Fetch the people groups to process for all rulesets or a specific ruleset.
Choose all active people groups or only the people groups that have an unprocessed log in the materialised data log queue.
Using the limited people group users API, refresh the calculated people group user.
Bust the Redis cache.
Process the people groups in batches of 150 to keep the CPU and memory used limited.
Materialise each ruleset's users at the end using a merge statement
Report Builder
Added authorisation checks when running reports to ensure that the user has report permission (#146156)
Problem
Although the report permissions are enforced on the front end and only display the available reports that the user has access to, should the user have the URL or report ID for any other report, they can still run and view the report.
Solution
Cache user report access and perform validation when running a report to ensure that the user has the required access.
System Access
System Menu target audience not being able to select any values (#146218)
Problem
When linking people groups in the System Menu, existing (previously saved) items were not displaying as checked checkboxes after reload. Instead, they appeared as either
Solution
Always render the checkboxes, as the existing linked target audiences can not be interacted with.
Performance Management
KPI and KPA tooltips causing styling issues (#146000)
Problem
KPIs and KPAs tooltips are currently causing incorrect styling for Review Setup Templates
Solution
Removed jQuery tooltips, added, as they conflict with MDB tooltips, also added a title tag to the KPIs to ensure the tooltips are displayed.
Ensure Bulk Recalculation Errors are properly logged, and the batch status is correctly updated (144245)
Problem
When bulk recalculations fail due to an unhandled exception, the batch status remains unprocessed, and the items don't indicate the failure.
Solution
Ensure bulk recalculation failures are properly logged and status updated. Also had to change how the datatables are destroyed/cleared, which has changed with the latest versions.
Template tooltips display as text and cause incorrect page styling (KPAs) (#146000)
Problem
When editing a review setup template and providing a KPA with a very long name, the tooltips display without hovering over the text, causing incorrect page styling.
Solution
Added the on-hover tag to the HTML element to ensure it only shows when the user hovers over the ellipses.
Template tooltips display as text and cause incorrect page styling (#146000)
Problem
When editing a review setup template and providing a KPI with a very long name, the tooltips display without hovering over the text, causing incorrect page styling.
Solution
Added the on-hover tag to the HTML element to ensure it only shows when the user hovers over the ellipses.
Data Warehouse
Adjusted PowerShell scripts for ContentManagement (#143697)
Problem
The PowerShell scripts did not run successfully on the file server due to authentication errors
Solution
Adjusted PowerShell scripts to use SQL Auth so that they can be run within SQL Job instead
Renamed the DataSource name from "User Access" to "Invalid User Access" (#136620)
Problem
The data source name User Access for audit is not efficient
Solution
Renamed the DataSource name from "User Access" to "Invalid User Access" within the Data Dictionary
Added RulesetID within lmReportCards (#144417)
Problem
Field RulesetID is required within lmReportCards
Solution
Added field RulesetID within lmReportCards
Created DWH Package backup folder (#143175)
Problem
Currently, there is no DWH backup of the package for the case of rollback
Solution
Created DWH Package Backup folder
Added the current DWH package to the newly created folder
Added fields ProfileName and LineManagerProfileName (#144930)
Problem
Fields ProfileName and LineManagerProfileName are required within accUsers and jpReportingLines
Solution
Added field ProfileName within accUsers
Added field LineManagerProfileName within jpReportingLines
Added fields YearName, GradeName and CycleName within lmReportCards (#144417)
Problem
Fields YearName, GradeName and CycleName are required within lmReportCards
Solution
Added fields YearName, GradeName and CycleName within lmReportCards
Job Management
API Endpoint returning inactive employees (#146082)
Problem
API Endpoint returns terminated employees.
Solution
Modify logic to ensure only employees with active appointments are being returned.
ListOrgUser endpoint returns Children Org users (#145915)
Problem
The ListOrgUser Endpoint returns the children of the searched org as well.
Solution
This is not the intended behaviour of this endpoint, corrected the logic so it only lists the org which was searched for and not levels below this org.
Learning Management
Resolve TinyMCE warning displayed and editor disabled on absent notification email modal (#146211)
Problem
When attempting to send absent notifications, a warning is displayed, and the tinymce editor opens.
Solution
Explicitly state the GPL licence key usage on the React editor component.
Imports
Correct the retrieval of all users' roles when doing a bulk user role import (146187)
Problem
The api returns no roles when the user list is empty. For the bulk import, the list of usernames is always empty, and so no roles are imported. Blanks in the list are also incorrectly considered as users
Solution
Exclude empty or whitespace usernames before building ruleset-prefixed usernames for ListUserRolesAsync, preventing invalid/empty entries from being queried. Also, build the response from rolesByUsername.Keys (instead of the original request list) and ensure users without roles get an empty role list, keeping the returned user-role mapping consistent with the queried results.
Communication Portal
Resolved Notification message still referencing old table (#146107)
Problem
Changed mad to rename tables and structure, but the notification query was not updated to reference the new tables
Solution
Updated the reference tables to correctly call the new tables
Notifications
Update example data for anniversary notification, resolve problem with tinymce editor injecting current address before placeholder, Show "No placeholder" message when placeholder table is empty (#145927)
Problem
TinyMCE editor injects the correct relative path into the Source of image, example data for images are not correct, and when the list of anniversaries is empty, the placeholder is still shown in email instead of replacing it with No Birthday list.
Solution
Update example data for anniversary notification, resolve problem with tinymce editor injecting current address before placeholder, Show "No placeholder" message when placeholder table is empty
Translations
Updated translations (#145685)
Problem
Tenant Setup | Hover over any of the Product icons on the list page. The message at the bottom of the pop-up should be changed.
Solution
Updated the message to the desired text: "Licences not displayed inherit from the CORE Licences". Used AI to translate the updated message to all available languages.
Event Scheduling
Add translations for error:learningManagement.eventScheduleIncorrectWhoCanBookType (#145966)
Problem
No translation existed for error:learningManagement.eventScheduleIncorrectWhoCanBookType
Solution
Add translations for error:learningManagement.eventScheduleIncorrectWhoCanBookType Also, add .cursor-pointer style globally and explicitly
Version 9.1.216 (23 March 2026)
Performance Management
Remove required asterisk from review survey import options on review year setup configuration (#144151)
Problem
Value survey import options are shown as required when configuring review year setup period options.
Solution
Remove the required attribute from dropdowns.
Further styling adjustment for create contract modal (#145634)
Problem
Create performance agreement modal options that have additional padding at the bottom of each option. Found that the default 'option' class has recently gotten a specific height set (potentially due to package upgrades).
Solution
Enforce a max-height on the options section of the create performance agreement modal.
Resolved Subordinate count (#145732)
Problem
Subordinate counts are done, but only a join from contracts is done, which causes users without a contract not to display the subordinate button if there are any
Solution
Adjusted query logic to have a table with users and subordinate count
Fixed updating of check-in comments for admins (#145530)
Problem
The updating of check-in comments for admins was not working.
Solution
Fixed the update functionality. The serverUrl did not match the controller method; an additional parameter was needed.
Resolved Subordinates not being shown and user agreements when impersonating a subordinate (#145732)
Problem
When a user does not have a contract yet, no calculation can be done to see if the user has any subordinates. When impersonating a subordinate to see their subordinates, you can access their incorrect agreement
Solution
Correct the SQL query to join from users to ensure the count is done on users identified. Parse the param and handle the first selection when impersonating a subordinate
Resolve styling issue on performance agreement create modal (#145634)
Problem
Create performance agreement modal options that have additional padding at the bottom of each option.
Solution
Enforce the correct height for options on the create performance agreement modal. Consolidated styling
Resolve styling issue on performance agreement create modal (#145628)
Problem
Icons on the dashboard timeline are misaligned and no longer display center of the timeline bar.
Solution
Fix the alignment of icons on the timeline phase bars
People Management
When the user does not have a name, surname or profile image, use the first three digits of the username for the avatar (#145610)
Problem
When the name, surname, initials and known as are not supplied and the user does not have a profile picture, the avatar displays empty or with a question mark.
Solution
Use the first three digits of the username on the avatar.
Resolved text being displayed on tab open (#145614)
Problem
Change made to show text when the menu tab opens, but it shows immediately before the tab starts to open
Solution
Add a delay to start showing text when the tab opens
Organisational Structure
Resolved org structure not expanding on roles (#145942)
Problem
Missing logic on the tree view and node expanding within the people group modal
Solution
Added implementation and missing events and structure to match that of the org structure, to allow expanding events and data to be loaded
Job Management
Duplicate Appointments returning with API endpoint (#145514)
Problem
Duplicate Appointments are returning for the ListManagerSubordinates endpoint.
Solution
Modified the Endpoint to only return active appointments.
Master Data
Resolved DateTime Format issues on Master Data (#145790)
Problem
When using a datetime, it gets converted to a string, referencing a value as "2026-01-01T00:00", when the SQL is built up this is an invalid parameter and throws converstion errors
Solution
Add a change to check for the type when it is of type string and DateTime, or DateTimeOffset, try to parse this value to then insert from a valid DateTime value
Event Scheduling
Fix event name size on calendar view (#145626)
Problem
Seems that the default height of events on the Syncfusion calendar view has decreased, which results in the event name not properly fitting inside the event.
Solution
Decrease the line height and make the font a little bit smaller
Fix Learning Management Empty who can book a large dataset (#145146)
Problem
If a user has no subordinates, but tries to book an event for others, the system attempts to return all users in a ruleset, causing the system to hang
Solution
Return no results if there are no subordinates to book for
Learning Management
Resolve issue where snack message is not displayed when saving attendance (#145804)
Problem
The snack message to indicate that the attendance save was successful or failed is never displayed, leading to confusion on the user side as there is no indication that anything happened.
Also, the reload fails because the snack is not being displayed/errored.
Appears that the global snack function is not getting injected into the spa-minimal page when the page is called directly; other global references like axios work fine.
Solution
Added a safe handler to check if the global snack function exists and use it; if not then it falls back to the SnackBar, which is injected on the minimal layout and is available to use.
Imports
Correct username changes based on id numbers. Correct the creation of new country master data (#145663)
Problem
The usernames are not updated from idnumbers and new users are created. New country and province master data fails to create
Solution
Correct the logic to query the users with matching id numbers for updates. Correct the contructor creating new master data for province and country.
Data Warehouse
Added PAYU Tables (#144877)
Problem
Tables accPAYUSummary and accPAYUDetail are required within the V9 DWH
Solution
Added tables accPAYUSummary and accPAYUDetail
Resolved errors for ContentManagement_ETL (#143697)
Problem
SQL Errors occurred for cmFileTypeContents due to not referencing the staging table correctly
The IF check for creating tables for cmFileTypeContents also generated SQL Errors
Solution
Resolved the errors for cmFileTypeContents within ContentManagement_ETL.dtsx and CreateTables.dtsx
Dashboards
Replace Highcharts with chart.js in V8 (#143430)
Problem
Highcharts is outdated, and the renewal is too high
Solution
Chart.js is already used in V8; replace Highcharts with Chart.js
First, determine the impact and provide a more accurate effort before continuing with changes
New Functionality
Requisitions via the ChatBot (#135118)
New People Admin Permission, Request Requisitions/Replacements
Added a new permission for the additional section of People Management, and displayed this new permission in the frontend
As a People Admin/Manager, I want to initiate new requisitions from the People Management module
Add new logic to determine if the logged-in user has the Request Requisitions permission. If they do, then the corresponding button with the redirect (User Story 4) will appear in the People Management module Next to the + Person Button
As a People Admin/Manager, I want to initiate a replacement from the People Management module
Added additional functionality to determine if the logged-in user has the Request Requisitions permission and then display the button, which will redirect the user to the Chatbot
As a System Owner, I want a New API End-Point: List of Users in Specified Org Units
Add a new API endpoint which returns a list of users in a specific org unit and only returns the requested columns
As a System Owner, I want a New API End-Point: People Reporting to
Add a new Endpoint which uses managerUsername to get the ID of the manager in the system, then gets a list of subordinates of that manager
As a System Owner, I want a New API End-Point: Users with Specified Jobs
Add a new API endpoint which returns user information based on multiple search criteria.
Job Management: Re-activate positions marked as Inactive (#139481)
As a People Management Administrator, I want to be able to re-activate a previously marked inactive position so that I can re-use it for future appointments.
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 categorized 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 analyze 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 summarized.
Version 9.1.215.6 (Support Release - 17 March 2026)
Performance Management
No date picker on Action plans (#146349)
Problem
Date time picker not rendering on action plans when using dayjs
Solution
Changed to make use of Syncfusion's picker
KPI and KPA tooltips causing styling issues (#146000)
Problem
KPIs and KPAs tooltips are currently causing incorrect styling for Review Setup Templates
Solution
Removed Jquery tooltips, added them, as they conflict with MDB tooltips, also added a title tag to the KPIs to ensure the tooltips are displayed.
Template tooltips display as text and cause incorrect page styling (KPAs) (#146000)
Problem
When editing a review setup template and assigning a KPA a very long name, the tooltips appear without hovering over the text, causing incorrect page styling.
Solution
Added the on-hover tag to the HTML element to ensure it only shows when the user hovers over the ellipses.
Template tooltips display as text and cause incorrect page styling (#146000)
Problem
When editing a review setup template and providing a KPI with a very long name, the tooltips display without hovering over the text, causing incorrect page styling.
Solution
Added the on-hover tag to the HTML element to ensure it only shows when the user hovers over the ellipses.
Version 9.1.215.5 (Support Release - 13 March 2026)
Performance Management
Add change to calculate running score when copying manager score to final rating score (#146110)
Problem
There is no running score when copying the manager's score to the final score
Solution
Added a new change to calculate the running score when copying the manager rating to the final rating
Version 9.1.215.4 (Support Release - 13 March 2026)
Report Builder
Added authorisation checks when running reports (#146156)
Problem
Although the report permissions are enforced on the front end and only display the available reports that the user has access to, should the user have the URL or report ID for any other report, they can still run and view the report.
Solution
Cache user report access and perform validation when running a report to ensure that the user has the required access.
System Access
System Menu target audience not being able to select any values (#146218)
Problem
When linking people groups in the System Menu, existing (previously saved) items were not displaying as checked checkboxes after reload. Instead, they appeared as either
Solution
Always render the checkboxes as the existing linked target audiences can not be interacted with.
People Management
Fix adding Employment History opens blank modal (#146276)
Problem
Adding Employment History opens a blank modal
Solution
Hook the button click event on the document to ensure the event is always bound
Version 9.1.215.3 (Support Release - 11 March 2026)
Performance Management
Ensure Bulk Recalculation Errors are properly logged, and the batch status is correctly updated (#144245)
Problem
When bulk recalculations fail due to an unhandled exception, the batch status remains unprocessed, and the items don't indicate the failure.
Solution
Ensure bulk recalculation failures are properly logged and status updated.
Also had to change how the datatables are destroyed/cleared, which has changed with the latest versions.
Learning Management
Resolve TinyMCE warning displayed and editor disabled on absent notification email modal (#146211)
Problem
When trying to send absent notifications, a warning is displayed, and the tinymce editor is displayed.
Solution
Explicitly state the GPL licence key usage on the React editor component.
Version 9.1.215.2 (Support Release - 10 March 2026)
Imports
Correct the retrieval of all users' roles when doing a bulk user role import (#146187)
Problem
The api returns no roles when the user list is empty. For the bulk import, the list of usernames is always empty, and so no roles are imported. Blanks in the list are also incorrectly considered as users
Solution
Exclude empty or whitespace usernames before building ruleset-prefixed usernames for ListUserRolesAsync, preventing invalid/empty entries from being queried. Also, build the response from rolesByUsername.Keys (instead of the original request list) and ensure users without roles get an empty role list, keeping the returned user-role mapping consistent with the queried results.
People Management
Resolve the issue where you cannot add an appointment for a user when the appointment history is viewed from the summary page (#146062)
Problem
When trying to add an appointment, the '+ Appointment' button does nothing; you have to click on another submenu item within the appointment section and then back to appointment history before the button works.
Solution
Changed the click event to bind to a class and not the Id of the button. The button does not seem to be immediately available when the partial is being rendered, and the event cannot be bound.
Also removed an incorrect id on the Transfer person button that caused duplicate element ids to exist in the markup.
Add materialise people group users tooling and extend the limited API to allow partial refresh (#146057)
Problem
The people group materialisation queue is flooded with queue requests, causing the materialisation process to take excessively long. The distribution to other services also causes extreme delay.
Solution
Add SQL and orchestration tooling to materialise/sync people group users across environments and wire through API flags.
Add stored procedures and types: JobProfiler.GetRulesetPeopleGroupsForMaterialisation, JobProfiler.PeopleGroupIdList (TVP), and JobProfiler.SyncMaterialisedPeopleGroupUsers to select, prepare and merge materialised people group users.
Add RecalculateMaterialisedPeopleGroupUsers.ps1 and task XML to orchestrate fetching people-group users via the JobProfiler API, batch processing, and calling the sync proc (supports preview mode, batching and logging).
Update gRPC proto (people_groups.v1.proto) to include always_recalculate and bust_cache request fields and pass them through in PeopleGroupsServiceV1.
These changes enable controlled synchronisation of materialised people-group users, with options to force recalculation and bust cache, plus a PowerShell orchestrator to run the process and preview changes before committing.
Powershell script
Fetch the people groups to process for all rulesets or a specific ruleset.
Choose all active people groups or only the people groups that have an unprocessed log in the materialised data log queue.
Using the limited people group users API, refresh the calculated people group user. Bust the Redis cache
Process the people groups in batches of 150 to keep the CPU and memory used limited
Materialise each ruleset's users at the end using a merge statement
Organisational Structure
Resolved org structure not expanding on roles (#145942)
Problem
Missing logic on the tree view and node expanding within the people group modal
Solution
Added implementation and missing events and structure to match that of the org structure, to allow expanding events and data to be loaded
Version 9.1.215.1 (Support Release - 4 March 2026)
Performance Management
Fixed updating of check-in comments for admins (#145530)
Problem
The updating of check-in comments for admins was not working.
Solution
Fixed the update functionality.
The serverUrl did not match the controller method; an additional parameter was needed.
Imports
Correct username changes based on id numbers. Correct the creation of new country master data (#145663)
Problem
The usernames are not updated from ID numbers, and new users are created. New country and province master data fails to create
Solution
Correct the logic to query the users with matching id numbers for updates. Correct the contructor creating new master data for province and country.
Learning Management
Resolve issue where snack message is not displayed when saving attendance (#145804)
Problem
The snack message to indicate that the attendance save was successful or failed is never displayed, leading to confusion on the user side as there is no indication that anything happened. Also, the reload fails because the snack is not being displayed/errored. Appears that the global snack function is not getting injected into the spa-minimal page when the page is called directly; other global references like axios works fine.
Solution
Added a safe handler to check if the global snack function exists and use it; if not, then it falls back to the SnackBar, which is injected on the minimal layout and is available to use.
Version 9.1.215 (4 March 2026)
Performance Management
Resolved PM contract not being shown (#145475)
Problem
SQL query column name is incorrect, not being able to map, and also a wrong check for having any mappings
Solution
Corrected column name, and corrected logic check
Resolved check-ins dial active on Dashboard within PM Widget (#145475)
Problem
Check-In Dial is being displayed on the dashboard widget even if the phase is set as inactive
Solution
Adjusted the query to include the check and updated the dashboard to parse the value
People Management
Corrected function call on row to replace placeholders for document preview (#145642)
Problem
Cannot continue to preview the template document. Cannot continue when creating a document for a user
Cannot continue after signing a document
Solution
This pull request includes several updates focused on improving user interface accessibility, permission handling, and code modernisation for modal dialogues and table iteration in the People Management and Document Creation modules
Fixed KnownAs and Name displaying for LineManagers/Primary and Secondary Guardians (#145448)
Problem
The Name and KnownAs is displayed for the LineManager's (OR Guardian's) name on a person's profile.
Solution
Changed the logic so it displays the Known As if it is populated, else the Name, also removes surname if surname is already added to KnownAs field (some clients have it set up like that)...
Ruleset Management
Resolve issue where tenant details do not list ruleset details (#145689)
Problem
When creating a new tenant/ruleset, the default theme is copied from the source ruleset and is linked to the source theme's tenant ID.
Solution
When a ruleset is created, and a new tenant ID is provided, ensure that the ID is used, not the source ruleset's tenant ID.
Resolved text only visible after menu fully expanded (#145614)
Problem
The span text within the side menu is only shown after the side menu is fully expanded
Solution
Added a change to set the opacity of the span once it starts to expand, as well as no transition, so that the text is visible immediately
Resolved Page Help not being able to create new page files (#145680)
Problem
When creating a brand new user guide on a page that has no guide, a case can exist where only section 1 is filled in and not all the other sections. With the logic check, this then fails
Solution
The additional empty string check is not needed as the new id is already null, so need to create a new guide
Event Scheduler
Handle null LocationInOrg in OrganisationalUnit field (#145023)
Problem
Request fails if the OrganisationalUnit is null in the query
Solution
Ensure OrganisationalUnit is never null by using the null-coalescing operator to default to an empty string when x.LocationInOrg is null.
This prevents potential null reference issues.
Resolved Learner records not being created (#145571)
Problem
When learner records need to be created, no endpoint is hit
Solution
Corrected the URL build to include the slash, as the base URL is without the forward
Resolved case where attendees could not be removed (#145593)
Problem
There is a min and max number of attendees that can be set. This validation is used for adding and removing users, but when you want to only remove a user this still gets validated
Solution
Add a validation check to ensure the rule is only applied if the number of attendees to add is not 0
Resolved delete modal being able to delete with no reason filled in (#145594)
Problem
When deleting a group on Who Can Book, you can interact with the delete even if there is no reason filled in
Solution
Corrected the logic to pass the value check if there is a reason filled in
Job Management
Resolved Org Unit people group role additions/removes (#145664)
Problem
When removing an org unit people group role, it works as expected. If we want to re-add a role to an org people group, this people group already exists, which throws the method and can not proceed to then create the link
Solution
Adjusted/corrected logic to only create the people group if it does not exist, else proceed to create the link with the people group identified
Resolved Appointment history active position not on top (#145442)
Problem
Default data-sort properties are overriding the code filter to show the correct display order
Solution
Remove the data-sort properties, as that is user interaction afterwards
Learning Management
Removed height that causes large cards (#145714)
Problem
Style added of h-100, which causes the card to grow to a certain height.
Solution
Removed h-100 so that the card can grow as the content expands, and not force the height
Resolve height issue on Syncfusion grid toolbox control (#145434)
Problem
The training matrix grid controls' toolbox height is too big.
Solution
Resolve height issue on the Syncfusion grid toolbox control by adjusting height styling for the toolbox
Fixed Attendance History duplication (#145571)
Problem
Duplicated records on attendance history
Solution
Resolved the issue by paging by user instead of attendance records
Imports
Reverted one endpoint for Last Sync (#145052)
Problem
Development was done for the last sync changes. V8 development is still within Victrix, on V9, this causes the import of the one does fail
Solution
Added an additional endpoint to allow for backwards compatibility
Identity and Authorisation
Resolved autocomplete input fields labels overlap text (#145431)
Problem
When the form is auto-complete, the textbox label is still overlapping the input text; only after focusing on the textbox does it trigger the label to move
Solution
Added event after dom content loaded to load and apply the needed styling on the element to move the label, should there be content
Content Management
Handle 404 on upload by creating missing folders (#145218)
Problem
Users were experiencing issues uploading files to NextCloud, receiving a 404 error. This indicated that the system could not find the necessary folder to complete the upload
Solution
Implemented a new catch that will automatically create any missing folders when a 404 error occurs.
Version 9.1.214 (4 March 2026)
Data Warehouse
Updated PowerShell scripts for ContentManagement (#143697)
Problem
FetchFileTypes.ps1 requires TrustServerCertificate
FetchZippedFolders.ps1 needs to be adjusted to calculate the folder size for zip folder contents
Solution
Updated FetchFileTypes.ps1 by adding TrustServerCertificate
Adjusted FetchZippedFolders.ps1 to calculate the folder size for zip folder contents
Adjusted container for jpPeopleGroupRoles to rather do a full refresh with each run (#143862)
Problem
The entries for jpPeopleGroupRoles are not being updated correctly when using EditedDate logic
Solution
Adjusted container for jpPeopleGroupRoles to rather do a full refresh with each run
Event Scheduler
Changed templates to be editable (#145572)
Problem
Templates can not be edited as they are set to read-only true
Solution
Change/update the template values to be read-only false
Change to make templates active by default (#145580)
Problem
When a new event is created, it creates the notifications active links with a default value of inactive
Solution
Change to be active instead
Imports
Change custom process to stage data to V9 for import from V8 - refactor transaction logic and remove unnecessary logic (#145163)
Problem
Single transaction across all steps is causing locks on import.imports table
Solution
Create smaller transactions around import.imports and import.importuserstagings
Remove unnecessary logic to backup data to sysemployeeimport_backupdata
Remove delete from sysemployeeimport as data can be imported ultiple times, the data difference check with will filter already imported data out.
Remove maxlength from Payroll PowerShell textarea to allow more complex scripts to be saved (#145135)
Problem
Large custom PowerShell scripts saved on the front-end are truncated
Solution
Remove the maxlength="@MaxLengths.TextAreaScript" attribute from the Payroll.PowershellScript textarea in Areas/Administration/Views/Ruleset/_Integration.cshtml. This allows longer PowerShell scripts to be entered without client-side truncation while keeping existing rows, classes, and whitespace handling.
People Management
Fix intl-tel-input flags not rendering (#145147)
Problem
intl-tel-input (Phone number inputs), did not render flags
Solution
The component now requires you to set the flags image path and the images that were copied from node modules using gulp, which corrupted the images. Fixed gulp copy in both identity and webmvc to not corrupt images by setting encoding: false
Learning Management
Resolve missing Syncfusion scripts that are needed for the Grid control in MVC pages. Also modified ToSignifyDateTime extension to handle date strings that have a time component (#145434)
Problem
The training requirement matrix does not load. Also, learning manage product setup crashes when YearDTO master data has dates with a time component.
Solution
Resolve missing Syncfusion scripts that are needed for the Grid control in MVC pages. Also modified ToSignifyDateTime extension to handle date strings that have a time component.
Tenant Management
Tenant creation date and boolean defaults + order by expiry date (#144228)
Problem
When creating a tenant, expiry and system close date is not defaulted to the end of next month, and boolean values for lock system and display expiry messages 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
Identity and Authorisation
Resolved support user claim being added when it should not (#145443)
Problem
A support user claim is checked within DBCOntextBehaviour to change the editeduser property when it is not empty. There is a case that regenerates the claims, which adds the support claim, and then is not correctly removed if it is not the support flow because of the default value being seen as true
Solution
Revert logic, to always see the default value as false, and keep it as true
Job Management
Resolved parent tab being opened but no content shown (#145439)
Problem
When selecting the first parent element, it opens the dropdown list for app child items, but you have to select the child item to see any content
Solution
Add a change to select the first element if it exists, which triggers the click event to load the content
Resolved Appointment history view not taking new column (#145442)
Problem
A new development has been added for calculation on the current position, but the appointment history is not taking the new column into account
Solution
Added a new column, resolved logic checks, also updated the current/active text being displayed in the termination column, added a visual effect to the row, as well as a hover effect with the label
Organisational Structure
Resolved newly added org node item once clicked shows null (#144475)
Problem
Once a new org node has been created, JSON returns the newly added element. Should you immediately click on the positions, it retrieves the org path to set as a header, but it is NULL
Solution
Add JavaScript to set the element's value after creation
Version 9.1.213 (4 March 2026)
Imports
De-duplicate users on User ID (#143370)
Problem
Imports have multiple IDs, and this can cause a user to be added multiple times, causing import failures
Solution
De-duplicate users by user ID to avoid trying to update the same user multiple times in a bulk upsert
Reverted one endpoint for Last Sync (#145052)
Problem
Development was done for the last sync changes. V8 development is still within Victrix. On V9, this causes the import of the one to fail
Solution
Reverted the one endpoint, so when this goes live, it will not break the import. Revert once V8 goes Live
Resolved order display for push integration imports (#145172)
Problem
Display order is incorrect for indented imports
Solution
Add a change to the order according to the display order wanted
Resolved styling change for push imports (#144975)
Problem
The new development implemented makes the buttons very long as they are stacked next to each other, which grows the entire row
Solution
Add a change to rather display the 2 buttons below each other
Preserve CreatedDate when updating users when importing (#144208)
Problem
The created date of the user is overridden when the user is updated by the user import.
Solution
Passes createdDate: existingUser.CreatedDate into the user update/create call in ImportUsersCommandHandler so the original CreatedDate is preserved during import/update. This prevents the import flow from overwriting the user's original creation timestamp when an existing user is updated.
Content Management
Resolved Avatar selection (#145074)
Problem
When selecting a default image, it fails on the user profile
Solution
Corrected the path URL to first check in the new folder path of avatar-defaults
Performance Management
Resolved My Agreement pill item tab not present when multiple setup selections (#142417)
Problem
When a user is linked to multiple setups, a selection comes up to select the review setup should there be no existing contract, but there is no link button in the selections to navigate back to should they have other subordinate view items
Solution
Add a change to render a button on conditions, should there be even though a contract does not exists. Implement a change to handle the tab selection correctly after a review setup has been selected
Custom binding handler for decimal to cater for both ',' and '.' as decimal separators (#145167)
Problem
When the user's regional settings have ',' as the decimal seperator and the frontend sends through decimal as '.' then the value is lost during the model binding and results in _null_ value.
Solution
Added a custom decimal model binder provider that can be attached to a property/action parameter as an attribute, which then, in turn, performs custom binding of the value and converts the value to '.' so it binds correctly on the controller.
Fixed html tag not showing and removed whitespace (#144980)
Problem
One of the translations showed the tag on the ui and had whitespace beneath it.
Solution
Correctly apply the HTML tag and remove the whitespace.
Allow capturing rating scales with two decimal values (#145167)
Problem
Can't add rating scales with values that have two decimal places, e.g., 1.25 or 1.02
Solution
Allow adding rating scales with upto two decimal places
Report Builder
Added clause when no tenantId exists (#143579)
Problem
In cases where a table does not have a tenantId present, it fails.
Solution
Add a case to have the same logic, should it fail, fallback to query without tenantId
Data Warehouse
Created new SSIS Package Audit_ETL (#136619 & #136620)
Problem
New Datasource UserAccess is required
Solution
Created new SSIS Package "Audit_ETL.dtsx"
Created new ConnectionManager "V9_Master_Audit"
Created new Datasource "UserAccess"
Adjusted DataDictionary Scripts to include Audit
Updated step for accUserLoginStats to insert new field UniquePersonLoggingDays (#144473)
Problem
The insert step for accUserLoginStats does not include the new field UniquePersonLoggingDays
Solution
Updated insert step for accUserLoginStats to include the new field UniquePersonLoggingDays
Resolved issue for accUserLogins to only return successful Logins (#144473)
Problem
The accUserLoginStats calculation for V10 only returned failed logins, which is incorrect
Solution
Corrected the accUserLoginStats calculation for V10 to only return successful logins
People Management
Cleanup failed profile creations, identity user (#145199)
Problem
A user appointment process failed due to a duplication/overlapping error. During cleanup, the user account was removed, but the associated identity record remained. A later import updated the username of an existing account, but the identity could not be updated due to a conflicting existing username. This resulted in the identity being linked to a different account. When the user attempted to log in with the updated username, no matching account could be resolved, causing the application to become unresponsive.
Solution
When a new person's appointment fails, be sure to delete the identity user also. This ensure futher username changes and re-adding of the same user will occur correctly
Clear tab pane when switching between tabs (#145173)
Problem
After viewing a tab, then moving to another tab, the previously visited tab remains on the screen while viewing the new tab
Solution
Clear tab pane when switching between tabs
Fix "We're Sorry" error appears when navigating to Positions from Appoint User Screen (#144487)
Problem
The system displays a "We're Sorry" error when navigating to Positions from the Appoint User Screen
Solution
When navigating to Positions from the Appoint User Screen, change the breadcrumb to refer the user to where they came from.
Fix Summary, Timetable & Attendance Views not showing when in learning mode (#145057)
Problem
Summary, Timetable & Attendance Views not showing content when in learning mode
Solution
Fix Summary, Timetable & Attendance Views not showing content when in learning mode
Job Management
Close the tab when navigating back from positions when it was opened from adding a position on people management (#144487)
Problem
The user adds a new position from the appointment screen, which opens the job management positions in a new tab. Navigating the breadcrumb back results in taking the user back to the appointment screen of the tab they are on. It should rather close the tab which reflects the same action that saving the form does.
Solution
Close the tab when the user navigates back. Still need to keep the `useRefererBreadcrumb` so that only one breadcrumb is added.
Refactor appointments active calculation (#144278)
Solution
Add a new change to calculate appointments within commands and imports instead of recalculating within each query.
Adjust queries to make use of the new column instead of calculating each time
+ Inherent Requirements" button appears on all the Job Requirement Tabs (#144476)
Problem
"+ Inherent Requirements" footer button appears on all the Job Requirement Tabs
Solution
Ensure the "+ Inherent Requirements" footer button only appears on all the "Inherent Requirements" tab
Tenant Management
Send notifications subscription toggle and date quick select buttons (#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
Communication Portal
Resolved add button not being rendered correctly (#144928)
Problem
When being rendered within the footer, the Bootstrap footer styling affects the position relative of the add new container which hides the menu dropdown
Solution
Moved the add to the modal header, and adjusted the icon's background to look the same as the Nav.
Learning Management
Remove username from coordinator name on events calendar view (#145139)
Problem
When a coordinator's username is their id number, then it raises POPI concerns when displayed.
Solution
Hide the username and only show the first and last name.
Version 9.1.212 (4 March 2026)
People Management
Resolve issue with ESS settings not correctly reflecting (#145003)
Problem
Self Service settings are not correctly displaying, everything shows as disabled. When viewing user profile indicates that no self service settings have been configured.
Solution
Admin / Ess view and edit values are not correctly retrieved leading everything to default to false. Corrected the fetch so that it correctly maps the view and edit options from the database. Additionally moved the selfservicesetup cachepattern to the shared location. Also on the BustAllRulesetCachekeys it was only looking at patterns that start with 'RS{0}_CacheKey', but for self service setup the pattern starts as 'sss' so it never gets removed from cache, unless you physically update the cache settings. Now when cache is fully busted will also refresh ESS.
Resolved user not being able to edit his own details (#144785)
Problem
Logged in user could not edit his own details Particulars and Biographical shared same checks
Solution
Added LoggedInUser check Split out particulars and Biographical
Implemented update to also take into account self service id validation (#143993)
Problem
When an id number is updated within personal details it is not taking into account the validation settings Duplicate methods on self service and misleading method name on the one call
Solution
Add new implementation to take into account id validation refactor duplicate calls and correct the duplicate models
Job Management
"Do basic self-assessment" icon not clickable (#144469)
Problem
Event listener was never triggered
Solution
Move to only instantiate directly after the data has been loaded
Manager cannot view subordinates Competencies (#144468)
Problem
No development exists to trigger on click event
Solution
Added new event listener to be triggered when row click to navigate to users analysis
Resolved evidence being cleared when deleting content (#144784)
Problem
When deleting an evidence file, the modal reloads but with an empty list. Missing Competency Inherent Requirement id
Solution
Add missing id value - pass through to reload evidence
Performance Management
Updated some of the translations (#144980)
Problem
Received a request to update some of the PM translations.
Solution
Updated the translations to the requested wording.
Modification to Popover rendering as attempt to resolve screen flickering when popover is triggered with hover/focus (#144966)
Problem
When hovering over some elements that have a popover, it continuesly re-renders and the popover flickers, as if it's visibility state is constantly changed. This does not happen locally only on Master and on UAT.
Solution
Memorized the popover properties so that it does not re-render when anything else on the dashboard changes. Found 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.
Fix rendering of dashboard buttons (#144937)
Problem
The dashboard buttons display both the start text as well as the accessibility text.
Solution
Fix the rendering of the buttons to not show the accessibility text
Resolve issue with additional agreement button displaying when user does not have primary agreement (#140461)
Problem
Add additional agreement button shows when impersonating user and user does not yet have a primary contact, and user is only on a single review setup.
Solution
Ensure additional agreement button is correctly hidden when user does not yet have primary contract.
Resolved redistribute of weight when VB section removed (#144781)
Problem
When a user is not a manager it removes the VB section and redistribute the weight, on some values this cause a total of 1.0001 which throws the exception
Solution
Add a tolerance to skip exception and navigate within the existing recalculate case
Ensure only one import is logged per ruleset when importing surveys from v8 (#142910)
Problem
When importing surveys from V8, an import was logged for each contract instead of one per ruleset.
Solution
Ensure only one import is logged per ruleset when importing surveys from v8
System Access
Hide kebab menu for non-admin users (#144389)
Problem
Kebab menu shows for non-admin users
Solution
Hide kebab menu for non-admin users
Notifications
Updates to query getting subscription notifications (#144635)
Problem
When the expiry date and close date are the same, the system sends notifications after the close date, and in some cases two mails on the same day.
Solution
Move the "2-day prior to expiry" check to a "3-day prior to expiry", and ensure no mails are sent after the system close date. This way 2 mails will never be sent on the same day
Ruleset Management
Can't change icon of dashboard widget (#145007)
Problem
Can't change icon of dashboard widget
Solution
Drop down button did not have a 'dropdown-toggle' class
Paging Styling (#145006)
Problem
Pagination buttons did not make use of the secondary color, but rather the primary color
Solution
Ensure pagination buttons makes use of secondary colors
White background on Search bar (#144998)
Problem
White background on Search bar when autocompleting
Solution
Override autocomplete styles so that it fits original style
White backgrounds on Text input fields (#144997)
Problem
White backgrounds on Text input fields
Solution
Override autocomplete styles so that it fits original style
Back Button styling issue (#144905)
Problem
Back button text in certain instances were not white
Solution
Ensure that the text is white (when using tertiary button)
Styling issues on People Admin page (#144815)
Problem
Pagination displayed underneath tables even if there are not enough items for paging to apply
Solution
Global conditional pagination helper made use of outdated mdb table classes, ensure the new class selectors are used.
Correct first selection not being set on image resources (#143713)
Problem
New change implemented in account to not set first selection but not added within image resources Suggestion to clear tags after file change
Solution
Pass true value Add clear Keywords
Data Warehouse
Adjusted script C_03707_99999_monReportBuilderDataIntegrityResults to only return error messages (#142737)
Problem
The ReportBuilder IntegrityResults results return for all the reports which can take time to go through report
Solution
Adjusted script C_03707_99999_monReportBuilderDataIntegrityResults to only return error messages
Added field UniquePersonLoggingDays within accUserLoginStats (#144473)
Problem
Field UniquePersonLoggingDays is required within accUserLoginStats
Solution
Added field UniquePersonLoggingDays within accUserLoginStats
Implemented Performance Improvements with V8 and V10 calculation Scripts for accUserLoginStats
Added step to exclude any cm tables from Data Dictionary (#143697)
Problem
Currently any cm tables are added to the Data Dictionary
Solution
Added step to archive any cm% data sources and their fields in ReportBuilder tables
Created new DataSource cmZipFolderContents (#143697)
Problem
New Datasource is required to store the movies and zip folder information
Solution
Created new DataSource cmZipFolderContents
Learning Management
Adjust dropdown sizes and exclude start and end date from year dropdown (#144958)
Problem
The Year dropdown has regressed into the Date Range of the Master data item rather than the associated label and the size has been adjusted and is no longer legible.
Solution
Adjust dropdown sizes and exclude start and end date from year dropdown.
Imports
Resolved performance issue with the export of users via the API (#144570)
Problem
When ListUserExport is called during the V9-to-V8 user import, it sends all user IDs to a batched Dapper query. This is a query that becomes heavy and slow on a large group of people to export (60k+)
Solution
Replace dapper batched logic with SQL bulk copy to a temp table for efficiency.
Report Builder
Resolved Filter values showing Incorrect Date (#144246)
Problem
Development was added to have dropdown values of like 'Today' 'Next week' but when viewing the report that is marked as an invalid date
Solution
Add FilterValue to be converted based on this data to the correct values
Event Scheduler
Fix the event calendar from either going blank or disappearing when a reason is selected, or an event details are viewed (#144947)
Problem
The event calendar is going blank/disappearing when a reason is selected, or an event details are viewed.
Solution
The event calendar is going blank/disappearing when a reason is selected, or an event details are viewed. Note: The peopleManagement translation wasn't loaded into memory yet, so it only loaded when the BookOthersModal component mounted, after the event details was clicked. It then goes into suspense mode, and throws a promise while it's busy loading the translation, react suspends rendering and looks for the nearest Suspense component. It wasn't finding the higher level Suspense components for some reason, so adding a React.Suspense component around where the BookOthersModal component is loaded, fixes the issue.
Content Management
Resolved Data Annotation for Online Marking (#141344)
Problem
Online marking stamps not behaving correctly when trying to move, or when moving across page, creating ghost elements
Solution
Refactor logic and code after syncfusion upgrade, corrected behavior and page move
Version 9.1.211 (4 March 2026)
People Management
Add handling to not do PG update with rowlock when no data to update (#144529)
Problem
Situation where if the current activity is on materialised PeopleGroupUsers, but there is no data in the table for the PG, then the rowlock causes performance issues.
Solution
Wrapped the table update with the row lock in an if to only run if there is data to update.
Refactor People Management tab queries to increase performance (#144529)
Problem
In some instances, the queries to fetch MyTeam / MyDepartment / MyCompany / PeopleGroupUsers times out or takes an excessive amount of time to complete.
2 calls are made as subqueries to determine
1) The number of subordinates for the user
2) Whether the user is my manager.
Solution
Changed the 'My Manager' check by fetching the user's manager beforehand into a variable and then comparing the result userid against that variable.
Moved the subordinate count outside of the main cte query by first selecting everything into a temp table and then calculating and updating the subordinate count after the fact as a batch update.
Some minor changes to React for mapped key uniqueness.
Correct people group materialisation clearance when the list of people group's users is fetched (#143861)
Problem
When V8 request the people group users from V9, and some PGs have been materialised, and some have not been materialised, it causes the materialised people groups to be cleared. Only the unmaterialised PGs are to be returned.
Solution
Ensure only the calculated people groups are included when deleting the materialised people group users
Hover on Profile picture displays incorrect tooltip text (#144474)
Problem
Hovering on the profile picture displays incorrect tooltip text
Solution
Fix incorrect casing used for the translation key, causing it not to find the correct value
Extended compression type selection on User Edit Profile (#143713)
Problem
New change implemented in the account to not set the first selection, but not added withinthe image resources
Suggestion to clear tags after file change
Solution
Pass true value
Add clear Keywords
When a front-end user appointment fails to create, revert user creation (#144275)
Problem
Should a front-end user creation be successful, but the appointment fails, a message is shown for the user, but if the modal is closed and later tried to appoint/recreate, it says the user already exists.
Solution
Add change should the appointment creation fails, revert/delete the created user
Job Management
Fixed copying of reporting lines on the user summary page (#143977)
Problem
The copy manager function for reporting lines on the user summary page is not working.
Solution
Included the JS file with the function and added the needed hidden fields.
Uploaded Evidence only appears on Inherent Requirements after a Hard Refresh (#144492)
Problem
When opening the modal, a global let is set, which is not reset
Solution
Correct to pull the data-attribute directly
An error appears when deleting Required Evidence Files (#144493)
Problem
Incorrect id attribute was retrieved to be passed for deletion
Solution
Correctly retrieve the id for the document deletion
Previous delete reason gets cached when deleting evidence documents (#144494)
Problem
When a user opens the modal, it keeps the previously entered value
Solution
Reset the value to the default when opened
Imports
Implemented visual enhancements to User Imports (#144481)
Problem
User Import triggers a few other imports, but no visual knowledge of that
Solution
Add an indent to the types that are included as part of the User Import
Add change to sync in partial for last edited date (#139776)
Problem
When syncing data from V9 to V8, all data is pulled that is currently on V9, not just changed data. This caused the API calls to return very large datasets each time the APIs are called.
Solution
V9
In each of the APIs below, implement an additional filter ChangeAfterDate
ChangeAfterDate is a nullable datetime field
The ChangeAfterDate should be used to only return the data with an edited date after the date
When the date is null, then all data must be returned
The edited date of the main table, along with the relational tables, should be considered, e.g.
Account.Users.EditedDate, Account.Genders.EditedDate etc.
On the Ruleset | Integrations tab, split the push buttons into two
All Data
This will import all data from the start of time.
All Data from the last change
This will only import the data from the date of the last successful import on V8.
Keep as is Theme Import
APIs
User Import
People Group Import
Use the People group table as well as the materialised log table to determine changes
User people group permissions
Use the link to the user and the roles' edited date
Add a field in Jobprofiler.MaterialsedUsers.PeopleGroupChangedDate, which is populated when people groups are removed from a user
User roles
Check the edited date of the user role
Add a field to the account.Users.RolesChangedDate, which is populated when roles are deleted from a user
Reporting Lines
Use Jobprofilers' reporting lines edited date to fetch the changed data
Job structure
Check the edited date of the JobProfile, Position and Org nodes as well as their linked master data, to determine a change
Org structure
Check the edited date of the Org nodes as well as their linked master data, to determine a change
Appointment
Use the edited date of the appointment
Add a field in Jobprofiler.MaterialsedUsers.AppointmentChangedDate, which is populated when appointments are removed from a user
When any appointment has changed for a user, return all appointments for the user
V8
Add a table sysSuccessfulSyncLog
This table only stores the import types, with the date they were last successful
This table is then used to determine the date to include for ChangeAfterDate when the APIs are called
Alternatively use sysProcesslog
Display the import completion date stored on V9 after successful completion.
Ruleset Management
Resolved event handler not being triggered on system menu click (#144569)
Problem
The off method is called, which removes all the event handlers from that element, so only the very last defined event is added
Solution
Correctly remove the same event specified to be added
Communication Portal
Implemented Communication Priority Master data item (#140896)
New Development
Add Master Data for the Priority to be set when creating notifications
Implemented Master Data Communication Category (#140897)
New Development
Add Master Data for the Category to be set when creating notifications
Implemented import for Master Data (#140898)
New Development
Add an import for Master Data to be available in V8
Added handling for external system message (#140899)
New Development
Added functionality so that a V8-triggered mail can be sent as a System message
Organisational Structure
Load org nodes on org structure page on demand (108648)
Problem
Org node loaded all org structures (including children) from the server, which can cause performance issues on the browser if there are alot of structures.
Solution
Load only top level org structures on first page load and load the rest as the structure is expanded.
Content Management
Implemented a new change to be able to delete a signing document (#143364)
Problem
When an assessment attempt has been signed, there is currently no way to ressign it from the front end
Solution
Path : Manage Employees > Select Employee > Employee Development > Assessment List
In the drop next to the assessment (see below), create an item "Reset signing"
It should only be available if one of the attempts was signed digitally
When selected, the user is prompted for a reason (free-text) and a message, "PLEASE NOTE: This action is not reversible and will remove the digital document."
The reason is saved against a new field in abAssessmentsAttempts.ResetSigningReason
When the reason is completed, and the user clicks Continue
Remove the digital document from Nextcloud via the content service
Remove the document from the Fileserver application
The record is removed from sysSigniSignedDocuments and then abAssessmentSignatures according to the logic demonstrated in
Tenant Management
Updated system close colour + filter fix (#144226)
Problem
System Close Date colour was orange when within 30 days of the close date
The advanced filter is not working
Solution
Change the colour to red and show the expiry dates nearest to today's date first by default
Corrected the filter
Identity and Authorisation
Implement Auditing on Identity service (#143433)
Problem
There is currently no auditing on the Identity Service. Registration development lies mostly here, and therefore, it should be considered for adding auditing.
Solution
New implementation to subtract the base methods used for tracking entity changes and submit them to the Audit service. Create new Content for identity that also inherits this, add an option to add a new external provider to the list and audit
Version 9.1.210.3 (Support Release - 2 March 2026)
Learning Management
Resolve height issue on Syncfusion grid toolbox control (#145434)
Problem
The training matrix grid controls' toolbox height is too big.
Solution
Resolve height issue on the Syncfusion grid toolbox control by adjusting height styling for the toolbox
Resolve missing Syncfusion scripts that are needed for the Grid control in MVC pages. Also modified ToSignifyDateTime extension to handle date strings that have a time component (#145434)
Problem
The training requirement matrix does not load. Also, learning manage product setup crashes when the YearDTO master data has dates with a time component.
Solution
Resolve missing Syncfusion scripts that are needed for the Grid control in MVC pages. Also modified ToSignifyDateTime extension to handle date strings that have a time component.
Fixed Attendance History duplication (#145489)
Problem
Duplicated records on attendance history
Solution
Resolved the issue by paging by user instead of attendance records
Content Management
Resolved Data Annotation for Online Marking (#141344)
Problem
Online marking stamps not behaving correctly when trying to move, or when moving across the page, creating ghost elements
Solution
Refactor logic and code after Syncfusion upgrade, corrected behavior and page move
Report Builder
Resolved Filter values showing Incorrect Date (#144246)
Problem
Development was added to have dropdown values of like 'Today', Next week', but when viewing the report that is marked as an invalid date
Solution
Add FilterValue to be converted based on this data to the correct values
Performance Management
Resolve issue with the additional agreement button displaying when the user does not have a primary agreement (#140461)
Problem
When a user is assigned to more than 1 review setup and not yet had a contract, it must display the option to pick the review setup on which to create the contract. It does not do this and, by default, selects the first review setup available.
Solution
Ensure that when the chosen review setup's contract does not exists that, it does not set the selected review setup and allows the user to pick the initial review setup.
Also made a change to only fetch the additional agreement modal data when the modal is opened.
Ensure only one import is logged per ruleset when importing surveys from v8 (#142910)
Problem
When importing surveys from V8, an import was logged for each contract instead of one per ruleset.
Solution
Ensure only one import is logged per ruleset when importing surveys from v8
Version 9.1.210.2 (Support Release - 19 February 2026)
Learning Management
Adjust dropdown sizes and exclude start and end date from year dropdown (#144958)
Problem
The Year dropdown has regressed into the Date Range of the Master dataitem rather than the associated label, and the size has been adjusted and is no longer legible.
Solution
Adjust dropdown sizes and exclude start and end dates from the year dropdown.
Performance Management
Resolve issue with the additional agreement button displaying when the user does not have a primary agreement (#140461)
Problem
Add an additional agreement button that shows when impersonating a user and the user does not yet have a primary contact, and the user is only on a single review setup.
Solution
Ensure the additional agreement button is correctly hidden when the user does not yet have a primary contract.
People Management
Add handling to not do PG update with rowlock when no data to update (#144529)
Problem
Situation where if current activity on materialised PeopleGroupUsers, but there is no data in the table for the PG, then the rowlock causes performance issues.
Solution
Wrapped the table update with the row lock in an if to only run if there is data to update.
Refactor People Management tab queries to increase performance (#144529)
Problem
In some instances, the queries to fetch MyTeam / MyDepartment / MyCompany / PeopleGroupUsers time out or take an excessive amount of time to complete.
Investigated and found a couple of areas that could be done better, one of which relates to the appointments
2 calls are made as subqueries to determine 1) the number of subordinates for the user, 2) whether the user is my manager.
These are extremely inefficient, however, as for every row in the resultset the count is done from reporting lines / checked against my Line Manager.
Solution
Changed the 'My Manager' check by fetching the user's manager beforehand into a variable and then comparing the result userid against that variable.
Moved the subordinate count outside of the main cte query by first selecting everything into a temp table and then calculating and updating the subordinate count after the fact as a batch update.
Some minor changes to React for mapped key uniqueness.
Version 9.1.210.1 (Support Release - 10 February 2026)
People Groups
Correct people group materialisation clearance when the list of people group's users is fetched (#143861)
Problem
When V8 requests the people group users from V9, and some PGs have been materialised, and others have not, it causes the materialised people groups to be cleared. Only the unmaterialised PGs are to be returned.
Solution
Ensure only the calculated people groups are included when deleting the materialised people group users
Ruleset Management
Resolved event handler not being triggered on system menu click (#144569)
Problem
The off method is called, which removes all the event handlers from that element, so only the very last defined event is added
Solution
Correctly remove the same event specified to be added
Version 9.1.210 (9 February 2026)
System Access
Replace system access caching for ruleset settings to allow the login page to display the correct MFA settings (#131818)
Problem
When a ruleset's MFA settings are edited from another ruleset by a global ruleset administrator, the MFA setting does not change on the login page.
Solution
Remove the in-memory caching of system access settings and replace it with Redis caching that is busted when changing the MFA settings
Data Warehouse
Updated Containers for lmStudentSubjects and lmTermMarks (#143406)
Problem
Currently, the previous year data for the datasources StudentSubjects and TermMarks are being calculated and reinserted, which can cause issues with historic data
Solution
Updated Containers for lmStudentSubjects and lmTermMarks to only process and insert data for the current year, and keep the previous year's data
Disabled 2025 manual updates for StudentSubjects and TermMarks
Adjusted the update step for field AbsentAttendance within lmTermResults (#144262)
Problem
The field AbsentAttendance calculation within lmTermResults does not consider the year for the students, which is incorrect
Solution
Adjusted the update step for field AbsentAttendance within lmTermResults to consider the year as well, to ensure the field is being updated correctly
People Management
Resolved issue where email is mandatory on the Contact Details page, even though it is set to be not mandatory in the settings (#144273)
Problem
The Email address is set to be not mandatory in the settings, but it is required on the Contact Details screen.
Solution
Corrected the logic on the page to consider the setting as well.
Remove readonly restriction on username when auto-generated (#144410)
Problem
Even though the username is auto generated should still be able to change it on the Summary / Personal detail views on a person's profile
Solution
Remove readonly from the username field when auto generated, add existing username validation check.
Ruleset Management
Guard geolocation and prevent duplicate handlers on ruleset management (#143200)
Problem
The request allow the country to be fetched is shown on all tabs. When saving the content server settings, it saves twice.
Solution
Only run getUserCountry() when the active tab is the General tab (checks URL param 'tab'), and skip if the country is already selected or geolocation is unavailable. Replace several direct .on() bindings with .off().on() on #tab-content and form elements to avoid duplicate event handlers (menu item clicks, delete modal actions, checkbox change, and integration form submissions). Preserve existing AJAX flows for selecting/creating countries and for form submits, while cleaning up indentation and chaining for readability.
Job Management
Bust people group cache when updating position, as it might include an org change linked to a people group (#136729)
Problem
People group users are not refreshed when updating position from the job management page.
Solution
Bust the people group cache when updating the position, as it might include an org change linked to a people group
Report Builder
Unbind jQuery handlers and fix the jsTree load to ensure spamming the jsTree selector does not generate multiple bound events. (#144181)
Problem
When a user spams the tree selector with clicks, many events then fire and the page glitches
When the datasource loads without items, a JS tree error is thrown.
Solution
Replace many direct .on(...) bindings with .off(...).on(...) across add-edit-report.js, pivot-table.js, and report-designer.js to prevent duplicate event handlers and memory leaks. Add missing .fail handlers for AJAX posts, ensure checkbox/form serialisation deduplicates entries, and tighten drag/mouse event binding/unbinding. Also, adjust the jsTree node payload to always provide children as an array and include a loaded flag to improve tree loading behaviour. Minor UI/interaction fixes (datepickers, export buttons, dropdown event handling) included.
Version 9.1.209 (9 February 2026)
Performance Management
Resolved not being able to search for users on bulk actions (#143971)
Problem
When a user is searched, a check is done to try and parse to an int for userIds. This then causes users with usernames with a valid type Number to be converted and not be able to return correct data, as the username is converted to type id, but not the user's id
Solution
Change the code to make it of type string and search only on usernames
Corrected help file pageType (#144267)
Problem
When retrieving a value, it selects the first one it matches, meaning it could be a shorter/earlier key; in this case, for this page type, it is true.
Solution
Change check to decrease the length and the match
Implemented missing page routes and types for the Help Files (#144192)
Problem
Missing page routes, so no page help file could be created and defaulted to the dashboard
Solution
Added missing page help files
Resolved Job Grade Filter (#143971)
Problem
Job Grade filter types are displayed instead of scales, as well as joining to the wrong data type for values
Solution
Correct the dropdown to grading scales, as well as the query
Add calculated kpi weighted average field when exporting contract from printview (#142544)
Problem
Request to add the KPI calculated weighted average to the export of the contract.
Solution
Calculate the KPI weighted average when weighted over KPA during print preview of the contract. When weighted over setting, then the calculated kpi weight is the actual kpi weight.
Resolved data type on pre-recalculate score (#143988)
Problem
Incorrect data type for decimal, so contracts with larger max ratings can not recalculate
Solution
Corrected data type
Resolve issue where viewing documents on the KPA / Perspective level only showed the first KPI documents (#138511)
Problem
When clicking on the view documents on the KPA or Perspective level, it only shows documents loaded on the 1st KPI.
Solution
Corrected the reference filter to correctly check against which level to display documents
Data Warehouse
Created new DataSource cmFileTypeContents (#143697)
Problem
A new datasource is required to store the different file type information
Solution
Created new DataSource cmFileTypeContents
Created new table jpPeopleGroupRoles (#143862)
Problem
The required permission data are required within the DWH
Solution
Created a new table jpPeopleGroupRoles, within the DWH
Created new DataSource cmScormUploadFolders (#143697)
Problem
A new datasource is required to store SCORM file details that are being uploaded
Solution
Created new DataSource cmScormUploadFolders
Organisational Structure
Improvements to make org structure relationships more robust and prevent recursive operations (#144044)
Problem
When a node references itself as a parent or a parent node references one of the children, then the entire system no longer loads.
Solution
Updating recursive CTEs to build and check path information, adding new migration logic for path calculation, and enhancing data integrity by preventing circular references in both SQL and domain logic.
These changes collectively improve the reliability and correctness of organisational hierarchy operations, ensuring accurate path calculations and preventing infinite loops or data corruption due to cycles.
Tenant Management
Resolve issue where a tenant having a subscription expiry date in the last month of the max date can no longer be edited (#144048)
Problem
Related issue to the previous fix, if the expiry date is anywhere within the last month of the max date (9999-12-01 to 9999-12-30), then the same error occurs where the subscription becomes uneditable.
Solution
Modified the calculation to check that if at all within the last month, then take as the exact max value, else add the default extension periods.
Resolve issue where a tenant having a max subscription expiry date can no longer be edited (#144048)
Problem
When the tenant subscription expiry date is the max date (9999-12-31), it can not be edited since the calculation adds 1 month to the expiry date in certain scenarios which causes date arithmetic overflows.
Solution
Correct check that when the expiry date is equal to the max date, then don't add additional months/days.
Report Builder
Handle datetime2 in filters and remove quotes (#144059)
Problem
When the date is selected, the built query breaks and returns no results.
Solution
Updates the SQL functions and procedures in the ReportBuilder service to improve support for the datetime2 data type, ensuring that filters and operators handle it correctly and consistently.
The main changes involve adding explicit handling for datetime2 fields and removing unnecessary quotes from filter values for this type.
People Management
Implemented new validation type for User Front-end registration (#143993)
Problem
When new users are created, Id number validation is required as well as a duplication check.
Solution
A recent development has added registration-specific validation, extended the functionality to the Product Setup for People Management (Self-Service) add dropdown where validation type can also be selected. Add a check to validate the user Id number if the validation type is set
Resolved appointment and line manager not being displayed on the modal from the dashboard (#143995)
Problem
The appointment start date is never used for the appointment, neither being captured to set on the modal within react side.
Solution
Implemented a change to select the end date and use the same logic as people management to set the displayed text for the appointment, as well as just capture needed fields in React to be set
Master Data
Reset input fields for Master Data (#143898)
Problem
The "active" property is not passed to the controller when the save add new button is pressed.
Solution
This is due to the active property not being reset; the value is only assigned when the user interacts with this button
Notifications
Resolved Import Error Event not propagating (#144022)
Problem
Import Error Event Code set to not propagate, which is needed on other rulesets
Solution
Corrected seed data and migration
Dashboards
Limit dashboard reportees to 500 and update UI (#139661)
Problem
Team insight does not load when the manager has an excessive number of subordinates
Solution
When a manager has more than 500 subordinates, limit the team insights to 500. Add tooltips to indicate the subordinate count and that some users do not display
People Groups
Fix incorrect table variable reference and possible undefined temp table reference (#136729)
Problem
People group users were not correctly updating after doing a hard refresh. This happened because at the start of the query, the materialised people group users are put into a temp table. The actual DB table is then updated from the newest calculations (which is correct). At the end, before returning the result, it selects again from the temp table, which does not include the updates, resulting in the incorrect users being returned.
Solution
Clear and repopulate the temp table after the db table is refreshed, ensuring it uses the original list of people group IDs it received originally and not the list of people group IDs that needed to be refreshed, which can differ from the list of people group IDs for which we need to return users
Version 9.1.208 (9 February 2026)
Performance Management
Error when adding a review setup without a name (#143965)
Problem
The user gets an error when they add a review setup without a name.
Solution
Make the name field a required property and give the custom sanitised input elements a required tag, which renders the required appearance
Fix event handlers being removed globally after page help is selected (#143965)
Problem
After selecting the page help icon within the modal, it removes all click event handlers on buttons, etc.
Solution
Corrected to make specific before removing click events
Resolved order of impersonating user route value (#143573)
Problem
The route path expects the primary contract, then the impersonated user, whereas it is being supplied in reverse
When the allow upload is checked, GRPC throws a valid exception that needs to be caught
Solution
Corrected the order of path variables provided.
Catch error and return a valid response
Competency Analysis
Fix popover, where the text is displayed in bold (#121394)
Problem
The competency description popover displays in bold
Solution
Ensure the popover text does not display in bold
Ruleset Setup
Created a script to dynamically delete data from Ruleset (#143128)
Problem
Cannot dynamically delete data from Ruleset
Solution
Implemented a new script to Archive and then delete data of a ruleset by id
Resolve URL sanitisation on multiple tabs (#143741)
Problem
Cannot save on the system access, widgets and integration tabs
Solution
Corrected the URL sanitisation on the system access, widgets and integration tabs
Moved allowed domains configuration to ruleset 1
Data Warehouse
Updated Script for DWH Weekly Integrity Report (#142737)
Problem
Script monGenerateDWHDataIntegrityReport needs to be updated for data source accDisciplinaryActions
Solution
Updated Script monGenerateDWHDataIntegrityReport to update accDisciplinaryActions missing section to align with DWH Source Script
Created new Datasource cmNextCloudContents (#143697)
Problem
New dataSource cmNextCloudContents is required within the DWH
Solution
Created new Datasource cmNextCloudContents
Created new SSIS Package ContentManagement_ETL
Adjusted SQL Query C_03712_99999_monitorDWHPackageResultsReport.sql (#143261)
Problem
Adjustments need to be made to C_03712_99999_monitorDWHPackageResultsReport.sql
Solution
Adjusted script to exclude PackageLog.dtsx and select from WINDSORHYBRID
Updated accChats due to Refactor for Communication Portal (#143780)
Problem
The package for accChats failed due to a refactor being done for the Communication Portal
Solution
Adjusted source script with accChats to use new tables from the Communication Portal
Removed ReportCard fields within lmStudentSubjects and lmTermResults (#112511)
Problem
The ReportCard fields are not required anymore within lmStudentSubjects and lmTermResults, as this is available within lmReportCards
Solution
Removed ReportCard fields within lmStudentSubjects and lmTermResults
Updated Container for jpHRProcessRequestData (#143579)
Problem
The jpHRProcessRequestData Update process did not work correctly
Solution
Changed the update back to Truncate and Insert to ensure the data is being inserted correctly for jpHRProcessRequestData
Adjustments made within V9FullRefresh updates (#143176)
Problem
When the V9 DWH are deployed to Production, the full refresh should not be updated for the afternoon run
Solution
Updated Full Refresh steps to only update after 12 pm if the DWH package is deployed on Production during the morning
Updated Source Query for PackageLog.dtsx (#143261)
Problem
PackageLog.dtsx needs to be excluded from PackageLogs
Solution
Updated Source Query to exclude package_name 'PackageLog.dtsx'
Report Builder
Added extra filter cases for datetime2 and adjusted filter for "Choose a specific date" (#142737)
Problem
The filters, when using datetime, did not filter correctly
"Choose a specific date" required conversion for certain scenarios
Solution
Added extra filter cases for datetime2
Adjusted filter for "Choose a specific date"
Removed smalldatetime as we do not use this currently
Notifications
Resolved Properties not being replaced correctly (#143598)
Problem
With the new masked property development done, once a property exists both for mask and non-mask, it will always just replace masked property values, keeping the placeholder for the property name
Solution
Add a change that should we identify it is masked, do an extra check if there is any placeholder without the masked property to also update and replace
People Management
Remove previous validation messages and classes when selecting values for position and org. Resolve timeout on org node treeview (#143806)
Problem
Validation messages are not removed immediately after selecting values, only after the form is posted.
A timeout occurs when opening the org tree structure in the position transfer page.
Solution
Remove previous validation messages and classes when selecting values for position and org.
Also noticed while testing the bug, the org tree times out.
Added a recompile option on the query, as the query runs fast in SSMS
Improve error messages for overlapping appointments (#143328)
Problem
When adding a new appointment, editing an existing appointment or transferring the use,r the error message provides unspecific information to the user when it overlaps with a current appointment for the user themselves or on another position for another user
Solution
Add new error messages for the overlap with more details of the user and the appointment that is overlapping.
Remove duplicate code and improve error message handling.
New error messages:
Appointment overlaps with the user's own current appointment on position {{PositionTitle}} from {{AppointedFromDate}} to {{AppointedToDate}}. An appointment already exists for position({{PositionTitle}}) from {{StartDate}} to {{EndDate}} for user {{Username}}.
Always include default avatar images on the list of available avatar options (#135931)
Problem
The default list of avatar images is not shown.
Solution
The previous fix was reverted with the merge
Restored solution to always fetch default avatar images
Imports
Add API call to v8 to delete appointment history (#143323)
Problem
When an appointment is deleted in V9, the Appointment history is not deleted in V8.
There was a request to add an API endpoint in V8 (Already merged) and an API call in V9 to ensure the Appointment History is deleted.
Solution
Add new functionality in the import service to delete Appointments based on a List of IDs.
This endpoint is generic and can also be adjusted to work for various other types of items, for example, job profiles.
Communication Portal
Resolved member count error (#143761)
Problem
When selecting room members, this will return a view of users within the group, but still used old table for members
Solution
Corrected query to select the room members
"Create New" button scrolls with the chat list (#143763)
Problem
The new button is positioned absolutely within a relative container, causing the render to work, but as content gets shown from the accordion button is scrolled alongside container
Solution
Adjust to render outside the modal body, which is not within the relative container that makes it to the modal position itself
[PM] Cannot return to the list of chats if you've sent a message from within a person's agreement (#143858)
Problem
When inside a PM contract, discussion is open, which calculates to create a new discussion and not open discussion list, but once navigated back to the dashboard, a REACT change occurred, and no page redirect in MVC, which does not reset the content for the modal and the bool value is allowed to just reopen the modal as no 'context' has changed
Solution
Add route value to be saved alongside the opening of the modal, so that should the route change, navigate inside REACT the portal will force reload if it is different from when opened in another context
People Groups
Add 'LastRefreshed' to list ruleset people groups (#143598)
Problem
When a V8 menu is clicked, and the user's data is imported, then the peoplegroups linked to a user are also imported as subgroups, and their users are linked
When more than one user is imported that has the same PGs linked to them, the PG data is unnecessarily fetched from V9, causing the PG calculation to use unnecessary resources
Solution
When the PGs linked to a user are fetched, return the last refreshed date for the PG also
Only fetch PG users then for the linked PGs where the last refreshed date is after the last edit of the people group users on V8
This will limit unnecessary calls to the Peoplegroup users
Learning Management
Filter MaterialisedPeopleGroupUsers to only show active people on the PG on the attendance and marksheet page. When inheriting, marks only inherit from people who are an active part of the PG (#143629)
Problem
On the attendance and mark sheets, inactive users are also included who are part of the PG
Solution
Change to not take People condition for a user into account when the person is terminated
The person will not be part of the people group users, and the count on the list of people items will not count this item
Do not show terminated people on the attendance or attendance detail pages
When marks are inherited, do not inherit marks from previous for terminated users in the subject's people group
Content Management
[Image Resources] [Translation] Translation for "Image Type" is missing (#143740)
Problem
Missing translations in the file type
Solution
Added translation for field
[Image Resources] Preview not available when uploading a GIF file (#143783)
Problem
Restriction has been implemented to only compress image types, which excludes SVG and GIF files. Because of this, it does not render a compressed image and shows no preview available, which can cause confusion and seem like an error
Solution
Adjust the flow to handle the null value of compressed to then not show the selection of image type, which results in the original image being selected
[Image Resources] [Suggestion] Streamline upload modal (#143736)
Problem
No clear indication as to why there is a choice or reason
Solution
Add a label to indicate to select an image, move the compressed to the first selection and add a subtext to indicate the reason for the selection
[Image Resources] Display loading indicator after selecting an image (#143734)
Problem
When a file is selected, a new fetch call is made to retrieve the image and the compressed file; this does not trigger the ajax load to trigger a loader
Solution
Add a new implementation to trigger a global event so that a loader is shown and then removed when the result is received
Version 9.1.107 (9 February 2026)
Report Builder
Added extra case "Choose a specific date" within the where clause for filters and resolved conversion error (#143579)
Problem
The current reports failed due to a conversion error with recently added extra date cases within the where clause for filters
An extra case for Choose a specific date is required
Solution
Updated script C_00011_99999_ReportBuilder_CreateSQLStatement.sql by adding an extra case "Choose a specific date" within the where clause for filters, and resolved conversion error
Added extra cases within the where clause for filters (#142011 & #143230)
Problem
The ReportBuilder gave an error due to string fields being used for date filters, and double quotations are inserted for date fields
Solution
Added specific cases within the where clause for filters to ensure dates are being inserted correctly when using operators
Identity and Authorisation
Resolved font size on terms of use URL (#143651)
Problem
Terms of use URL font size is the same as other a tags
Solution
Decrease the font size
Add starting password for a user after appointment (#139782)
Problem
When a new user is imported or appointed, they do not have a default password to start with
Solution
Implemented a new change to set a default password on product Setup. When new users are created within Identity, they will use the default password. On first sign-in, a new expired result will be returned
Resolved file import not setting default password
People Management
Implemented loading indicator on tab switch (#143524)
Problem
When navigating between pill items within people management, no loading indicator is present
Solution
Implemented a change to show a loading indicator
Ruleset Management
Resolved system access settings being thrown as an error (#143637)
Problem
Cache implementation on ruleset system access settings, but once a save is initiated on the page, it triggers a clear to identity. If you stay on the page and save again, there is no item in identity, so it can not remove anything, which causes the 2nd save to show it failed to save
Solution
Add a check to first confirm that there is an item before validating the TryRemove, else default to true for removed
Resolved domains saving as HTML (#143569)
Problem
New section to enter allowed domains for a ruleset, but when saved, it saves through the mceEditor as HTML
Solution
Added a change to set to plaintext before form submit to get plain text
[Integrations] Improve validations on the Integrations page (#143200)
Problem
It is unclear what validation fails between the content server and sanitisation on the integration tab
Solution
Split the content server setup and the general
Ensure that the sanitaztion fatally falls rather save that fail
Add the org path to the sanitised URLs
Media compression process - V9 (#140478)
Problem
Currently, media is uploaded in its original size to the system without being compressed or optimised
Solution
Implement a background service that cycles through media uploaded to the system and:
Compress uploaded media
Remove original large media
Keep track of what was compressed to compress it once
Event Scheduling
Fix spelling error and icon on calendarview which does not load properly (#143375 & #143488)
Issue 1
Problem
Spelling error on pop-up modal
Solution
Fix the spelling error
Issue 2
Problem
An incorrect icon is being displayed on the Calendar View
Solution
Import Syncfusion icons on the index.scss file for event scheduling
System Access
Resolved Account Swagger API (#10645)
Problem
Duplicate test rate limit endpoints configured
Solution
Removed duplicate
Shared grpc proto files (#143197)
Problem
When updating proto files, the same proto file needs to be copied to multiple services, which wastes unnecessary time for developers to copy and maintain these files. Also, there is a high possibility of conflict during merges.
Solution
Refactor GRPC Proto to one shared file
Imports
Add missing manager to the user import API to correct the mapping when importing custom fields (#135967)
Problem
Userimport API mapping is incorrect when customfields are imported
Solution
Added LeaveManagerAlternateApproverUsername and SecondaryJobRequisitionApproverUsername to the mapping in ImportManagementServiceV1 to support additional approver information.
Content Management
Restore the missing availability check on content management (#143582)
Problem
The content management service availability check is missing, preventing the upload and download of PM documents
Solution
Restore Content Management service availability check
Learning Management
Fix Subject Copy functionality (#143406)
Problems
When a user copies and then saves a subject twice, a validation error occurs because the subject details are not being saved correctly during the copy process.
The "Copy and Save" function does not accurately save the subject details.
The "Copy" feature allows users to save a Class/Group that has already been used.
Saving a copy of a page more than once creates duplicates instead of saving the newly copied subject.
Solutions
Update the backend scripts to handle the copy page differently.
Don't include any URLs on absent notification templates (#143521)
Problem
When an image has been added to the absent notification template, the editor automatically changes the reference to relative URLs.
When the actual email is then sent out, the image path cannot be located, and the broken image link icon is displayed.
Solution
Ensure that the editor does not replace any URLS and maintains the full paths provided.
Performance Management
Resolved styling on nav section item (#143453)
Problem
When minimising the window text gets wrapped inside a container that has a fixed size and margin, also adding unneeded space
Solution
Implemented a change so that the height gets adjusted to the content of the element, with padding around
Communications Portal
Large volumes on chat (#136516)
Problem
When creating a new group chat or opening a group chat, all users of the people group linked to the chat group are loaded to the screen, causing the screen to break.
When sending a chat message on a group, the chatreadlog is populated for each user in the chat group for every message, causing the table to grow exponentially
Solution
Change the code to not load all users to the partial when the chat is a group type.
When sending a message, send it from the communication portal via SignalR after the message has been saved
Change the chat readlog to only store one record per user
Split the message id column into a LastReadMessageId and a LatestMessageId
The LastReadMessageId is used to indicate the blue ticks for the user, and the LatestMessageId to indicate if the user does have message that has not yet been read.
[Coms Portal] Keep section open while deleting chats (#143516)
Problem
When deleting a chat group, the component is reloaded,
Solution
Do not reload the component, but just remove the row from the grid.
Version 9.1.206.3 (Support Release - 29 January 2026)
Performance Management
Resolved data type on pre-recalculate score (#143988)
Problem
Incorrect data type for decimal, so contracts with larger max ratings can not recalculate
Solution
Corrected data type
Resolve issue where viewing documents on the KPA / Perspective level only showed the first KPI documents (#138511)
Problem
When clicking on the view documents on the KPA or Perspective level, it only shows documents loaded on the 1st KPI.
Solution
Corrected the reference filter to correctly check against which level to display documents
Version 9.1.206.2 (Support Release - 27 January 2026)
Performance Management
Resolved order of impersonating user route value (#143573)
Problem
The route path expects the primary contract, then the impersonated user, whereas it is being supplied in reverse
When the allow upload is checked, GRPC throws a valid exception that needs to be caught
Solution
Corrected the order of path variables provided.
Catch error and return a valid response
Ruleset Management
Resolve URL sanitisation on multiple tabs (#143741)
Problem
Cannot save on the system access, widgets and integration tabs
Solution
Corrected the URL sanitisation on the system access, widgets and integration tabs
Moved allowed domains configuration to ruleset 1
Resolved system access settings being thrown as an error (#143637)
Problem
Cache implementation on ruleset system access settings, but once a save is initiated on the page, it triggers a clear to identity. If you stay on the page and save again, there is no item in identity, so it can not remove anything, which causes the 2nd save to show it failed to save
Solution
Add a check to first confirm that there is an item before validating the TryRemove, else default to true for removed
Resolved domains saving as HTML (#143569)
Problem
New section to enter allowed domains for a ruleset, but when saved, it saves through the mceEditor as HTML
Solution
Added a change to set to plaintext before form submit to get plain text
Learning Management
Filter MaterialisedPeopleGroupUsers to only show active people on the PG on the attendance and marksheet page. When inheriting, marks only inherit from people who are an active part of the PG (#143629)
Problem
On the attendance and mark sheets, inactive users are also included who are part of the PG
Solution
Change to not take People condition for a user into account when the person is terminated. The person will not be part of the people group users, and the count on the list of people items will not count this item.
Do not show terminated people on the attendance or attendance detail pages. When marks are inherited, do not inherit marks from previous for terminated users in the subject's people group
Version 9.1.206.1 (Support Release - 19 January 2026)
Imports
Add a missing manager to the user import API to correct the mapping when importing custom (#135967)
Problem
Userimport API mapping is incorrect when customfields are imported
Solution
Added LeaveManagerAlternateApproverUsername and SecondaryJobRequisitionApproverUsername to the mapping in ImportManagementServiceV1 to support additional approver information
Content Management
Restore the missing availability check on content management (#143582)
Problem
The content management service availability check is missing, preventing the upload and download of PM documents
Solution
Restore Content Management service availability check
Learning Management
Fix Subject Copy functionality (#143406)
Problem
When a user copies and then saves a subject twice, a validation error occurs because the subject details are not being saved correctly during the copy process.
The "Copy and Save" function does not accurately save the subject details.
The "Copy" feature allows users to save a Class/Group that has already been used.
Saving a copy of a page more than once creates duplicates instead of saving the newly copied subject.
Solutions
Update the backend scripts to handle the copy page differently.
URLs on absent notification templates (#143521)
Problem
When an image has been added to the absent notification template, the editor automatically changes the reference to relative URLs. When the actual email is then sent out, the image path cannot be located, and the broken image link icon is displayed.
Solution
Ensure that the editor does not replace any URLS and maintains the full paths provided.
Performance Management
Resolved styling on nav section item (#143453)
Problem
When minimising the window text gets wrapped inside a container that has a fixed size and margin, also adding unneeded space
Solution
Implemented a change so that the height gets adjusted to the content of the element, with padding around
Version 9.1.206 (19 January 2026)
People Management
Change people groups query to use dynamic parameters to avoid parameter sniffing (#143512)
Problem
The dapper query to fetch the list of people group users can, at times, take extremely long.
This is due to the query plan caching and the parameter sniffing that is required with the current implementation.
Solution
Added OPTION RECOMPILE to the temp table insert query, additionally changed the Dapper parameters to be dynamic to allow specifying the exact types, which enables SQL to create a better execution plan.
Date values are submitted through as datetime parameters and not as varchar
System Access
Resolved system access not saving, throwing a sorry page (#143531)
Problem
Url changes implemented for validation, and a new object is stored as JSON. Within the JSON conversion, it could not deserialise correctly
Solution
Add implementation to navigate and correctly add items to a new list
Version 9.1.205 (19 January 2026)
Data Warehouse
Corrected the SQL Source query (#143362)
Problem
The Container for jpJobCompetencyInherentRequirements has failed due to source table changes
Solution
Resolved issue by updating the Source query step for container jpJobCompetencyInherentRequirements
Created new SSIS Package "PackageLog.dtsx" (#143261)
Problem
A table is required to log and store the DWH Package results
Script is required to fetch and return DWH Packages results to measure Performance
Solution
Created a new SSIS Package and table "PackageLog"
Created sp monitorDWHPackageResultsReport to return the latest DWH Package results
Added a step to update the Active field within jpAppointments (#142737)
Problem
The active was not updated for all the older Appointments since this is calculated manually within the DWH
Solution
Added a step within Appointments to update the Active field for all the Appointments to ensure it is updated
Removed Shrink Log File step with Full Refresh (#142737)
Problem
Since the Full Refresh has been adjusted only to refresh data for the current year, the Shrink Log File Step is not required anymore within ExecuteSequence
Solution
Removed step "Shrink Log File for V9_Datawarehouse with Full Refresh" within ExecuteSequence SSIS Package
Corrected Truncate step for rbDataIntegrityResults (#142737)
Problem
An incorrect table name was used to try to truncate rbDataIntegrityResults, which is causing the package to fail
Solution
Corrected SQL statement in the "Truncate rbDataIntegrityResults" task to reference the correct table name
Performance Management
Resolve various bugs due to visually impaired changes (#142553)
Problem
Scrolling on a contract page is no longer working as it should. When you scroll down, the banner with the person's details should be made smaller, to only display the portrait and name (and score gauges when applicable). The panel on the left should always stay visible, and as you scroll, it should highlight the sections that are currently visible. Only the section cards should scroll up and down.
Styling issue when selecting a score during the rating phase. The highlight does not cover all the text, and it is flat on the left and right sides instead of round.
Delete the modal when deleting the agreement period is not working correctly. You cannot enter a delete reason because focus is lost after clicking in the text field. When you click cancel, the modal starts flickering.
Cannot open the review period by clicking on the overall summary score Gauge
Solution
Resolve the problem with the scroll not working correctly and the banner not auto-collapsing on scroll. Also fixes the scrollspy stickytop issue.
Correct the problem with selected ratings styling
Correct issue with the delete modal losing focus when clicking on the deletion reason
Resolve the problem of not being able to open the contract from the overall summary score gauge
Resolve issue with editing section weights on contract due to missing parameter (#143437)
Problem
Unable to edit section weights on a contract due to the missing primaryContract parameter not being sent from the frontend.
Solution
Added missing parameter
Resolve issue with deleting action plans (#143402)
Problem
Unable to delete action plans due to a missing primary contract parameter required for authentication
Solution
Add required parameter
Resolve issue with adding/editing action plans (#143402)
Problem
Error received when trying to add or edit action plan items. Bug due to recent additional contract development
Solution
Resolve missing parameter not sent through when adding / editing / copying action plans.
Identity and Authorisation
File import not setting default password (#139782)
Problem
When importing users from the frotnend the password does not get set
Solution
Implemented a call to get the default password and set the password hash
Implemented a new change to set a default password on product Setup. When new users are created inside identity it will make use of the default password, and a new expired result will be returned
Job Management
Resolve issue with Job Inherent Requirements incorrectly updating when rating on competency analysis (#143362)
Problem
When rating competency for a user for Job Inherent Requirements, if multiple requirements of the same Master Data type exists all corresponding records for the same type are updated incorrectly.
Picked up a design problem where for the Job Inherent Requirements, multiple requirements per type can be added; however, for the analysis, the Job Competency Inherent Requirements entity is incorrectly linked to the master data record instead of the job inherent requirement record, resulting in a user can only ever have one requirement per type.
Front-end and backend allow for working with multiple per type, but cannot distinguish on the record level to which Job Inherent Requirement it is linked and as per the issue on request, updating one record leads to all of the same type being updated.
Solution
Remapped the Job Competency Inherent Requirement to the Job Inherent Requirement and updated all references accordingly.
Imports
Update email confirmation logic in user creation (#142626)
Problem
Email is not confirmed when empty
Solution
Replaces dynamic email confirmation check with a hardcoded true value when creating users via gRPC.
This change ensures all users created through people management have confirmed emails, likely to simplify sign-in during the MVP phase.
Report Builder
Resolved date filter breaking SQL script (#143230)
Problem
When a datetime filter is added, the SQL script throws an exception as the datetime is not within an apostrophe
Solution
Add a filter check to concat when the types are of datetime
Event Scheduling
Resolved Event Name not being set when tab page is reloaded (#140617)
Problem
When navigating to a tab, the event name is already loaded from event details, but should you refresh the tab, it reloads the content, where the event name is removed
Solution
Add a change to retrieve the event name on each tab to emit to set the display of the event name
Version 9.1.204 (19 January 2026)
Performance Management
Implemented calculated average score (#142544)
Problem
The KPI Calculated Average is not available on the View/Print | Export to Excel report
Solution
Implemented a new column in the data export on contract preview
Resolved KPI not being able to delete (#143253)
Problem
The primary contract's bool value was not being sent through, which caused an invalid object
Solution
Add a change to pass through the primary contract's bool value
Resolved Scroll jumping to the top of the page after rating (#142537)
Problem
Visually impaired changes made a change to auto focus first item for every useeffect change, this caused that when a rating was done it scrolled to the top
Solution
Add a change to stop concurrent refocus to the top
Fix document link for KPIs, Disable buttons on content view when content server is unavailable (#140522)
Problem
When clicking on View Documents on the KPI level, a page not found is displayed. When the content server is unavailable, clicking on the download or upload of a document causes errors
Solution
Fix the view documents link for the KPI level. Add handling to show a content server unavailable message and disable buttons when the content server cannot be reached.
Imports
Remove duplicate self-service settings in validation when importing users (#142626)
Problem
Cannot import users when ESS settings are duplicated in the DB
Solution
Removes duplicate rows in ESS settings, keeping only the most recently edited entry for each unique combination of `FieldSection`, `FieldId`, and `RulesetId`. * Updated the construction of the `requiredFields` dictionary in `UserDetailsValidationService.cs` to ensure unique combinations of `FieldSection` and `FieldId` are included, preventing issues caused by duplicate settings.
Resolved import not being triggered (#143185)
Problem
Data-Action URL is not taken into account when the form modal is being submitted
Solution
Corrected code and safety to use the action, and set the input fields correctly after selecting items.
Add custom user import SQL scripts for clients (#132261)
Problem
There is no area to version the custom client import steps
Solution
Introduced new SQL procedures for Discovery, FamousBrands, and Hirexe user import processes. These scripts implement custom pre/post import logic, such as clearing email addresses based on field values and removing non-Hirexe appointments, to support client-specific requirements.
Data Warehouse
Changed column name from ExecuteSequenceLastRefreshed to V9ExecuteSequenceLastRefreshed within PackageSettings (#143103)
Problem
Only naming the column field to ExecuteSequenceLastRefreshed will create confusion when using V8 DWH as well
Solution
Changed column name from ExecuteSequenceLastRefreshed to V9ExecuteSequenceLastRefreshed within PackageSettings
Resolved duplicate issue within accTenants (#142737)
Problem
Duplicate data is being inserted within accTenants
Solution
Added Distinct to resolve the duplicate insert issue
Added Update LastRefresh Steps within ExecuteSequence (#143103)
Problem
LastRefresh data is required for SSIS Packages
Solution
Added LastRefresh steps for all SSIS Modules and ExecuteSequence that will update within the table PackageSettings
Created new table rbDataIntegrityResults (#142922)
Problem
A new table, rbDataIntegrityResults, is required within V9 DWH
New fields are required within PackageSettings to update Last Refreshed for all modules
Solution
Created a new table, rbDataIntegrityResults, within ReportBuilder_ETL.dtsx
Created a Script that will email the results to the required employees - Added fields PeopleManagementLastRefreshed, JobProfilerLastRefreshed, PerformanceManagementLastRefreshed, TenantManagementLastRefreshed, DataDictionaryLastRefreshed, LearningManagementLastRefreshed, LearningManagementReportLastRefreshed, ReportBuilderLastRefreshed and ExecuteSequenceLastRefreshed within PackageSettings
Adjustment made within LearningManagementReport (#143104)
Problem
Adjustments are required within LearningManagementReport
Solution
Moved manual update steps to its own container
Updated manual step queries to update to the DWH table instead of the Staging table
Removed unused tasks from CreateFunctions (#125159)
Problem
Some tasks are not being used anymore within SSIS Package CreateFunctions
Solution
Removed unused tasks from SSIS Package CreateFunctions
Updated Insert steps within LearningManagement_ETL (#140865)
Problem
The package is currently failing with a full refresh due to joining with RulesetID within Insert Steps for LearningManagement
Solution
Updated Insert steps within LearningManagement_ETL by removing the RulesetID join
Updated Insert steps within JobProfiler_ETL (#140865)
Problem
The package is currently failing with a full refresh due to joining with RulesetID within Insert Steps for JobProfiler
Solution
Updated Insert steps within JobProfiler_ETL by removing RulesetID join
Updated Insert steps within PeopleManagement_ETL (#140865)
Problem
The package is currently failing with a full refresh due to joining with RulesetID within Insert Steps for PeopleManagement
Solution
Updated Insert steps within PeopleManagement_ETL by removing RulesetID join
Resolved errors within UpdateDataDictionary.dtsx (#142103)
Problem
An error is received when selecting all the datasource fields for JobProfiles within ReportBuilder, since certain fields no longer exist anymore
An error is received within "Add DataSourceJoins 2" due to not pointing to the correct Connection String
Solution
Corrected the Data Dictionary to exclude fields for JobProfiles that do not exist anymore within the Data Warehouse
Corrected Connection String for "Add DataSourceJoins 2"
People Management
Add immediate imports after transfer to another ruleset (#142770)
Problem
When the user is transferred, the import is not requested immediately, delaying the sync of learner records
Solution
Moved reporting line, cache busting and additional service import triggers from PeopleController to JobProfilerServiceV1 for better encapsulation. Added GetUsernameAsync to IUserQueries and UserQueries to support username retrieval by user ID. Updated ImportUsersEventConsumer to limit ImportTypes to UserData only. Also added placeholder fields for parent/guardian names in user export.
Fix materialisation when a people group has not been materialised before | Fix regression bug on people termination (#136729)
Problem
When materialising people groups and the list of people groups to materialise is empty, it only materialises for people groups that have already been materialised in the past.
Solution
When the 'forceSync' parameter is true, refresh for ALL people groups on the ruleset (if an empty people group was received).
Still, only materialise people groups already materialised when 'forceSync' is false.
**PLUS** Other issue picked up while testing: Termination broken due to a regression bug. A new field was added to a model used in a query in job profiler, but the query was not updated, which results in the query breaking, meaning ultimately people cannot be terminated anymore. Updated the model to make use of auto properties instead of a constructor, which makes it easier for Dapper to map the query result to the model.
Update SkiaSharp dependencies and Docker setup (#139069 & #142672)
Problem
The component to convert images and Word documents is not available, and an error is received. The version of the native libSkiaSharp library (88.1) is incompatible with this version of SkiaSharp. Supported versions of the native libSkiaSharp library are in the range [116.0, 117.0).\u0022)) An error occurred while processing your request., , , The type initializer for SkiaSharp.SKImageInfo threw an exception.)","Exception":"System.TypeInitializationException: The type initialiser for SkiaSharp.SKImageInfo threw an exception. System.DllNotFoundException: Unable to load shared library libSkiaSharp or one of its dependencies.
Solution
This pull request updates the SkiaSharp dependencies to the latest version and ensures the application runtime environment is properly configured for SkiaSharp support. It also includes some minor code cleanups and Dockerfile improvements.
Hide summary sections that the people group do not provide access to (#139878)
Problem
When the people group does not allow access to a section
Solution
Added checks to only display payroll connector and payroll ID fields for the admins and manages, the user should not see the fields on their own profile. Updated ProfileSummaryViewModel to refine view permissions for particulars, contact details, and address based on user and group permissions.
Report Builder
Resolved Delete button not being enabled when toggle is checked (#143032)
Problem
When a toggle is active for confirmation on the deletion modal, the delete button is not enabled
Solution
Add a change to toggle the disabled state depending on the checked state
System Access
Implement rate limiting for gRPC transcoding HTTP requests (#142267)
Problem
APIs do not impose any restrictions on the size or number of resources that can be requested by the client/user
Solution
Add change to rate limit endpoint calls
Implement custom post import step (#137281)
Problem
Employees do not have individual email addresses and are unable to reset their passwords, as they can not receive the Welcome mail
Solution
Implement a step to set the user password hash when empty
Enhance the chatbot code to URL and JS detection (#142505)
Problem
When the bot code is anything other than a properly formatted JS function, the Sanitisation does not work. Any URL and methods are then allowed that are incorrect.
Solution
Change the URL checking to identify any URL regardless of the formatting, and if it is not part of the whitelisted URL, reject and clear the text received. Attempt to format the text before parsing to JS to allow the functions to work better. Other improvements identified during the above work to prevent harmful scripts of being injected.
Exports
Resolved Export notification not being shown (#143192)
Problem
Change was made to trigger a download once export has been interacted with, due to messages being sent it was sent to each tab of the user that triggered a download, change was made to generate tab-ids for each request and only download on the tab that it interacted on, this caused that on report builder the id was not set hence why no message was shown
Solution
Add a change to generate a tab ID to be sent with the export of a report
Communication Portal
Added media query to resolve position (#137794)
Problem
On certain screen resolutions, the add button is rendered behind the footer, and one of the selections can not be seen clearly
Solution
Add a media query change to accommodate this screen resolution
Job Management
Resolved job profile count (#140550)
Problem
Count varied from the first load and then, when opened, resulted from the partition, as there could be multiple positions within a job profile
Solution
Add a change to correct the partition for joins and counts
Resolved Job Profile Not being copied and global error snack (#142903)
Problem
When copying a job profile, an exception is thrown because it tries to copy the disclaimer as well. Because of the value object, it created a reference to the job profile ID that causes the error. A recent change was made to ajax.tsx to correct the console errors being logged when partial view results are being returned over ajax, but this caused the middleware general exceptions snack messages did not display any more
Solution
Add a change to create a new value object for disclaimer settings
Revert and add another change to implement and correct to not write console errors when it is not JSON.
Pathways
[Annotation][Syncfusion] Layout changes (#139069)
Problem
Not all the stamps are available. A stamp reverts to the previous stamp when used more than once. The stamp does not persist between pages. When reusing ink and stamps where used before the stamp is reactivated
Solution
Significant enhancements to the PDF annotation functionality in the pdfAnnotation.js file, focusing on improved custom stamp handling, user experience, and code clarity.
It also updates the configuration to use production endpoints for the PDF viewer server and adjusts Content Security Policy settings for development.
PDF Annotation and Custom Stamp Functionality: Refactored custom stamp toolbar integration:
Custom stamps are now added to the toolbar with clear identifiers and properties, enabling easier mapping between toolbar buttons and stamp types.
The toolbar now also includes new stamps such as "Half" and "Blue Half Tick", and supports rotating pages with new rotate buttons.
Improved stamp selection and re-arming: Introduced logic to reliably restore the selected custom stamp after page changes and annotation additions, ensuring a smoother user experience when annotating multi-page PDFs.
Added robust page rotation support: Implemented a rotateAndReload function that supports both document-level and viewer-level rotation, handling active annotation modes and ensuring the viewer state remains consistent.
Enhanced annotation mode toggling:
Refined ink annotation toggling and ensured that switching modes resets the custom stamp selection, preventing mode conflicts.
Configuration and Security: Updated PDF viewer server endpoint to production: Changed the PdfViewerServer URL in development settings to point to the production API for more realistic testing. Expanded Content Security Policy for development: Added the production server to the connect-src directive, allowing connections to the new PDF viewer endpoint during development.
Identity & Authorisation
Resolved registration textarea field not outlining correctly (#142116)
Problem
Within the input fields, there is styling that gets generated, which adds a border outline and correction when the label moves up, but on textareas, it does not
Solution
Add a change to also add these divs to textareas so that the same styling and behaviour gets used
Resolved MFA enhancements (#143105 & #143100)
Problem
The countdown timer was adding a suffix with the added countdown value, which caused the old countdown and the current to be displayed next to each other. Missing translations
Solution
Added a change to the countdown to remove and add as the timer counts down for resend, Added missing translations
Version 9.1.203 (19 January 2026)
System Access
Update email confirmation logic for user import and update to allow a user without an email to login (#142626)
Problem
A user without an email address cannot log in because the email has not been confirmed.
Solution
In ImportUsersCommandHandler, email is now considered confirmed if the user has no email address. In UpdateUserCommandHandler, email is always marked as confirmed. These changes ensure consistent handling of email confirmation status during user import and update operations.
Imports
Change Import Modal to only fetch import status and available imports when opened (#138821)
Problem
Currently, on every page, navigation checks are done on the import status being retrieved
Solution
Change to only load the import status when being opened
Job Management
Resolved positions not loading the correct filter type (#140550)
Problem
When job profiles are loaded, icons indicate the count of vacant, filled and inactive positions, but once clicked, it results in all positions
Solution
Implement new development to list positions based on the filter type
Resolved sanitise text on reporting line (#142578)
Problem
The title of the span is being set and used from JavaScript to set the modal title. When the title of the modal is set, it gets set with the encoding values when HTML is rendered
Solution
Add a change to set the modal title as raw text to not be encoded
Report Builder
Resolved data source width expand and console error on invalid ajax json (#140432 & #141369)
Problem
On Firefox, the expand click event did not trigger from SVG find, script issue on Firefox that does not allow inline events CSP* Console errors being logged when JSON is passed, which is HTML for partial views
Solution
Add a change to rather just check for class collapse, move the event handler to the JavaScript file. Add a change on ajax.ts to handle JSON to not parse, should it be HTML and rather warn than error
Resolve issue where race condition on Ruleset creation prevents initial user from materialising on ReportBuilder (#140410)
Problem
When a new ruleset is created, the ruleset creation is requested on each service sequentially. However, the user is copied to the new ruleset as soon as the ruleset is created, and then the SingleUser event is emitted, which informs all other services to materialise the user. This creates a race condition where the SingleUser create event reaches ReportBuilder before the ruleset creation has happened, and because of the foreign key relation between the materialised user and materialised ruleset table on RB, the user creation fails, and the first ruleset user is never created.
Solution
Added additional functionality on the RulesetCreation on ReportBuilder, after the ruleset has been materialised, to check if there exist materialised users and then fetch all current users for the ruleset from Account Service and materialise them immediately
Performance Management
Reload page when user contract is deleted (#142780)
Problem
Page reloads only if an additional contract is deleted
Solution
Add a change to reload the page after the primary contract deletion
Resolve issue where bulk actions are not displaying all users (#142546)
Problem
On bulk actions, the list of people displayed on the select list does not include all the available users, because only the first 20 users are filtered out when fetching details from JobProfiler, and then those with contracts or for the review year setup aren't all returned.
Solution
Change functionality to the first page for users from performance management, then after selecting job details. Fixed the load more / load all functionality
Add loading indicator when creating contract (#142777)
Problem
When creating a contract for a review setup, no loading indicator
Solution
Add loading indicator
Resolve order of review setup names (#141701)
Problem
The order causes the numeric values to be incorrectly ordered, for example, Setup 1, Setup 10, Setup 2
Solution
Add change to the comparison to take numbers into consideration
Identity
Enhance MFA process with option to remember (#134730)
Solution
Add change and enhancement to the MFA process. Add input to allow ruleset to change the number of hours to remember MFA, should they wish
People Management
Optimise user org path queries and improve appointment selection when calculating people group users (#142962 & #142233)
Problem
A user with an active and future-dated appointment has an incorrect future status in the calculated people group, and the user is excluded from the TA where it is used.
Solution
Refactored user org path queries to use temp tables and bulk copy for efficiency, and improved appointment selection logic to better prioritise current appointments. Updated related PeopleGroups queries and gRPC service to handle distinct user IDs and avoid unnecessary queries.
Fix uploading profile image, causing user banner to be removed (#142688)
Problem
Uploading a profile image causes the user's banner to be removed.
Solution
Use the existing profile image if one is provided.
Fix banner not updated if you upload a new one (#142688)
Problem
If you open the modal to change a person's banner and/or profile image and then upload a new banner image, that banner image will not be set as the new banner image for the person. The first time you select it, nothing will happen, but if you select it a second time, the banner is updated.
Solution
Return uploaded banner image details and set them so that they can be used when the image is saved.
Remove functionality to copy profile image and avatar for transferring the user to the ruleset (#142521)
Problem
Profile image and avatar should not be copied to the new user with transferring the user to a new ruleset
Solution
Remove functionality to copy profile image and avatar for transferring the user to the ruleset
Resolve search and collapse problem on Orgnode tree on transfer person to ruleset modal, and prevent transfer of user with same ID number in destination ruleset (#142696 & #142694)
Problem
When searching for organisations, the treeview populates duplicates. Able to transfer a person with Idnumber that already exists on the destination ruleset
Solution
Resolve the search and collapse problem on the Orgnode tree on transferring a person to the ruleset modal. Prevent transfer of the user with the same ID number in the destination ruleset
Notifications
Cannot send a list of CC or BCC recipients via the external email API (#142336)
Problem
When more than one CC or BCC email address has been configured on V8, V9 do not send any emails
Solution
Correct the concatenation of the list of emails to allow the SMTP service to process them
Data Warehouse
Implemented Performance Improvements within PerformanceManagement_ETL.dtsx (#140865)
Problem
Performance Improvements are required within the SSIS Package PerformanceManagement_ETL.dtsx due to the growth of system data and the DWH Package
Solution
Removed the DELETE and Truncate Steps and replaced them with Update and Inserts for the below Data Sources: pdmContracts, pdmContractSurveys, pdmContractPeriods, pdmContractPeriodActionPlans, pdmContractPeriodSectionItems, pdmReviewYears, pdmContractPeriodEvaluations, pdmReviewYearPeopleGroupsSetup, pdmContractPeriodSectionItemModerations
Adjusted steps for Custom fields calculations/insert for pdmContracts and pdmContractPeriods to only do this for active Contracts/ContractPeriods
Added new Join between jpAppointments and jpJobProfiles (#142103)
Problem
Join are required between jpAppointments and jpJobProfiles
Solution
Added Join between Appointments and JobProfiles for Report Builder
Implemented Performance Improvements within LearningManagementReport_ETL.dtsx (#140865)
Problem
Performance Improvements are required within the SSIS Package LearningManagementReport_ETL due to the growth of system data and the DWH Package
Solution
Removed the DELETE and Truncate Steps and replaced them with Update and Inserts for the below Data Sources: - lmAttendances - lmReportCards
Version 9.1.202.3 (Support Release - 14 January 2026)
Performance Management
Cannot edit section weights on the contract (#143437)
Problem
Unable to edit section weights on a contract due to the missing primaryContract parameter not being sent from the frontend.
Solution
Added missing parameter
Cannot delete action plans (#143402)
Problem
Unable to delete action plans due to a missing primary contract parameter required for authentication
Solution
Add required parameter
Issue when adding/editing action plans (#143402)
Problem
Error received when trying to add or edit action plan items. Bug due to recent additional contract development
Solution
Resolve missing parameter not sent through when adding / editing / copying action plans
Job Management
Issue with Job Inherent Requirements incorrectly updating when rating on competency analysis (#143362)
Problem
When rating competency for a user for Job Inherent Requirements, if multiple requirements of the same Master Data type exists all corresponding records for the same type are updated incorrectly.
Picked up a design problem where for the Job Inherent Requirements, multiple requirements per type can be added; however, for the analysis, the Job Competency Inherent Requirements entity is incorrectly linked to the master data record instead of the job inherent requirement record, resulting in a user can only ever have one requirement per type.
Front-end and backend allow for working with multiple per type, but cannot distingush on the record level to which Job Inherent Requirement it is linked, and as per the issue on request updating one record leads to all of the same type being updated.
Solution
Remapped the Job Competency Inherent Requirement to the Job Inherent Requirement and updated all references accordingly.
Version 9.1.202.2 (Support Release - 7 January 2026)
System Access
Update email confirmation logic for user import and update to allow a user without an email to log in (#142626)
Problem
A user without an email address cannot log in because the email has not been confirmed
Solution
In ImportUsersCommandHandler, email is now considered confirmed if the user has no email address
In UpdateUserCommandHandler, email is always marked as confirmed
These changes ensure consistent handling of email confirmation status during user import and update operations
Imports
Remove duplicate self-service settings in validation when importing users (#142626)
Problem
Cannot import users when ESS settings are duplicated in the DB
Solution
This pull request addresses the issue of duplicate entries in the `SelfServiceSetup` table and improves the handling of required fields in the user details validation logic. The most important changes are as follows:
Removes duplicate rows in ESS settings, keeping only the most recently edited entry for each unique combination of `FieldSection`, `FieldId`, and `RulesetId`.
Updated the construction of the `requiredFields` dictionary in `UserDetailsValidationService.cs` to ensure unique combinations of `FieldSection` and `FieldId` are included, preventing issues caused by duplicate settings.
Performance Management
Resolved KPI not being able to delete (#143253)
Problem
Primary contract bool value not being sent through, which caused an invalid object
Solution
Add a change to pass through the primary contract's bool value
People Management
Re-add transfer person JS logic (#143186)
Problem
The transfer button was removed.
Solution
Re-add it
Fix materialisation when a people group has not materialised before | Fix regression bug on people termination (#136729)
Problem
When materialising people groups and the list of people groups to materialise is empty, it only materialises for people groups that have already been materialised in the past.
Solution
When the 'forceSync' parameter is true, refresh for ALL people groups on the ruleset (if an empty people group was received).
Still, only materialise people groups already materialised when 'forceSync' is false.
PLUS Other issue picked up while testing:
Termination broken due to a regression bug.
A new field was added to a model used in a query in the job profiler, but the query was not updated, which results in the query breaking, meaning ultimately, people cannot be terminated anymore.
Updated the model to make use of auto properties instead of a constructor, which makes it easier for Dapper to map the query result to the model.
List of the Release Notes (2025)
Signify continually develops new functionality and resolves issues, so our system is continually improving. We also develop exciting new modules in line with how the use of Human Resource Information Systems is changing. A list of the Release Notes for the different versions is shown below.
Version 9.1.202.1 (Support Release - 18 December 2025)
People Management
Optimise user org path queries and improve appointment selection when calculating people group users (#142962 & #142233)
Problem
A user with an active and future-dated appointment has an incorrect future status in the calculated people group, and the user is excluded from the TA where it is used.
Solution
Refactored user org path queries to use temp tables and bulk copy for efficiency, and improved appointment selection logic to better prioritise current appointments. Updated related PeopleGroups queries and gRPC service to handle distinct user IDs and avoid unnecessary queries.
Imports
Improve the schedules tools page + fix to schedules where the start time moves to tomorrow if the start time has already passed on the current day (#136927)
Problem
Unable to control how many times the payroll connector should run per day on a specific ruleset.
Unable to change the schedule of the V8 bulk sync
Unable to disable the V8 bulk sync
Solution
On ruleset management| Integrations | General add simple scheduling
Make the occurrence always in hour intervals, and set the starting time in increments of 5 minutes. Add an optional ending to the field
Add a flag to disable the schedule. When disabled, that type of import will not run on the ruleset
Allow multiple occurrences to be configured for each schedule item, e.g
Occurs every hour between 6h00 and 10h00
Occurs every 6 hours between 11h00 and 24h00
Add two separate schedules under Integration | General :
Run Payroll connector
Run Bulk Additional Service Imports
Add schedules next to each of the bulk pulls
Ensure the schedules are disabled when the Tenant subscription expires, or the ruleset is disabled
Multiple import instances created (#142329)
Problem
10 instances of the payroll import were started at the same time as the scheduled time, but before the payroll pull was completed, 10 instances of the user detail import were started. Neither completed. Please investigate why 10 instances were created
Solution
Add ruleset ID to payroll additional service imports
Notifications
Cannot send a list of CC or BCC recipients via the external email API (#142336)
Problem
When more than one CC or BCC email address has been configured on V8, V9 do not send any emails
Solution
Correct the concatenation of the list of emails to allow the SMTP service to process them
Version 9.1.202 (15 December 2025)
Performance Management
Add missing template migration file (#138767)
Problem
Migration file not generated for template changes
Solution
Add missing translation file
Ruleset Management
Resolve position of dropdown menu (#137794)
Problem
Communication portal new menu is bit high in which the first item can not be seen
Solution
Add a change to shift the menu a bit down in the case where it is rendered in the footer
Improve URL input sanitisation and validation (#124124)
Solution
Replaced SingleOrDefault with FirstOrDefault in Ruleset.cs for registration field lookup.
Removed [Url] attribute from RulesetSystemAccessViewModel properties.
Updated _RulesetSystemAccess.cshtml to use for URL fields and adjusted min value for DaysActiveForRegisteredUsers.
Set default sanitizedValue to string.Empty in ValidationActionFilterAttribute.
Minor formatting fix in ValidationService.cs.
Data Warehouse
Added new Registration fields within jpJobProfiles, jpOrganisationalNodes and accRulesets (#138087)
Problem
New Registration fields need to be added to the DWH
Solution
Added new fields AvailableForRegistration, DisclaimerAcceptanceMessage, DisclaimerMessage, ShowNotificationAtLogin and ShowNotificationAtRegistration within jpJobProfiles
Added new fields AvailableForRegistration within jpOrganisationalNodes
Added new fields DaysActiveForRegisteredUsers and EnableRegistrationApproval within accRulesets
Version 9.1.201 (15 December 2025)
Job Management
Add UserId to JobInherentConstraint entity (#142647)
Problem
Unable to set the status of a competency job's inherent requirement if another user already has the requirement on the same job profile
Solution
Updated the uniqueness constraints for the `JobCompetencyInherentRequirements` table to include the `UserId` field.
This change ensures that records are uniquely identified by a combination of `RulesetId`, `UserId`, `InherentRequirementsId`, and `JobProfileId`, rather than just by `RulesetId`, `InherentRequirementsId`, and `JobProfileId`.
This will help prevent duplicate entries for different users and improve data integrity in scenarios where multiple users interact with the same job competency requirements.
Changed check to hide job profiler tabs to rather a ruleset id deny list (#142649)
Problem
Need to change check to hide job profiler tabs based on a ruleset id deny list instead of just an on and off toggle.
Solution
Changed check to hide job profiler tabs to rather a ruleset id deny list.
Resolve Collapse that did not work (#140555)
Problem
When selecting an org node, and expanding the tree view, the collapse button did not do anything as no handler or event was attached.
Solution
Create an event to collapse the tree nodes
Fix label not floating when adding reporting line (#141695)
Problem
Reporting line input labels were not floating when adding managers to them. The label and the input text then overlapped.
Solution
Changed the input from "disabled" to "read only", added inline CSS to prevent background from covering label when focusing.
Changing it to read only instead of disabled allows the user to focus the input, but still not manually type anything into it.
Resolved Image being added to Disclaimer and correction on placeholder event listener (#142369)
Problem
Event listener incorrect on placeholders being selected. When images needs to be uploaded it needs to be created with a link instead of base 64.
Solution
Added correct event listener, and implemented the image source file upload.
Learning Management
Make issue date editable on report cards (#142241)
Problem
Make the issue date editable on report cards.
Solution
Make the issue date editable on report cards.
Profile Preview for Learning Displays "No Line Manager" for Users with Parent/Guardian Assigned (#142707)
Problem
Profile Preview for Learning Displays "No Line Manager" for Users with Parent/Guardian Assigned.
Solution
Profile preview for a learner now displays Primary P/G if assigned otherwise falls back to Secondary P/G otherwise defaults to No P/G assigned.
Enhance the attendance register and rectify the attendance history (#142606)
Problem
The attendance register does not accurately reflect students who were added to the class later.
Attendance history for students added to the class group after the initial register is recorded under the incorrect heading.
Solution
An indicator text has been added beneath the student’s name, stating that attendance was not taken because the student was not part of the group at the time attendance was recorded.
A new ban icon has been introduced to indicate the dates and periods when the student has no recorded attendance.
Fixed Attendance Register Duplicate Record created for Learner (#142676)
Problem
Duplicate attendances are appearing for a learner for each absentee record.
Solution
Prevented duplicate attendances from appearing for a learner for each absentee record.
Add an absentee index and a foreign key to resolve the migration issues (#133721)
Problem
Migrations are not working due to a missing migration.
Solution
Created a new migration to add an index on the UserId column in the Absentees table.
Added viewing of absenteeism of learner and document's uploaded (#138890)
Problem
Need to add retrieval of absentee's details and listing of file names.
Solution
Added retrieval of absentee's details and listing of file names.
Added loading indicator when people management setup form is saved and centred profile summary view buttons (#142332)
Problem
Need to add loading indicator when people management setup form is saved and centred profile summary view buttons.
Solution
Added loading indicator when people management setup form is saved and centred profile summary view buttons.
Resolved marksheet modal flickering (#142327)
Problem
When users rapidly opened or closed modals, or clicked on multiple cells in quick succession, multiple setTimeout(..., 0) calls would be queued up. These delayed actions, or "stale timeouts," would sometimes execute after the user had already moved on to another interaction. As a result, the modal would unexpectedly reopen, causing a flicker effect as it kept opening and closing rapidly.
Solution
Clear any previous timeouts before setting new ones. By doing this, any old, irrelevant timeouts that could trigger the modal to reopen are removed, ensuring only the most recent action is executed. This stops the unwanted flickering and improves the user experience.
Resolved flickering of comment modal (#142327)
Problem
When the cell is clicked, the cellEdit args are focused even if a modal opens to set the comment, this causes cases where the focus on the modal as well as the cell tries to be applied which causes the flicker effect, 'switching between the 2 components'.
Solution
Add change to cancel the args cell edit, this just removed the focus and edit functionality as a comment can not be edited only selected to be populated within the cell. Also addition implemented to take the cell text as a request.
Ruleset Management
Prevent the search bar from refreshing the page (#141955)
Problem
The global search bar on the Ruleset Setup refreshes the page, which clears some of the text typed into the search bar.
Solution
Increased the debounce time to the standard 700ms to ensure user has ample time to type before the submit, which refreshes the page.
Resolved custom widgets not being able to upload content (#142524)
Problem
When uploading any content to the tinyMCE it converts to a base64 image, which exceeds content length when saved.
Solution
Implemented change as other content to upload the file to the ruleset folder with a blob id link for reference.
People Groups
Fix bug where people group users were not refreshed when people group id list empty (#139340)
Problem
Refreshing materialised people group users were refreshed from cached people groups only, resulting in the materialised people group users not being refreshed when not yet cached or cache busted.
Solution
Add a new flag, refresh All, which is used when all people groups are refreshed. If true and people group ids empty, it refreshed for people groups which are currently materialised.
Performance Management
Show the file name and size when you edit the document (#139615)
Problem
Clear modal not clearing the changed input fields.
Solution
Correct the clearing of input values, Add change to view the file name and size once the edit document is clicked.
Resolved edit upload file (#142687)
Problem
Currently any file can be edited regardless of the level item.
Solution
Add change to only allow to edit a file when on level 3, contract or action plan item.
Rename Objective Settings word to only Objectives on PM Templates (#138767)
Problem
In PM templates a word reads as Objective settings, as request to change to Objectives
Solution
Rename the templates to Objectives
Resolved dropdown enabled when review setup not selected (#141788)
Problem
Change was made to add disabled and loading indicators to dropdown values, but when nothing has loaded nor selected review period selection is enabled even if review setup has not been selected
Solution
Add change check to see if review setup has been selected
Ensure selected review setup tab is maintained when navigating back to dashboard from contract (#140525)
Problem
When user is on a specific Review Setup tab or on a specific additional contract tab, when navigating to the contact and back to the dashboard the previous selection was lost and it did not set the correct tab as selected nor load the correct review year setup details.
Solution
Changed the tab type / identifier to be combination of the ReviewSetupId and User ContractId if applicable. When clicked store that to session. On load of dashboard read selected tab / review setup based on session value. On fresh visit reviewYearId is null then remove session value to reset to first year first tab. On year change reset session to revert to first tab,
Implemented loading indicators on moderation search (#141788)
Problem
When dropdown items are selected the next list is loaded based on selection, when a user navigates and selects quickly the list could seem empty.
Solution
Add change to disable dropdown with a loading indicator while results are being loaded.
Implemented moderation view/print per contract period (#141696)
Problem
Cannot view only one contract period on the view/print of moderation.
Solution
New change to allow from moderation to view/print a contract period and not all periods of the contract.
Resolved search for target audience (#136427)
Problem
When searching within the header global search, the page is resubmitted.
Solution
Correct to prevent original submit and let the table make use of global search and change to ajax server.
Resolved Documents not being able to navigate nor update visuals (#139615)
Problem
With the additional contract changes when navigating for documents the bool value is not included When Editing a file changes are made on the add modal which does not update visually on modal any changes.
Solution
Correct the navigation urls to include the primary contract variable Correct the ids as there can not be a duplicate id value on the page.
Enhance sorting of review setups link slider (#141701)
Problem
Database ordering is used.
Solution
Add enhancement to sort the review setup link items alphabetically.
People Management
Fix incorrect URL used within the user registration email when approval process is active (#142659)
Problem
When registering a user while logged in on another service (i.e., the request does not originate from the Identity service), the URL in the registration confirmation email is resolved incorrectly. Specifically, it omits the /auth segment. This issue only occurs when the registration approval workflow is enabled. If the user self-registers directly (approval off), the URL is generated correctly.
Solution
Simplify the URL generation by using the configured Issuer value, which already includes the /auth segment, instead of relying on HttpContext and LinkGenerator. This ensures that the confirmation link is correct regardless of which service initiates the registration request.
User registration fixes (#142639, 142601, 142600, 142659)
Problem (142600,142659)
Registration Request Short URL goes to error page | Verify email address email contains a broken link.
Solution
Fix the url contained within the emails
Problem (142601)
Declined requests do not show the reason for decline status.
Solution
Always display the latest registration outcome, even if there were no prior requests 142639 Center align the status column on the history tab,
Adjust table column styles for better readability in the absentee list (#142678)
Problem
The lack of word-wrapping causes the URL to push the content outside the modal, making it unreadable.
Solution
Enable word-wrapping on the front end and ensure that the Start Date and End Date do not wrap.
Hide initials when profile image is uploaded (#141440)
Problem
When uploading an profile image when no image is set, the user initials overlaps the profile image.
Solution
Added logic to hide the user initials and show the profile image preview when a new profile image is uploaded.
Also assigned an ID to the initials span for easier DOM manipulation.
Resolved duplicate managers being returned (#142577)
Problem
An event handler is attached on each load which causes duplication records to be added.
Solution
Add of handler to first remove before adding new.
Displayed selected banners first in main dashboard banner list (#139225)
Problem
It is sometimes hard for a user to see what banners they selected if the list is very long.
Solution
Updated the ManageBannerModal component to sort the images array so that selected images appear first in the list. This improves the user experience by making selected banners more visible. Only two lines really differ. The rest is the TSX linter fixing indentation.
Kudos list on Firefox cut off by scrollbar (#139915)
Problem
Kudos list on KudosModal on Firefox cut off by scrollbar.
Solution
Added padding to the bottom of the Kudos list.
Copy user profile image and avatar to new ruleset when user is transferred (#142521)
Problem
When user is transferred to new ruleset the users' profile image and avatar is not displayed.
Solution
Copy user profile image and avatar to new ruleset when user is transferred.
Add capturing of learner's absenteeism (#138889)
Problem
As a Parent/Guardian, I want to capture my Learner’s Absenteeism for the Teachers. Change 'Send Absent Notifications' to 'Send Absence Notifications' Change 'Log absence record' to 'Log absence record' Make the 'The system will notify the teacher' text small on the log absent modal. Remove capitals on the log absent modal. Hide learner records button. On the absent modal: add a counter to count the days between the from and to dates. Show snack message longer for overlapping date period.
Solution
Add capturing of learner's absenteeism. Changed 'Send Absent Notifications' to 'Send Absence Notifications' Changed 'Log absence record' to 'Log absence record' Made the 'The system will notify the teacher' text small on the log absent modal. Removed capitals on the log absent modal. Hide learner records button. On the absent modal: add a counter to count the days between the from and to dates. Show snack message longer for overlapping date period.
Improve appointment selection logic in user queries (#142233)
Problem
Future data appointments ignore the current appointment where retrieving the users latest appointment.
Solution
Refactored SQL queries to consistently select the most relevant appointment per user, preferring current appointments over future or past ones using ROW_NUMBER and date logic. Updated CTEs and join conditions to use this logic throughout the file, ensuring accurate data retrieval for user-related queries. Increased command timeout for long-running queries. Areas affected Users on Department Tab Users on My Company Tab Users on My Team Tab Users on People Groups Tab PM Ratings Evaluation PM list internal Evaluators Terminate Person Modal Event Scheduling List subordinates for booking Event Schedule Attendee View Event Schedule Attendees Individuals Event Scheduling GetDocuments Open event Schedule Calculate People group users.
Improve performance on simplified user export (#16727)
Problem
DB user query for export of 17k users runs for 2 mins.
Solution
Improve performance on DB query by evaluating disability once and not per row
Resolved focus resetting to input (#141914)
Problem
When a toggle is changes for a role either edit or view, this triggers a react save edit and on each interaction it resets the focus to the modal input because of useEffect.
Solution
Remove the on load to reset focus each time as the initial focus is set but for concurrent changes the view will stay on the toggle being changed.
Disable transfer to ruleset button when the user is already terminated (#142423)
Problem
Transfer button still active for user that is transferred and terminated on current ruleset.
Solution
Disable transfer to ruleset button when the user is already terminated.
Imports
Fix import schedules not executing consistently (#141825)
Problem
Schedules did not always execute consistently, especially for bigger intervals - larger than 4 hours.
Solution
Rather build a cron schedule from the schedule. + Add a section on the tools page which retrieves the cron schedules for the ruleset, so that we can verify if the jobs and triggers created correctly.
Fixes on dynamic import schedules (#136927)
Problem
Incorrect label when no schedules exist.
Solution
Fix label for no schedules.
Data Warehouse
Added new tables accUserRegistrationRequests and accUserRegistrationFields within PeopleManagement_ETL (#138087)
Problem
New Datasource accUserRegistrationRequests and accUserRegistrationFields needs to be added to the Datawarehouse
Solution
Added new table UserRegistrationRequests within PeopleManagement_ETL - Added new table UserRegistrationFields within PeopleManagement_ETL
Implemented Performance Improvements within DataDictionary_ETL (#140865)
Problem
Performance Improvements are required within SSIS Package LearningManagement_ETL due to the growth of system data and DWH Package.
Solution
Removed the DELETE and Truncate Steps and replaced it with Update and Inserts for the below Data Sources: - ddDataSourceSetups - ddDataSourceCategories - ddDataSources - ddDataSourceFields
Implemented Performance Improvements within TenantManagement_ETL (#140865)
Problem
Performance Improvements are required within SSIS Package TenantManagement_ETL due to the growth of system data and DWH Package.
Solution
Removed the DELETE and Truncate Steps and replaced it with Update and Inserts for the below Data Sources: - accTenants - accRulesets.
Implemented Performance Improvements within LearningManagement_ETL (#140865)
Problem
Performance Improvements are required within SSIS Package LearningManagement_ETL due to the growth of system data and DWH Package
Solution
Removed the DELETE and Truncate Steps and replaced it with Update and Inserts for the below Data Sources: - lmEmployeeTrainingRequirementsMatrix - lmEventSchedules - lmEventScheduleAttendees - lmEventScheduleSessions - lmEventSchedulingCosts - lmEventScheduleAttendeeCosts
Disabled "Execute LearningManagementReport_ETL" within ExecuteSequence.dtsx (#140865)
Problem
Package "LearningManagementReport_ETL" is being triggered within ExecuteSequence which is not needed since this package is run with it's own SQL Job.
Solution
Disabled "Execute LearningManagementReport_ETL" within ExecuteSequence.dtsx
Implemented Performance Improvements within JobProfiler_ETL (#140865)
Problem
Performance Improvements are required within SSIS Package JobProfiler_ETL due to the growth of system data and DWH Package
Solution
Removed the DELETE and Truncate Steps and replaced it with Update and Inserts for the below Data Sources: - jpAppointments - jpEmploymentHistories - jpJobCompetencies - jpJobProfiles - jpOrganisationalNodes - jpPositionCompetencies - jpReportingLines - jpJobPositions - jpHRProcesses - jpCompetencyLibrary - jpUserCompetencies - jpHRProcessRequestData - jpCompetencyProficiencyLevelMappings - jpSecondaryAppointments - jpHRProcessRequestPivotData - jpUserPermissions - jpJobInherentRequirements - jpJobCompetencyInherentRequirements - jpJobCompetencyInherentRequirementsEvidences 2. Implemented performance improvements within jpReportingLines
Updated C_03549_9999_monGenerateDWHDataIntegrityReport (#125159)
Problem
It returned results for missing data for pdmReviewYears and pdmReviewYearPeopleGroupsSetup which should not be the case.
Solution
Updated script C_03549_99999_monGenerateDWHDataIntegrityReport.sql to not check for "Pilot" ReviewYears data.
Added new Multiple Contract fields within pdmContracts (#142151)
Problem
New Mulitple Contract fields are required within pdmContracts.
Solution
Added new fields AdditionalContractReason, ManagerUsername, ManagerName, ManagerSurname and PrimaryContract within pdmContracts.
Adjustments made within LearningManagementReport_ETL (#142377)
Problem
Adjustments are required within LearningManagementReport_ETL.dtsx.
Solution
Added more subjects names to check for Promotion Status calculation within TermMarks.
Added extra manual updates within "Manually Update Student Records within Staging Table for WFA".
Added NullIF within Insert StudentSubject_Staging_V9 to avoid any divide by zero error.
Updated Manual update steps for WFA 2025 accordingly.
Content Management
Implemented correction on signing of document update (# 135989)
Problem
When the user returns to the Document list tab, the Archive Icon and Action Required are not immediately updated. Only after the page is refreshed, are these updated.
Solution
Add change to return data back to the notification through message so that page can update the row without page reload/refresh.
Selected banner/avatar was creating duplicate in selection list (#141439)
Problem
When selecting and saving a banner/avatar, a duplicate of the image is placed into the list of banners/avatars to select from.
Solution
Removed the logic that saved the current banner/avatar into the element that is meant for newly uploaded banners/avatars.
Notifications
Resolved new chat button position being calculated (# 137794)
Problem
When there is no discussions the modal footer becomes the body, and stays the footer should there be discussions, because of this the new button container is being positioned incorrectly and needs to be adjusted.
Solution
Add change to render within the correct container and position to be adjustable on different screen sizes.
Resolved Template propagation (#138284)
Problem
When a template gets propagated the first time the propagation field is set to false.
Solution
Correct the initial constructor to allow for the propagation field to create with.
Translations
Resolved translation focus after search (#139399)
Problem
When typing in global search, once the debounce timeout occurs it refreshes the content based on search results, once reloaded it focus the first input which causes where a users is busy typing but next part they are typing in the input.
Solution
Added correction to the global search script to not focus to first input should the input have a containing value.
Identity and Authorisation
Resolved placeholder values not being replaced on inserted values (#142643)
Problem
When the job profile disclaimer loads it needs to replace the inserted values.
Solution
Add change to replace based on input.
User registration corrected styling and dark text (#142670)
Problem
Custom label and select 2 which does not default to bootstrap 5 styling on select 2, and dark text colour missing
Solution
Correct the styling for select 2 component, and then add missing dark themes.
Resolved logic factor for either Id Number of Passport as username (#142499)
Problem
Logic factor needed on required field as well as it needs a specific setting case.
Solution
Correct the logic split out to be used in both cases.
Implemented ID Number or Passport as username when set as username (#142499)
Problem
Spec business case not implemented.
Solution
Add change where when an id number is set to be used as a username and passport is set as visible, do a check to use passport as username and overwrite/bypass the id number validation.
Resolved user registration error (#142118)
Problem
After a user is registered, and redirected to the login screen a check is done to see if there is any disclaimers, now within the job profile check, it needs to see if there is a disclaimer for the appointment, but at that time the user has not been created yet which throws an error instead of returning null as the code applies.
Solution
Corrected default null check
Missing helper text (#142324)
Problem
Missing helper text for location in org.
Solution
Implemented helper text.
Resolved JobProfiler selection disable submit when no disclaimer is loaded (#142493)
Problem
The check exists before the new job profile disclaimer is loaded, so once there is no disclaimer the submit is still disabled.
Solution
Corrected method to only get called afterwards, and corrected to call valid email method
Resolved theme settings for dark not being taken into account (#139455)
Problem
Theme settings are being retrieved based on rulesetId on reset password, which does not take into effect the theme setup.
Solution
Correct call to change and make use of rulesetcode and themekey.
Event Scheduling
Clear local people groups when changing who can book type to everyone (#142055)
Problem
Who Can Book" page does not clear content when moving between show on Calendar Options.
Solution
Clear local people groups when changing who can book type to everyone.
Bug fixes and quality of life improvements (#141360)
Problem
Admin was able to add more than the max allowed attendees on the Attendees page.
Solution
Add domain error which displays when an admin tries to add more attendees than what is allowed.
Display the max number on the attendee's tab when adding attendees.
Updated the axios error interceptor to display error messages if available and fallback to TRANSLATED global error message.
Bug fixes and quality of life improvements (#142042)
Problem
Load more displayed on the attendees page even if there are not more items available to load.
Solution
Ensure that the load more button only displays when more data is available.
Bug fixes and quality of life improvements (#142050)
Problem
Do not show the Change Confirmation Modal if no changes were made on the page.
Solution
Ensure that the Change Confirmation Modal only displays if there were changes made.
Bug fixes and quality of life improvements (#142052)
Problem
The loading Indicator does not appear.
Solution
Implement Loading indicator to pages when Data is not yet loaded.
Bug fixes and quality of life improvements (#142054)
Problem
The system displays the Search Field end-to-end.
Solution
Reduce the search field length on the Pop-up modal.
Bug fixes and quality of life improvements (#142063)
Problem
The system displays an oval image on the Change Confirmation Modal.
Solution
Ensure that the avatar does not warp but is perfectly round.
Bug fixes and quality of life improvements (#142092)
Problem
"Copy Event" creates a Duplicate event without saving any changes.
Solution
Add a confirmation modal before copying the event.
Bug fixes and quality of life improvements (#142093)
Problem
Sessions date from a copied event issue reset after changing.
Solution
Do not sort the session dates as this resulted in the items "jumping" after editing the date.
Bug fixes and quality of life improvements (#142094)
Problem
Copied Event always shows as "Full" on the Calendar.
Solution
When copying an event, do not copy the attendees too.
Bug fixes and quality of life improvements (#142095)
Problem
"Save & Set all unmarked Attended" does not work as expected.
Solution
Ensure that "Save & Set all unmarked Attended" actually marks unmarked records as attended.
Exports
Resolved export link not working (#139625)
Problem
PathBase appsetting invalid and does not exist,
Solution
Make correction to use new service to calculate the mvc base path with extension for export.
System Access
Resolved unfound package and scripts not being used (#142540)
Problem
Package was added for the feedback but later another package was used, while previous package was not removed Package reference for query which is not available and already references the min.js file.
Solution
Remove the package and references.
People
Registration emails not being received by Administrator (#142533)
Problem
After registering a new user as a People Management Administrator with the Manage Registration Access Request permission active, as well as having Enable registration approval toggled on, the admin user does not receive an email with the Registration Requests after registrations or even after waiting for the 2-hour schedule as it is set up
Solution
Remove required email check in user registration emails + exclude UserRegistration permission by default for all admin users
Version 9.1.200 (15 December 2025)
Identity and Authorisation
Styling for registration text area (#142116)
Problem
Within identity, the text area does not have a border, as other inputs are generated
Solution
Add a change to add the border
Dark heading text is not being used in Password reset (#139455)
Problem
When using dark heading text, the theme in identity is being retrieved on reset password with the default theme, which results in the incorrect theme being retrieved for settings
Solution
Add a check to include the default theme to retrieve the correct theme
Resolved user not being deleted in identity (#139779)
Problem
When a user is hard deleted within the account, a request is sent to other services, and inside the identity user is not deleted
Solution
Correct the SQL query to delete the correct user
Performance Management
Employee Progress Dashboard not showing (#142417)
Problem
In PM, the employee progress dashboard was not showing.
Solution
Pass the correct variable to the EmployeeDashboardProgress element.
Reporting Lines not updated (#141221)
Problem
When a user's performance manager reporting line is removed, the contract can still be seen under the manager's subordinate view
Solution
Correct the event to also send an update once a reporting line is deleted
Visually impaired improvements (#138423)
Problem
Performance Management was not visually impaired-friendly.
Solution
Added keyboard navigation and improved the text that a screen reader will read
Fix misaligned dashboard gauges (#141023)
Problem
At times, the dashboard gauges in the overall summary section get misaligned.
Solution
Removed the Eye icon from the check-ins and survey dials and aligned with the agreement standard, which shows the tooltip to "click to view".
Removing that solved a lot of the misalignment issues. Additional styling changes to get dials aligned as close as possible.
Disable the Send / Approve button after click and resolve the issue where the QA score is also captured incorrectly on the Moderator save (#141061)
Problem
When clicking the confirmation button on the moderation modal on slow connections user could potentially click the button again, causing duplicate moderation submissions.
QA score is incorrectly captured when the moderator does a direct send to qa, causing the QA score to be shown prematurely
The overall final score is the same as the moderated score after the moderation is approved
Solution
Disable the confirmation button after clicked.
Don't save the QA score if only the moderator is sending it to QA.
Fix the moderated score showing as final after moderation approval
Disable the Create Additional Agreement button after clicking and add a loading indicator (#140958)
Problem
On a slow connection, after clicking on create additional agreement it can take a couple of seconds to close the modal, presenting the opportunity for the user to click create again and add multiple additional agreements.
Solution
Disable the create button on click and add a loading indicator to the Ajax post.
Fix issue where Review Setup selection is not shown, and it defaults to the first assigned setup (#140461)
Problem
When a user is assigned to more than 1 review setup and has not yet had a contract, it must display the option to pick the review setup on which to create the contract. It does not do this and, by default, selects the first review setup available.
Solution
Ensure that when the chosen review setup to use a contract does not exist that it does not set the selected review setup and allows the user to pick the initial review setup.
Also made a change to only fetch the additional agreement modal data when the modal is opened.
People Management
Location Name in API (#142336)
Problem
The incorrect value is used to populate the location name
Solution
Corrected the value
Unnecessary permissions on the list of rulesets (#141953)
Problem
Some users who have the role permission to transfer users to a ruleset get an error when opening the transfer modal.
Solution
Remove unnecessary permissions on list rulesets for the tenant call.
Copy Reporting Lines tooltip is missing, and the copy button is missing on the summary page (#142243 and #142313)
Problem
Copy Reporting Lines tooltip displays incorrectly, and the copy button is missing on the summary page
Solution
Fixed Copy Reporting Lines tooltip displays incorrectly, and the copy button is missing on the summary page
Add domain error for existing user on other ruleset, apply styling fix for Firefox on date validator text, add excludeInactiveOrgnodes param to exclude inactive org nodes from ListOrgNodesExtended (#142177, #142156, #142150 and #141944)
Problem
Validator message styling for date pickers is not consistent between Chrome and Firefox.
Able to select unpublished org nodes to transfer to Long .net error when trying to transfer person Select2 has a clear button whose styling is incorrect
Solution
Add a domain error for the existing user on the other ruleset.
Apply styling fix for Firefox on the date validator text.
Add the excludeInactiveOrgnodes param to exclude inactive org nodes from ListOrgNodesExtended.
Remove the clear button for the select2 position dropdown. Not needed as only one should be selected.
Add Reporting lines to the appointment screen and the ability to copy and paste reporting lines (#133372)
Problem
Need to add the ability to add Reporting lines to the appointment screen, and then, in general, the ability to copy and paste reporting lines.
Solution
Added the ability to add Reporting lines to the appointment screen, and then, in general, the ability to copy and paste reporting lines.
Resolved load more, throwing an error (#141070)
Problem
When User Roles are being viewed, and load more is clicked, it throws an error as the load more URL does not pass the correct params through, as the initial load
Solution
Corrected parameters that needed to be passed through for loading more
Resolve validator styling on transfer ruleset modal, fix permissions checks (#141941)
Problem
Can open transfer modal on certain users, styling inconsistencies between validator labels.
Solution
Resolve validator styling on transfer ruleset modal, fix permissions checks
Add Settings to Control which People Management Tabs and Profile Preview Versions to Show (#139940)
Problem
Need to Add Settings to Control which People Management Tabs and Profile Preview Versions to Show
Solution
Add Settings to Control which People Management Tabs and Profile Preview Versions to Show
Job Management
Positions not loaded for Job Profile (#140550)
Problem
When a user selects filled positions from a job profile, a modal opens with an empty list of position table data
Solution
Call the needed endpoint to populate the datatable of positions
Resolved propagation script for master data on existing rulesets (#141811)
Problem
Master data not created for existing rulesets
Solution
Add a script to add the master data to all rulesets where the records do not exist yet
Data Warehouse
Adjustments within LearningManagementReport_ETL (#137804)
Problem
The promotion status did not calculate correctly due to subject names that have changed recently, which can make it inaccurate for TermResults
Some averages did not calculate correctly for TermResults
Rounding issue occurs for the score field within StudentSubjects when the score is updated with either the Moderated- or the Calculation Score
Solution
Resolved issues with Promotion Status calculation step for TermResults
Resolved the average calculation for TermResults
Resolved the Rounding issue for the score field within StudentSubjects by adding a round function
Added new field "FailedReason" within TermResults
Adjustments made within lmStudentSubjects (#137804)
Problem
Fields YearID, GradeID and CycleID are required within lmStudentSubjects
Adjustments are required within the lmStudentSubjects
There are cases where duplicates return within the lmTermResults
Solution
Added new fields YearID, GradeID and CycleID within lmStudentSubjects
Added a step to update Score field to the latest Mark Score if it is either Calculated or Moderated Mark
Resolved duplicate issue within lmTermResults
Added new datasource lmReportCards within LearningManagementReport_ETL (#137804)
Problem
A new datasource, lmReportCards, is required within the data warehouse
Solution
Added new datasource lmReportCards within LearningManagementReport_ETL
Implemented Performance Improvements within PeopleManagement_ETL (#140865)
Problem
Performance Improvements are required within the SSIS Package PeopleManagement_ETL due to the growth of system data and the DWH Package
Solution
Removed the DELETE and Truncate Steps and replaced them with Update and Inserts for the below Data Sources: - accUsers - accKudos - accDisciplinaryActions - accUserLogins - accUserAssets - accUserFiles
Set the User Age update step to only run/update at midnight
Set accUserLoginStats to only run at midnight 4. Updated FullRefresh to only refresh data that has been created or edited within the current year, instead of all the historic data
Resolved error on Update Step within LearningManagementReport_ETL.dtsx (#137804)
Problem
The package currently fails due to recent changes made within subject setups
Solution
Resolved error on Step "Update and Delete Records within Staging Table" within LearningManagementReport
Imports
Sync Empty V9 roles to V8 (#136370)
Problem
If all of a user's V9 roles are removed, the permission changes are not synced to V8
Solution
Remove all V8 roles which were mapped to V9 roles when all roles are removed from a V9 user
Add missing Dev configs
Resolved multiple file downloads (#138132)
Problem
When a user has multiple tabs open, and a request is sent to download the file, it is generated multiple times, as a SignalR message is sent to each tab.
Solution
Add a change to generate an ID value for that tab, which is used to validate on the incoming message before actioning
System Access
Resolved user registration field historical error (#134698)
Problem
A historical bug in the domain object that created duplicate fields per user registration was corrected, but the script was not included to fix the data
Solution
Add a script to remove duplicated fields and take the latest one, and update to user name fields as a default
Version 9.1.199 (15 December 2025)
Ruleset Management
Set base URL when a schema is created during ruleset creation (#137697)
Problem
When a new ruleset is created, or a schema setup request is made, the module setting SETTING_EXTERNALSERVICES_SAAS_APPLICATION_URL is not updated. This caused the assignment document annotation to stop working.
Solution
When the ruleset is created/schema setup requested, send the MVCUrl in appsettings to V8.
Use the value to update the application URL
Confirm that the learning and content management API URLs are also synced to V8 and populated in the appropriate settings.
Add scheduling to the imports on V9 (#136927)
Problem
Unable to control how many times the payroll connector should run per day on a specific ruleset.
Unable to change the schedule of the V8 bulk sync
Unable to disable the V8 bulk sync
Solution
On ruleset management| Integrations | General add simple scheduling
Make the occurrence always in hour intervals, and set the starting time in increments of 5 minutes. Add an optional ending to the field
Add a flag to disable the schedule. When disabled, that type of import will not run on the ruleset
Allow multiple occurrences to be configured for each schedule item, e.g
Occurs every hour between 6h00 and 10h00
Occurs every 6 hours between 11h00 and 24h00
Add two separate schedules under Integration | General
:
Run Payroll connector
Run Bulk Additional Service Imports
Add schedules next to each of the bulk pulls
Ensure the schedules are disabled when the Tenant subscription expires, or the ruleset is disabled
Audit
Move Support backups to central archive V9 (#136527)
Problem
When supporting an alteration to data, the support dev creates a backup of the data either for just the single rulesets or all rulesets within the live DB. This clutters the DB and increase the size unnecessarily.
Solution
Add a new DB V9_Master_Archive.
In this DB, data will be stored as was done in the V8 archive DB. With the DB schema being the name of the DB where the backup comes from and the table name, the concatenation for the DB schema and Table name, e.g [V9_Master_Core].[Account_Users_Description]
Make a copy of the sp_backup table in V8 and add the ruleset ID to the SP
When the ruleset ID is defined, then only backup the data for that ruleset, add the ruleset ID to the archive table name by default, along with a description
Add this SP as a migration in each service
People Management
Streamline V9 to V8 sync (#126727)
Problem
The V9 to V8 sync failing causes users not to be able to log in to the learning portal
Solution
Create a new user import, same as job structure import C_03427_99999_sysImportJobStructure) for only employee information
As a People Management Admin viewing the Appointment History, I want to change the Reason for Ending (#139964)
Problem
Managers previously had no way to edit or correct the termination reason (e.g., Resignation, Termination for Cause) or the last day of service for an employee's appointment after it was terminated, leading to permanent inaccuracies in employee records.
Solution
Updated and added existing and new logic so that managers can now edit the termination details (reason and last service day) for terminated appointments directly when editing the appointment's details.
As a People Management Administrator, I want to have two new Reporting Lines for the Parent/Guardian (#134213)
Business Rules
Two new Reporting Line Type needs to be created
Primary Parent/Guardian
Secondary Parent/Guardian
When logging into the system, the person will only see the people reporting to them in this Reporting Line Type
Reporting lines to be added to V8 and the sync
As a People Management Administrator, I want the same functionality as for the Line Manager reporting line type to apply to the Parent/Guardian reporting line type (#134214)
Business Rules
A standard People Group Role should be created for a parent/guardian on R1
Parent/Guardian People Group Role
This is then propagated to all other Rulesets
When the Parent/Guardian Reporting Line has been selected/filled, the People Group for this reporting line type should be created
The person who is the Parent/Guardian should then be given the Reporting Line Type with the Role in User Permissions | People Admin | Permissions based on Reporting Lines
Remove the ABC Filter and Filtering Search
Roles to be added to V8 and the sync
At the end, this should work like the Line Manager reporting line type.
[People Management][Edit Appointment] Reason for Termination dropdown not saving values (#141429)
Problem
The Reason for Termination dropdown does not save the value that is entered
Solution
Resolved the issue to save
People group refresh, rework and refactor (#139340)
Problem
Another people group change is triggered while people groups are busy refreshing, causing overlap.
The overlapping request, in some cases, does not lead to a refresh of the people group; it is not remembered.
Only on subsequent non-overlapping requests will the changes show on the people group.
When a large people group is refreshed or its items amended, which triggers the refresh, the cache is busted in the beginning, and this leads to a situation where no employees are returned on reports / the front end while the people group materialises, and the cache is restored.
Additionally, because of the PG refresh for an amount of time, the materialised table is empty, and any references to it return no records.
Solution
Implement a queue system to refresh people groups when data is changed.
Grab the latest request and mark the rest in the queue as completed.
Either refresh the ruleset or a specific people group.
Change the logical order of the operations to first do the PG calculation to get the list of users, and only once that is retrieved, bust and restore the PGU cache in sequence to reduce the amount of time that the cached people group is unavailable.
This will mean that when the Refresh Integration Event is triggered, currently the cache is busted beforehand, now change it to not do that, but only raise the refresh event and there only bust the relevant PG cache.
BustAllRulesetPeopleGroupKeysAsync
BustRulesetCacheAsync
BustDatabasePeopleGroupCacheAsync
RefreshPeopleGroupUsersEventConsumer
Modify the Refresh PG Materialisation process to do a delta of the newly added/removed users in the people group and not completely clear the PG table.
Reload personal details registration info per ruleset, Termination reason (#136630)
Problem
Registration info not populated per ruleset, and termination reason not set when transferring the user
Solution
Reload personal details, registration info per ruleset, Termination reason
Imports
Integrations page is blank (#140927)
Problem
AdditionalServiceImportHostedService broke due to a table it requires from a migration, which has not yet been executed, but the time when it executes.
Solution
Ensure AdditionalServiceImportHostedService only executes once the migrations have run
Translations
Translations - Investigate how translations can be implemented on the app (#127238)
Problem
When using the app or other services in V9, import, identity the translations created on V9 cannot be accessed
Solution
Add a gRPC server endpoint in WebMVC with 2 APIs that can be accessed externally
By key accepts the culture, and key requested. The interpolation values can also be applied to render the full key. When not supplied, it is replaced by a blank, as in the system
By namespace accepts the culture and namespace and returns all the translations from the JSON file, with its system overridden when available
In both cases, when the culture is supplied, it attempts to provide the file in that language when available
When not supplied, the user's culture of the user for which the token was generated is used; should they not have one, the default culture is returned
UserId is also available, should translations need to be drawn per user for a standard auth key
Add custom authorisation on the header auth token to ensure a secure connection in the context of MVC
Add an anonymous GRPC endpoint that can be accessed by other services to draw specific translations
Org Structure
As a People Management Administrator, I want to transfer a user, including their training records, from schema 1 to schema 2 (#136630)
Business Rules
Transfer a user from one Ruleset to another Ruleset
Permissions to be set on People Management Administration
Data Warehouse
Duplicate issue within lmTermResults (#112511)
Problem
Duplicates occurred within TermResults due to inserted records within StudentSubjects that do not have the new Grade and Year values
Solution
Resolved duplicate issue within lmTermResults by including the Grade and Year Name for the inserted records
Added new tables for JobInherent data (#138087)
Problem
New Datasources are required for the JobInherent data
Solution
Created DataSource jpJobInherentRequirements
Created DataSource jpJobCompetencyInherentRequirements
Created DataSource jpJobCompetencyInherentRequirementsEvidences
Added new Event Scheduling Tables within LearningManagement_ETL.dtsx (#136864)
Problem
Event Scheduling data is required within the Data Warehouse
Solution
Added Datasource EventSchedules within LearningManagement
Added Datasource EventScheduleAttendees within LearningManagement
Added Datasource EventScheduleSessions within LearningManagement
Added Datasource EventSchedulingCosts within LearningManagement
Added Datasource EventScheduleAttendeeCosts within LearningManagement
Added Joins for new DataSources within UpdateDataDictionary
Added Indexes for new DataSources
Job Management
Post imported the wrong enum type in step (#139779)
Problem
When executing the post-import step, it has a reference ID to a pre-import type
Solution
Correct change to the correct post import step
Resolved no data being shown message (#141428)
Problem
When there is no data in the table, the table is empty without a message
Solution
Add a change to show the message indication on only one view
Hard delete users when job profile appointment fails (#139779)
Problem
When users are imported, and it fails to create an appointment, it causes complications as that user is only created half. But since there are a lot of reasons an appointment can fail, do not rely on the error type for appointment creation
Solution
Retrieve all the users who were used to create an appointment to see if those users have an appointment. If not, send the user IDs to hard delete on the account and then also to other services with their people group user ID attached to re-materialise the data
Ruleset Management
Implement User Registration Phase 1 (#134689)
Business Rules
Added a field to specify what the org location will be when a new user registers
Added a field to specify what the job title will be when a new user completes the registration process
A new option is available to enable a registration reason on the registration page
Added a setting to specify what field on the registration page should be used as the username
Added a setting so that a user’s ID number to be verified on the registration page
Added placeholders to email templates that mask sensitive information
Add an option so that users registering for a specific job have to acknowledge a disclaimer after registration
Added a setting that will allow me to set how long a user will have access before they are automatically terminated
All the new fields to be translatable
Learning Management
Implemented custom stamp to move over to next page (#141344)
Problem
When a custom stamp is selected, it is bound to that page, as per the Syncfusion control limitation, so once the mouse cursor moves over to the next page, the stamp stays on the page where it was initiated
Solution
Implement a new workaround that calculates the target(page) index value, deselects and reselects the stamp to be rendered on the active page
Improving Mark Tracking and Highlighting: Distinguishing Inherited and Manual Changes (#141315)
Problem
It was difficult to tell apart the marks that were inherited and those that were changed manually. This occurred when highlighting, as marks that were only inherited were mistakenly highlighted along with the modified ones. - The way the system tracked changes didn’t consider inherited marks, leading to inconsistencies.
Solution
Added an `inherited` label to the marks. This helped clearly separate inherited marks from those that were changed manually. We also updated how we tracked changes so that it only affected the marks that weren’t inherited.
Improved the highlighting so that inherited marks wouldn’t get highlighted.
Fix the year master data being incorrectly converted when being retrieved, and subject data not being saved (#141224)
Problem
The Year master data is not being serialised correctly within learning management. The subject data is saving the incorrect values.
Solution
Retrieve the year master data from the cache without converting the date converter first, and then convert it to a model that converts the date time. Fix the subject data not using the modal values to save.
Performance Management
Implemented location path in contract view (#141696)
Problem
Add the Org Path to the header of the View/Print report.
Solution
Add a change to view the location of the org path of the user within the contract preview
Implement change to view contract from moderation and see comments (#141696)
Problem
A new change was implemented to view a contract from moderation, but it fails to authorise as the moderator can not be a performance manager
Solution
Add a change to the additional value to the auth based on from modernisation view
New Functionality: Allow Multiple PM Agreements per Year (#134446)
Business Rules
People will now be able to see in which review setup the agreements have been created in
My Agreement in: [ReviewSetupName]
A new button to add additional agreements
A new tab for my additional agreement is available
A manager viewing the team's dashboard can see the team's additional agreement
Add translation resources
All the additional agreement fields need to be available in the Data Warehouse
Include all User Additional Agreements on Moderation
Update the Import Validation and/or Calibration
Include 360 Scores on both the Primary and Additional Performance Agreements
Only Primary Performance Agreements should be used on Career and Succession
Include all User Additional Agreements on Evaluations
Include Additional Agreements on Bulk Actions
The Bulk Actions need to be modified to also cater for the additional agreements.
The following changes need to be made:
Create from template -> As with the import, enforce that only Primary contracts can be created from here.
Delete agreements -> Add icon to indicate Primary / Additional contracts. Allow deletion of both.
Move agreements -> All Additional contracts for the user must be moved along with the primary contract to the new Review Setup
Recalculate Scores -> Should not require any calculation changes, add icons to indicate Primary / Additional contracts. Ensure both can be recalculated
Version 9.1.198.1 (Support Release - 26 November 2025)
Learning Management
Improving Mark Tracking and Highlighting: Distinguishing Inherited and Manual Changes (#141315)
Problem
It was difficult to tell apart the marks that were inherited and those that were changed manually.
This occurred when highlighting, as marks that were only inherited were mistakenly highlighted along with the modified ones.
The way the system tracked changes didn’t consider inherited marks, leading to inconsistencies.
Solution
Added an `inherited` label to the marks. This helped clearly separate inherited marks from those that were changed manually.
We also updated how we tracked changes so that it only affected the marks that weren’t inherited.
Improved the highlighting so that inherited marks wouldn’t get highlighted.
Fix the year master data being incorrectly converted when being retrieved, and subject data not being saved (#141224)
Problem
The Year master data is not being serialised correctly within learning management. The subject data is saving the incorrect values.
Solution
Retrieve the year master data from the cache without converting the date converter first, and then convert it to a model that converts the date time.
Fix the subject data not using the modal values to save.
Performance Management
Moderation request on View/Print (#141696)
Issue 1:
Problem
Add the Org Path to the header of the View/Print report
Solution
Add a change to view the location of the org path of the user within the contract preview
Issue 2:
Problem
A new change was implemented to view a contract from moderation, but it fails to authorise as the moderator can not be a performance manager
Solution
Add a change to the additional value to auth based on from modernisation view
Issue 3:
Problem
Add the moderator and quality assurer moderation comments field to the Print/View report
Solution
Implement a dropdown menu to view the contract.
Include moderation and quality comments on the preview contract
People Management
Fixed Professional Membership not showing when managing an employee (#141761)
Problem
When Professional Membership was the only Training and Development permission set as View or Edit, it did not show when viewing an employee profile.
Solution
Added Professional Membership to a permission check.
Enforce "View" rights for Training & Development tab and sub tabs (#138050)
Problem
"View" rights were not enforced for the Training & Development tab and subtabs when viewing a user's profile.
Solution
Added checks to see if the person viewing the profile has the correct rights from their People Group to be able to view the tabs and subtabs
Version 9.1.198 (24 November 2025)
Data Warehouse
Adjusted field CalculatedMarks within lmStudentSubjects (#140444)
Problem
The DWH package field is due to a conversion error with the field CalculatedMarks
Solution
Updated CalculatedMark field data type from DECIMAL(3,1) to DECIMAL(8,3) to support larger values with more precision
Learning Management
Fix Mark Inheritance, Duplication, and Display Logic for Consistent Front-End Behaviour (#141315 & #141316)
Problems
Inherited marks that are not overridden currently appear blue, but they should retain a white background for consistency.
Inheritance causes duplication of marks, which leads to display issues on the front-end.
Currently, all marks with a value of 0 are displayed as yellow. Instead, yellow should be used only for non-captured marks.
Solutions
Modified the backend to include an overridden field and added a condition to preserve the existing background colour.
Adjusted the backend to update existing marks rather than insert duplicates when they already exist.
Refined front-end conditions so that only marks without an ID are displayed in yellow.
Version 9.1.197 (24 November 2025)
Performance Management
Moderation breaks when QA is required
Problem
When the user only has the PM admin role for the moderations, the moderation page breaks due to requiring the user to also have People Admin role when QA is required.
Solution
Allow the check for both PM and People admin roles
Sanitisation of review items names (#139392)
Problem
Adding an "&" to the text input of the review items and saving encodes it as "&". Whenever saving an reloading, another "amp:" is added.
Solution
Added sanitisation tag helpers to input and textbox of review item name. image Tested with various special characters. Input also blocks escaping character like "&" as you type.
Check-in dial not being able to be clicked (#140857)
Problem
To be able to click the check-in dial some conditions must be met, whereas one of them is that the ratings phase should have been started, but should the ignore phase date be active it does not validate this check hence why the dial can not be clicked
Solution
Add an either or check to include should the ignore ratings phase be active
Ruleset Management
Resolved notification email url generation check
Problem
When no path specified it uses the correct fallback but when in code it adds new url path with added route
Solution
Before returning add an additional check to trim any leading '/'
Resolved theme service MVC route
Problem
Route incorrectly calculated
Solution
Resolve fix for app
Event Scheduling
Resolved Base URL for custom domain
Problem
Incorrect base url configuration key used for custom domain on learning management
Solution
Corrected base url
Cost Structure not pulling through after running Training Intervention Cost Import (#139814)
Problem
Cost Structure not pulling through after running Training Intervention Cost Import
Solution
This happened due to an entity framework error which occurred because entities already tracked were again marked to be tracked. Simplified and improved import logic to not manually track cost description entities
The newly added cost on v9 page wipes out the v8 cost on from the Training Intervention (#140232)
Problem
The newly added cost on v9 page wipes out the v8 cost on from the Training Intervention
Solution
Do no remove costs when deselecting cost descriptions when adding new cost descriptions. Costs can now only be added via the cost description modal and removed (with confirmation) from the table displaying the costs.
Booking Requests do not show up on HR Processes tab (#141033)
Problem
Booking Requests do not show up on HR Processes tab
Solution
This happened when updating the status of the booking on the admin page. Ensure that hr process requests are also submitted from the admin page when updating the booking status of an attendee.
Show loading indicator for export (#141057)
Problem
There is no loading indicator when exporting files
Solution
Implement change to show loading indicator when doing an export
Decline reason not being populated (#140387)
Problem
Decline reason not being replaced on email
Solution
Corrected templates to have correct placeholders
Email calendar attachment not sending out (#139709)
Problem
Recipient code missing for the one request, and type request should not be specified on a invite import as outlook see the request as an accept/decline type
Solution
Correctly add recipient code and fix the request body
Implemented suggestion and empty list (#139872 & #140253)
Problem
When there is no data in the table it is blank
Solution
Add change to show row with wording indicating nothing to show, also add suggestion to swap admin and manager around
Sync notifications when new event is created (#139835)
Problem
When a new event is created notifications are only created when confirmed
Solution
Change to sync notifications when it has been created
Individuals loading people group target audience (#140249)
Problem
When having a people group and target audience load, it will load under attendees when switching over to individuals,
Solution
Add original check to validate and clear before switching as it will reload when opening target audience on people group again
Auto mark attendance check (#139385)
Add new check in fronted to specify the minutes after each session to mark attendance
Syncfusion license error (#139610)
Problem
At seemingly random times on master a syncfusion license error will occur.
Solution
Moved the license registration from App.tsx to Index.tsx to hopefully make it more stable.
Last survey notification not being sent (#140104)
Problem
Event schedule survey links not being sent for the users
Solution
Correct logic to handle per batch of users
Enhancements on the calendar view (#138282, #139847, #139616, #139606)
**139282** Change wording on upcoming events if you are not booked - You are not booked on any events Make the Calendar borders lighter
**139847** Finalised & Cancelled Event not to display on Calendar View
**139616** Show the events in the range that expands. Add the dates as well
**139606** Orange dot when not approved but booked Don't show anything when not booked Display [Pending Approval] in the MyUpcomingEvents at the top Show tooltip when hovering over the event showing the status of the event (not booked, booked, pending approval)
Learning Management
Update marksheet legend definitions (#141310)
Problem
Updates to marksheet legend definitions are required.
Solution
Updated marksheet legend definitions.
Add ruleset to master data year cache retrieval on class subject save validation (#141224)
Problem
The retrieval of year master data for when validation is performed on the class subject save, is not taking into account the ruleset.
Solution
Added ruleset to master data year cache retrieval on class subject save validation
Refactored SQL query to retrieve all previous cycles and marks for class subjects (#140434)
Problem
The system currently relies solely on the previous cycle/term to retrieve the most recent training intervention ID for data transfer. As a result, only the marks from Term/Cycle 4 are used for inheritance.
Solution
We updated the backend query to include all cycles/terms, allowing us to Use the most recent training intervention ID for mark inheritance.
Comments to use 3 columns and wrap the text (#141203)
Problem
The comment options are loading one after the other below one another which is leaving a lot of white space or available screen space un-utilized.
Solution
Changed so comments use 3 columns and then wrap onto the next row
Subject cycle date range validation and subject detail UI values updating (#139581)
Problem
Subject cycle validation is being checked against the currently saved Year date range, instead of the Year value that is being saved on the form.
The subject detail UI values should only update after a successful AJAX call.
The dates were being incorrectly formatted for the subject detail.
Solution
Fixed subject cycle validation to perform date validation range checks against the Year currently being saved on the form.
Ensure the subject detail UI values only update after a successful AJAX call.
Fix date formatting for subject detail.
Created SQL Script that will insert DWH scores into table Marks (#140444)
Problem
The scores within the DWH will need to be imported within LearningManagement.Marks as ModeratedMarks
Solution
Created custom Script to insert DWH Scores within V9_Master_Learningmanagement.LearningManagement.Mark as ModeratedMarks
Support dynamic date formats with Day.js integration (#140434)
Problem
Culture affected date calculations in the backend, preventing the inherit marks button from being available.
Solution
Added backend date format to ensure compatibility with all cultures.
Data Warehouse
Adjustments made within lmStudentSubjects and lmTermResults (#140444)
Problem
The Mark field should be updated with either Calculated- or ModeratedMark if it does exists within StudentSubjects
The Calculated Mark should be set to Blank if it is 0
The new Comment fields should be included within TermResults
Solution
Added step to update Mark field to either Calculated- and ModeratedMark within StudentSubjects
Added Step to set Calculated Mark to blank if it 0 within StudentSubjects
Added the required comment fields within TermResults
Performance Improvement within jpAppointments (#125159)
Problem
Container for jpAppointments currently fetches all the data within the Source DB with each DWH run
Solution
Adjusted Source Query to only fetch data by using ReferenceDate
Added Step to only insert data into DWH table if it does not exists
Added step within PerformanceManagement_ETL.dtsx to remove certain pdm records as per requests (#140774)
Problem
Certain pdm records needs to be removed from the DWH as per requests
Solution
Added step within PerformanceManagement_ETL.dtsx to remove certain pdm records as per requests
Implemented performance improvement for Container pdmReviewYearPeopleGroupsSetup
Added fieds Calculated - and ModeratedMark within lmStudentSubjects (#140444)
Problem
Fields Calculated - and ModeratedMark are required within the Datawarehouse
Solution
Added fields Calculated - and ModeratedMark within lmStudentSubjects
Identity and Authorisations
Implement new custom domain (#138243)
Add new change to allow for custom domains on MVC
Job Management
Align status header column
Problem
Misalignment of columns
Solution
Align the status header column
Resolved wrapping of status text (#140362)
Problem
Width is not defined and some screen resolutions still wrap the text
Solution
Add change to hard define the width size
Master data of incorrect product type (#140350)
Problem
Master data product type incorrect
Solution
Correct the product type for master data item
Display Document max size error message (#140612)
Problem
Max size error for file not being displayed
Solution
Add change to validate size
A global:messageNotification... error appears when uploading a document (#140616)
Problem
After uploading a file it triggers previous handler and does not show correct translation
Solution
Detach handler before attaching new and correct translation
Evidence modal styling issues (#140621)
Problem
Alignment on the table data
Solution
Resolve the class margin that has been added
The "Delete Reason" field caches the previous delete reason (#140623)
Problem
Delete modal content is not being set
Solution
Reset delete modal content after deletion
Remove the "yet" on the "Not yet Set" toggle (#140815)
Solution
Suggestion to change translation and resize status
Position title not being set in modal title (#140556)
Problem
Modal title was not being updated with the position title
Solution
Add change to populate title with position title
People Management
New user sync (#126727)
Problem
The user sync from V9 to V8 runs the full employee import that is inefficient.
Solution
Corrected the field names of the appointment history API call to match the names on V8. Use the new User sync in V8
Fix breadcrumb back arrow no longer displaying (#140853)
Problem
Back arrow no longer displays correctly on breadcrumb navigation.
Solution
Remove condition check preventing arrow display that was intended to solve another problem unsuccessfully.
The address details not saving on the summary (#139878)
Problem
Address details does not save on the summary when that is the only PG permission active to view or edit When Payroll connectors has been configured the connector drop down displays to the manager even though the section is disabled on the PG The logged in user can see the payrol details on their profile summary
Solution
Only check if the section has changed to determine if it can be saved. Only show the payroll dropdown and payroll id to the manager that has view or edit rights on the PG and never to the user
Correct summary page authorisation for inactive and unchanged sections. Corrected data loss between users with view right and admins with edit rights (#139878)
Problem
When the address section is disabled the user receives an unauthorised exception. When the user as data in a section but no view rights the dat is lost when saving data on the summary. The summary page save unchanged data unnecesarily.
Solution
This pull request refactors how permissions and change tracking are handled for user profile summary updates in the People Management module.
The main improvements include fine-grained permission checks for each profile section, tracking which sections have changed, and updating the view model and controller logic to support these features.
This results in more secure and targeted updates, allowing only authorised edits and reducing unnecessary data processing.
Notifications
Communication Portal height (#140695)
Problem
When there are no discussions a class is added to restrict the height, but when a new discussion is to be started that height does not reset
Solution
Add change to remove the restirction
Content Management
Consolidate ContentType enum and change all references to point to centralized enum (#139343)
Problem
There are inconsistencies between the MVC ContentType and ContentManagement ContentType enums leading to incorrect value assignments when the types are sent from MVC to CM.
Solution
Centralise the ContentType enum and update all references. Add migration to force recreation of missing ContentType folders on nextcloud.
Report Builder
Increase people group filter length and add margin between filter and buttons (#140337)
Problem
People group filter styling on ReportBuilder view report page needed some changes.
Solution
Added bottom margin to people group filter and made it span parent container width to allow for longer PG names
Version 9.1.196 (24 November 2025)
Event Scheduling
Notifications Not Being Received (#140104)
Problem
Reminder events were requesting an event schedule ID to calculate, but as this is a schedule, it needs to take all events into consideration
Solution
Add new queries to retrieve the users for reminders, as well as an addition to event cancellations that should be sent to all people for that event once cancelled
The double scroll bar makes it difficult for the user to see the "Book For Myself" button (#140271)
Problem
The double scroll bar makes it difficult for the user to see the "Book For Myself" button
Solution
Add a margin to the button at the bottom and make the button sticky
The Search/Filter criteria takes almost half of the screen (#140251)
Problem
The Search/Filter criteria takes almost half of the screen
Solution
Place the filter area within an accordion, which can be opened and closed
Pin the top Header Menu on the main landing page (#140227)
Problem
Pin the top Header Menu on the main landing page to avoid a long scroll back to the top to switch between views.
Solution
Pin the top Header Menu on the main landing page
Document gets cached on the modal when upload is cancelled (#140224)
Problem
The document gets cached on the modal when the upload is cancelled
Solution
Make sure the document is cleared when the modal is closed
Ellipse Document name after (#140223)
Problem
The system displays the entire document name wrapped, and it shifts the other Columns (Loaded by and Date Uploaded)
Solution
Give the table columns fixed widths and add ellipses with a popover for the document title and name.
Training Provider Import not Importing V8 Options into V9 (#139302)
Problem
The order of items is done by ID, so every new item will always be displayed last
Solution
Add a change to the order by name
Notifications Not Being Received (#140104)
Problem
Notification email data is being retrieved from attendees, hence why no emails are sent out for people group users
Solution
Change to select into the cte table users to be used from
Preview Icon Invisible unless approaching from the Right (#140099)
Problem
The icon row hover class was placed on a column, hence why it was only triggered when on another column
Solution
Change the class to the icon for row hover
Calendar View issues for investigation (#139616)
Problem
Calendar View issues for investigation
Solution
Show the events in the range that expands. Add the dates as well
Job Profiler
+Position button missing (#140445)
Problem
The footer and button shared the same ID for the visibility being toggled
Solution
Corrected the footer ID to toggle correctly
The add modal caches data in all fields after saving (#140351)
Problem
When a row is clicked to be updated, and afterwards clicked new, the previous data is still shown. Script missing from the Employee dashboard
Solution
Clean the data once the new inherent requirement is selected. Include the script on the employee dashboard
Resolved the racing condition on the Job Inherent script
Problem
JavaScript fails on a script call to invoke the inherent requirements due to a race condition, where the other script may not be available yet
Solution
Change to render script first, before, and add a safety fallback call to retry
HR Processes
Add the ability to approve on behalf of in HR processes workflow steps (#140244)
Problem
When the Fallback approver views requests, they cannot see requests where they are also the approver
Solution
Also show requests to the Fallback approver, where they are also the approver
System Access
Implement link to Signfy Learning App (#138249)
Problem
Add a "download" app modal to the frontend, which contains a new setting called "Mobile App Company Key"
Add the new setting under ruleset/management/general
Add translations to the modal.
Only show the "download app" button if the subscription to the mobile app is active, and also the setting Mobile App Company Key has a value.
Solution
Added a new modal which contains 2 buttons, these 2 buttons navigate the user to either the App Store for IOS or the Play Store for Android.
Added translations to ensure users of other languages can read the modal content.
Created a new input element for ruleset management and added it to the microservice infrastructure to be transported to other client services.
Added a new setting, Mobile App Company Key, which is conditionally displayed if the mobile app subscription is active.
People Management
Display option radio button setting does not persist on RS1 (#139699)
Problem
A change was made to allow saving virtual tours without slides, but when opening the virtual tour again, no tour is identified, as the query still expects a slide
Solution
Add a change to the left join to slides
User sync script failing issues (#139630)
Problem
Custom Fields and Marital Dates were not included in the data pull. The pull retrieved data for all user types.
Solution
Added Custom Fields and Marital Dates. Include only system users.
Organisational Unit and Position drop-downs are transparent and therefore overlap the other items in the filter box (#139877)
Problem
When a select and a date picker are beneath each other date picker text is displayed above the select
Solution
Add a change so that the date picker z-index = 0
People group refresh triggers (#136729)
Problem
Users are not always refreshed correctly on the People Group materialised tables. Reviewed locations of user/org/job changes to ensure cache busting & materialisation takes place.
Solution
Changed cache implementation to not do a potential double Refresh PG request. On _BustRulesetCacheAsync_ found that if it is the people group pattern, it also requests the DB cache bust _BustDatabasePeopleGroupCacheAsync_ (refresh materialised tables). However, in some instances, it does this twice. Streamlined the implementation so it only requests the refresh once per bust request. Added cache busting on Job Grade change
Performance Management
Cannot edit a document after uploading it (#139615)
Problem
When a file is edited/changed, then saved, it gives an error: the review file could not be found, as the incorrect ID is being passed down
Solution
Correct the ID value being sent through for update, as the content ID is being used instead of the review file ID
Time out while doing performance reviews (#140297)
Problem
The lock backdrop stays on the page after clicking the Continue button
Solution
Extend the timeout period if the button is clicked, and handle the backdrop accordingly
Removal of 360 participant (#140071)
Problem
The `Allow Revised Score` option in the Review Survey Edit is not updating when saved.
`Include Rating` check box can still be edited when `Allow Revised Score` is off
Solution
Adjusted backend to align with the JSON data sent in the request.
Updated the backend to disable `Include Rating` when `Allow Revised Score` was turned off
Learning Management
Select a Comment in the Primary Language column and have the Secondary Language Comment automatically populated (#138994)
Problem
Need to select a Comment in the Primary Language column and have the Secondary Language Comment automatically populated.
Solution
Added the ability to select a Comment in the Primary Language column and have the Secondary Language Comment automatically populated.
Wrong date stated on Start and End Date After Subject Created (#140239)
Problem
The class subject details aren't being correctly retrieved after a new class subject has been added. Cycle dropdown is small, causing a horizontal scrollbar.
Solution
Retrieve the class subject details after a new class subject has been created. Increase cycle dropdown width.
Remove Red Cell Border and Description from Legend (#140245)
Problem
Need to remove the selected cell from the legend table on the marksheets
Solution
Removed the selected cell from the legend table on the marksheets
Unable to save Marks (#140352)
Problem
Unable to save marks
Solution
Updated backend indexing problem
Dropdown on Create Subject differs from Edit Subject Dropdown (#139218)
Problem
The dropdown list for group classes on the "Edit Subject" and "Add Subject" pages is inconsistent.
Solution
The backend has been updated to ensure the dropdown on the "Add Subject" page matches that of the "Edit Subject" page.
Inherit a Training Intervention’s Score captured on a Previous Cycle to the Active Cycle (#138992)
Introduced the `InheritMarks` functionality to enable inheriting marks from previous cycles to the current cycle.
Key changes include:
Added `InheritMarks` gRPC method in `learning_management.v1.proto`.
Defined Protobuf messages: `InheritMarksRequest`, `InheritMarksResponse`, and `InheritedMark`.
Implemented `GetInheritableMarksAsync` in `LearningManagementQueries` with SQL logic for mark retrieval.
Created `InheritMarksCommand` and `InheritMarksCommandHandler` for business logic.
Exposed `InheritMarks` via HTTP API in `MarkController`.
Enhanced `Marksheet` UI with a button to trigger mark inheritance.
Added DTOs for HTTP request/response handling.
Updated localisation files with translations for `InheritMarks`.
Refactored `serverUrls.ts` to include `inheritMarksUrl`
Capture primary and secondary language comments on my marksheet (#138989)
Problem
Need to add secondary language comments on the marksheet.
Solution
Added secondary language comments on my marksheet.
Advanced Filter Removed from Subject Page if Navigated to Report Card Tab and then Back to Subject (#139867)
Problem
When you first load Product Setup for Learning Management and land on the Subject Setup page, the advanced filter is present. Then, if you navigate to the Report Card Tab, the advanced filter is removed as intended, but if you navigate back to the Subject Tab, then the Advanced Filter remains removed.
Solution
Ensure the advanced filter only shows on the subjects tab.
Data Warehouse
Performance Agreement Status Report - Template Names (#140246)
Problem
The TemplateName field was not populated within ContractPeriods if it was copied by using a previous or another template
Solution
Added a step within ContractPeriods to update the TemplateName field
Add the additional Subject fields that need to be available in the Data Warehouse (#135725 & #139040)
Problem
The package failed due to Comments not existing anymore within UserClassSubjectComments
New field MarkType needs to be added within lmStudentSubjects
Solution
Removed the Comments field and replaced it with newly added fields ClassSubjectPrimaryComment and ClassSubjectSecondaryComment within lmStudentSubjects
Added new field MarkType within lmStudentSubjects
Notifications
Search is executed before I have finished typing the search text in the box (#140034)
Problem
When searching in the global search, it triggers a page refresh
Solution
Remove JavaScript that triggers reload. Bind table to global search, confirmed all notification tab data gets reloaded correctly without page postback
Master Data
Enums displayed instead of proper names (#140241)
Problem
The Type is returned as NULL on enum values even if using the type full name, as the enum type can be from a different assembly, no translations are being shown on enum type fields within master data
Solution
Add a new change to determine the Enum Type over the assemblies of the application, to retrieve the Type and cast to get an enum value to retrieve the display name for translation display
Add a field to the Comments Master Data (#138993)
Problem
Need to add a secondary comment field to the Comments master data
Solution
Added secondary comment field to Comments master data
Data Warehouse
Daily Server Monitoring Checks (#125159)
Problem
The DWH Package failed with Full Refresh due to the Log File size
Solution
Added step to Shrink Log file size for V9_Datawarehouse with Full Refresh within ExecuteSequence SSIS Package
Version 9.1.195 (24 November 2025)
Learning Management
Add a legend on the marksheet that explains the meaning of specific cell formats and values (#138990)
Issue 1
Problem
Needed to decrease the padding and font size on the legend table.
Solution
Decreased padding and font size on legend table.
Issue 2
Problem
Need to add a legend on the marksheet.
Solution
Added legend on the marksheet.
Dropdown Search and Remove are not Functional (#139979)
Problem
When using any of the dropdowns, there is a search bar and a 'Remove All Items' button - neither of which is working, unfortunately. They should be made to fulfil their functions or removed to prevent confusion
Solution
Fixed the search bar, and removed the 'remove all items button'
The cells where no marks are entered are to be highlighted by default (#138991)
Problem
The cells where no marks are entered need to be highlighted by default, and the background should be returned to grey automatically if the value is changed to anything other than 0 or 0.00.
Solution
Added highlighting of cells when marks are 0.
Primary & Secondary Language Labels Missing (#139684)
Problem
Column widths need further adjusting
Solution
Resized the width of columns and reduced the padding on the report cards table
When the option "All" is selected for Grade and saved, all existing Grade Records are overwritten with ALL (#139863)
Problem
When the option "All" is selected for Grade and saved, all existing Grade Records are overwritten with ALL
Grade Field value copied when the Record is copied, when it shouldn't
Unable to save a Record due to a missing issue date
Solution
Fixed when the option "All" is selected for Grade and saved, all existing Grade Records are overwritten with ALL
Fixed Grade Field value copied when the Record is copied, when it shouldn't
Fixed unable to save a record due to a missing issue date value
Event Scheduling
Export Attendance Registers error when exporting (#139458)
Problem
Data being exported with an enum value field
Solution
Add a change to map back to the enum display translation
NaN on event field after selecting a date (#139609)
Problem
Auto selections occur from data selections, but should it is null, a NaN is showcased
Solution
Add a placeholder to the select component and update the logic with a parameter
Free-text field gets marked as checked after creating a new event (#139966)
Problem
When only clicking free text off and there is still free text, and saves, when reloaded, the free text still comes back, same goes for the provider being selected
Solution
Add a change to set free text to undefined.
The system does not have a validation check for the Coordinator field when moving an Event from Draft to Confirmed Status (#139874)
Problem
The system does not have a validation check for the Coordinator field when moving an Event from Draft to Confirmed Status
Solution
Force validation on the coordinator when the status of the event is updated (only when the user does not have the coordinator role)
Syncfusion Essential Studio License issue (#139610)
Problem
Syncfusion license error displays randomly at times on pages on REACT, which makes use of Syncfusion components.
Solution
This happens when the license is not yet loaded and registered, but the components are displayed. Delay using components until the Syncfusion license is registered. Also, rather than store licenses in local storage instead of session storage, which should result in the licenses being retrieved from the server less
When importing attendees as Booked, QR Codes are not being sent (#139687)
Problem
On attendees being imported, service-to-service can not be authenticated with claims, hence why claims fail
Solution
Pass check to service as implemented in other import handlers
Booking Request for Person - People Group Attendees Should Trigger a Notification (#139711)
Problem
When a people group is selected, the people group does not receive an email
Solution
Add a change to select user IDs, to still send email
User details not appearing (#139366)
Problem
When an error occurs while scanning qr code, the error should display on the front-end, but it is not caught to get the error
Solution
Change to move logic into a try block to catch errors for the response message
Performance Management
Calibrated Value Survey score displayed with a lot of zeroes (#139403)
Problem
Calibrated score shows on the front with a lot of added .00000 at the end
Solution
Change to round to 2 decimals
Calculations are not correct when mapping is in descending order (#138717)
Problem
Range index could never be found as the operation was not <=
Solution
Correct the operation
Align rating headings with the rating cards (#139373)
Problem
The header was not aligned with the card below
Solution
Add the same margin width as the card to match and align
Master Data
Error when "Type" field is not required (#139706)
Problem
On the Master Data Setup, a column of type Enum can be set to be not required
This then allows the user not to specify a value when adding a new Master Data item; however, this then breaks functionality since the value for this record is saved as 0 and does not map to an enum (if the enum starts at 1), or always to the first item (if the enum starts at 0)
Solution
Don't show the required and visible checkboxes to enforce that the field is required and must always have a value captured.
Imports
MultiV8 Userimport Investigation and corrections (#139670)
Issue 1
Problem
Valid emails are seen as invalid and rejected in the import
Solution
Updated EmailHelper to support RFC 6532 (EAI) and internationalised domain names (IDN), allowing Unicode characters in both local and domain parts. Improved regex patterns for local and domain validation, and expanded unit tests to cover a wider range of valid and invalid email formats, including Unicode, apostrophes, and domain literals.
Issue 2
Problem
Inactive tenants' rulesets are still processed even though the tenant is disabled.
Solution
Include a join on active tenants when rulesets are selected to process
Theme Management
Make the text indicating minimum password length white (#139045)
Problem
The text showing the minimum length for a password was always the same colour, even it the theme specified differently.
Solution
Made the text colour theme dependent.
People Management
Manage Person card shows quickly when clicking on Direct Reportees (#137833)
Problem
When clicking View Subordinates, the summary page is opened before redirection
Solution
This pull request makes a small but important improvement to the `UserCard` component by ensuring that click events do not bubble up to parent elements. This helps prevent unintended side effects when the user interacts with the card or its buttons. - Added `e.stopPropagation()` to the click handlers in `UserCard` to prevent click events from propagating to parent components.
Error when landing on menu item which was changed from 'Only show ruleset specific' to 'Only show default' (#139704)
Problem
The base filter of virtual tours did not exclude deleted tours and therefore picked the wrong one to try and display
Solution
Add a deletion check to ensure the correct one gets calculated
Add a new subject to the subject list and link it to a year, grade, alias, and colour (#135199)
Problem
The delete confirmation function on multiple administration pages, which does not require a reason from the user, is not working.
Solution
The backend logic handler has been fixed to ensure that modals without a user reason still function properly.
'Virtual Tour already exists' error shown when copying a virtual tour after the previous one was deleted (#137845)
Problem
Copy from default is validated and checked if a tour exists, and prevents copying, but if all slides are deleted copy is blocked
Solution
Move change to allow copying if no active slides, even if a tour exists
Data Warehouse
All the additional Subject fields need to be available in the Data Warehouse (#135725)
Problem
Additional Subject fields need to be added within the Data Warehouse
Solution
Added fields YearName, YearStartDate, YearEndDate, GradeName, GradeDescription, GradePrimaryLanguageAlias, GradeSecondaryLanguageAlias, ClassSubjectsPrimaryLanguageAlias, ClassSubjectsSecondaryLanguageAlias, ReportCardPrincipalCommentPrimaryLanguage, ReportCardPrincipalCommentSecondaryLanguage, ReportCardDeputyPrincipalCommentPrimaryLanguage, ReportCardDeputyPrincipalCommentSecondaryLanguage within lmStudentSubjects - Added fields Grade and Year within lmTermMarks
Join the People and Learning Management Datasources (#138311)
Problem
Email and MobileNumber details of the Teachers are required within StudentSubjects
Solution
Added Email and MobileNumber details for Teachers within lmStudentSubjects
Identity and Authorisation
Support Users Superceding Impersonated User when Original User's Actions are Logged in Audit Trail (#136700)
Problem
When a user has support enabled, they have a user claim as a support email. Now, when the identity claim result is created and sent back, a check is done for this claim and within db entity, changes edited user is overwritten if there is a support email claim present.
Solution
Add an Item context value that, when the normal login flow is taken, to not readd the support email claim
Report Builder
Resolved the curl file with null not populated
Problem
When generating a curl file, the people group can be null, but it does not generate null
Solution
Correct code to default to null as other fields
Permission (#136411)
Problem
A check exists to update the show people group if the source allows it, but another update overwrites this field as it defaults to false, should no value be provided
Solution
Add a change to make UI update pass in a null bool and check within the domain to update or not
Version 9.1.194.1 (Support Release - 13 November 2025)
Performance Management
Time out while doing performance reviews (#140297)
Problem
The lock backdrop stays on the page after clicking the Continue button; contract locking is not working properly
Solution
Extend the timeout period if the button is clicked, and handle the backdrop accordingly
Imports
MultiV8 Userimport Investigation and corrections (#139670)
Issue 1
Problem
Valid emails are seen as invalid and rejected in the import
Solution
Updated EmailHelper to support RFC 6532 (EAI) and internationalised domain names (IDN), allowing Unicode characters in both local and domain parts. Improved regex patterns for local and domain validation, and expanded unit tests to cover a wider range of valid and invalid email formats, including Unicode, apostrophes, and domain literals.
Issue 2
Problem
Inactive tenants' rulesets are still processed even though the tenant is disabled
Solution
Include a join on active tenants when rulesets are selected to process
People Management
Add a new subject to the subject list and link it to a year, grade, alias, and colour (#135199)
Problem
The delete confirmation function on multiple administration pages, which does not require a reason from the user, is not working.
Solution
The backend logic handler has been fixed to ensure that modals without a user reason still function properly.
Version 9.1.194 (4 November 2025)
Organisational Structure
When viewing the linked positions, and you click on “ALL”, it only seems to show filled positions (#137435)
Problem
Org was not clickable to view positions linked to org after the styling changes
Solution
Ensure that the org level is still clickable so that the positions for that org level can be viewed
Translations
Translation not mapped to the message indicating password requirements (#139039)
Problem
Some of the translations for IdentityErrors are displaying the code/key instead of the actual message.
Solution
Set the localizer to use the description/message instead of the code. Also fixed an issue where the wrong error was being shown.
Job Management
Incorrect Line Manager on Employee Profiles (#139500)
Problem
An incorrect join was made from the reporting line ID instead of the user ID, as well as a missing Reporting line type
Solution
Add change to include reporting line type as well as correct join
When viewing the linked positions, and you click on “ALL”, it only seems to show filled positions (#137435)
Problem
When selecting Vacant positions, the position details are displayed, but once under ALL, the position is displayed with the user in that position reason being that the appointment has ended, and hence why it is vacant, but under all, it shows the user details still
Solution
Update the logic check to include check to also not show user details when the end date has been reached
Performance Management
Unable to import templates when VB and LB sections are enabled (#137921)
Problem
Front-end logic check was made to allow VB and LB section items on import
Solution
Remove and correct section items
People Management
V9 We're sorry, screen when updating Reporting Lines (#139393)
Problem
After appointing a person and editing the reporting lines, the user receives an unauthenticated error due to the people group check on the edit page. The default language error occurs repeatedly and fails silently. Error when executing service method \u0027GetRulesetDefaultLanguageAnonymous\u0027.","Exception":"System.InvalidOperationException: Sequence contains no elements\n
Solution
Introduces TempData["ByPassUserActiveInPeopleGroupValidationCheck"] = true before redirects in PeopleController to bypass user active group validation checks. Also updates RulesetQueries to return a default language if none is found, improving robustness.
Version 9.1.193 (4 November 2025)
Imports
Staging process speed for large imports (#138277 & #138471)
Problem
The materialisation during the import is inconsistent overall in the service Error due to concurrency in identity when creating users.
Solution
Replaces BatchUsersEventConsumer with BulkMaterialiseUsersEventConsumer across multiple services, updating integration event contracts and related logic. Adds ListMaterialisedUsersAnonymous gRPC streaming endpoint and supporting proto definitions. Implements extended user materialisation queries and refactors import and identity user creation logic for improved bulk operations. Removes obsolete consumers and updates service registrations accordingly.
User data import, which was completed with errors, does not have entries in the error log (#137384)
Problem
Change implemented in V8 to sync errors and transactions back to V9, but the V9 transaction does not include the message
Solution
Include a message property to be passed down, not to default to null, but to populate
People Management
Styling Changes (#139280)
Remove padding on the left of the tree view
The screen that is split in two - make the tree view section larger - at least 40%
On the right table, make the termination date column smaller.
Perhaps move the job title underneath the position title and only display when they differ from one another
Tree view, where it says "10 People", would rather have an icon? Display the entire section with icons, and when hovering, display it as it is now.
Add space between the Org name and the left bracket currently: "Org Level(10...)"
The main idea is to save space on the tree view
Add padding between icon and word (#138778)
Problem
There is no margin between the icon and text on the button link slider on the Add/Edit People tab of the People Management tab.
Solution
Added a small margin between the icon and text in the button link slider component (should now be fixed in all future occurrences of the ButtonLinkSlider component.
Performance Management
Sanitise Period name when configuring phase dates (#137977)
Problem
Text is showing encoded string values
Solution
Make use of the sanitise text helper to correct text
Calculations are not correct when mapping is in descending order (#138717)
Problem
When die values are identified in a reverse order, an operation was missed to validate an exact value, as well as when a 0 exists with an excluded rating, an index could not be determined because the null scores are converted to 0 as well, which is selected
Solution
Implement a change to correct the operation, as well as ensure the score is not null to exclude the excluded ratings from the index being found on the score
Auto-copy the objectives setting is not working as expected (#137438)
Problem
The auto-copy does not function as expected. When auto-copying, it must only copy the contract state (approved / in progess) if the contract is within the same year when being auto-copied. It should not auto-copy from the previous year, nor can it find the immediate preceding review period's contract
Solution
Changed functionality to indicate when it should copy the contract state. Added a new helper icon and detail to the settings page to detail how the setting works.
Unable to import templates when VB and LB sections are enabled (#137921)
Problem
When importing templates and a weight is entered with a decimal separator, it is thrown if not in the correct culture separator
Solution
Add a change to do Invariant as the other validation checks
Dashboards
[More Insights][Span of Control] Reporting lines on levels (#138469)
Problem
The treeview for the span of control was displaying terminated/inactive subordinates. The job title pill for each user disappeared after opening the second level of the treeview.
Solution
Changed SQL query to not include terminated users. The terminated users are responsible for the users who don't have the job title, so it fixed both issues. Added some fallback logic for the job title and reporting lines.
Organisational Structure
[Org] Add a whitespace between the org name and the bracket (#139051)
Problem
The org name and org details were crammed against each other.
Solution
Added a whitespace after the org name.
Tenant Management
Sorting according to "System Close Date" is not working correctly (#139195)
Problem
Sorting according to "System Close Date" is not working correctly
Solution
Ensure you can sort properly on the system close date on the index page
Learning Management
Signify Training Requirement Matrix (request) (#137957)
Problem
In the grid component, columns are used with a select search, but the search only allows starting with in which can not search for contains.
Solution
Implement a new change to adjust and allow content search
Misalignment of icons (#138397)
Problem
Icons on the "Module-Specific Functions" dropdown were unaligned.
Solution
Fixed alignment.
Content Management
Digital signing - remove the unsigned document when signing is completed successfully (#135508)
Problem
The managed content document deletion does not correctly call the V8 delete document api. Additionally, it also tries to delete the Signed Document contentId, which it should not do.
Solution
Change the call to V8 to be exact, delete the method and change how parameters are sent through. Adapt the query that fetches content to delete to exclude the signed document.
Communication Portal
[HR Processes] No pulsing dot on notification envelope (#136264)
Problem
Pulsing dot not removed when viewing tab content
Solution
Clear the pulsing dot after a few seconds after opening the tab for which there was a notification
Virtual Tour
View Virtual Tour button removed when 'do not display again' is selected (#137842)
Problem
The query is considering the user opt-out when calculating the virtual tour ID, in which it gets removed once the user has opted out, which does not allow the user to view the virtual tour again
Solution
Add a change to return both checks and do the calculation on Fronted if it needs to be viewed on page render, else return the ID so the user can still view by clicking the view virtual tour
Data Warehouse
V9 PM Reports Yes/No instead of True/False (#137778)
Problem
There are "Yes" and "No" fields required within the DWH
Solution
Added field ActiveText within accUsers
Added fields ItemsStartedText, ItemsApprovedByUserText, ItemsApprovedByManagerText, UserScoreApprovedText, ManagerScoreApprovedText and FinalScoreApprovedText within pdmContractPeriods
Added field TrainingRequiredText within pdmContractPeriodActionPlans
Exports
When the error log is exported, the wrong file is downloaded (#137754)
Problem
An incorrect base URL was used, which caused a blank redirect
Solution
Correct the URL base path being retrieved, and make use of fire and forget to trigger after a second to complete the first request
Version 9.1.192 (4 November 2025)
Dashboards
Main Dashboard: Disabled Widgets not Available to Enable (#138926)
Problem
The widgets which were set to inactive do not show up on the manage widgets page. This makes it impossible for managers to activate a widget again.
Solution
Passed null for the active property to ensure all widgets show; this allows admin users to toggle inactive widgets back to active. Please Note: - This logic does not affect the main dashboard frontend; only active widgets are displayed there.
[Main Dashboard][Custom Dashboard]: When 1 button is specified the system does not span the full width (#138308)
Problem
When 1 button is specified, the system does not span the full width.
Solution
Ensure that 1 button does span the full width and 2 buttons share the width equally.
Job Management
An error occured during an import (#137904)
Problem
On some cases, data received from Sage has empty appointment data in which the code logic handles this as a new appointment. To do this, it terminates the previous position
Solution
Implement a pre-import step to try and update the user appointment details from an active appointment
Exports
[Imports][Admin User][Export Errors] When error log is exported, wrong file is downloaded (#137754)
Issue 1:
Problem
When navigating, the location is set to the URL being auctioned instead of the href value
Solution
Implement a fix to correct the href
Issue 2:
Problem
Development that was implemented to automatically download once an export has been made was only implemented on imports, as well as the query that always only took the last export file, regardless of selection
Solution
Extend SignalR to include a new message with an action URL that will be called upon receipt.
[Exports] Import error and Validation reports generated twice (#138132)
Problem
An event handler is attached to the document button click event, but not detached first, which causes multiple triggers
Solution
Remove the event handler before adding a new one
Data Warehouse
Create raw data data source for logins (#138394)
Issue 1:
Problem
Fields ReasonForCalibration and 360EvaluationScore are required within DWH
Solution
Added field ReasonForCalibration within pdmContracts, pdmContractPeriods and pdmContractSurveys
Added field 360EvaluationScore within pdmContractSurveys
Added field OverallFinalRatingScore within pdmContracts
Issue 2:
Problem
Some fields are not required within accUserLogins, as it only needs to return the raw data
Solution
Removed unnecessary fields from accUserLogins that are not raw data related
Report Builder: Join the People and Learning Management Datasources (#138311)
Problem
New DataSourceJoins are required between People - and Learning Management
Solution
Added new DataSourceJoins between People - and Learning Management
Training Matrix - Refresh (#138477)
Problem
All the data within the lmEmployeeTrainingRequirementsMatrix would be truncated due to the Date Filter that was added within the Insert Query Step
Solution
Adjusted Delete to only delete records within the lmEmployeeTrainingRequirementsMatrix if it exists within the Staging table
New Scorecard Status Report | Unapproved Score (#138289)
Problem
The field FinalScoreBeforeApproval returned the results without taking PerformanceMaxRating into consideration
Solution
Adjusted field FinalScoreBeforeApproval to include PerformanceMaxRating
Performance Management
[PM] [Review Setup] [Templates] Unable to import templates when VB and LB sections are enabled (#137921)
Problem
With the new sections being able to be imported for templates, when a client has a different translation for that section name, it throws an exception as the backend could not map get the correct enum value as it was not parsed in the validation checks
Solution
Add a change to map back from the translation to the correct enum section to be handled and updated correctly in the backend
User get logged out (#138398)
Problem
The system’s lock and idle warning logic caused repeated warning modals and incorrect lock behaviour. Clicking “Continue” did not properly refresh the lock, and navigating into or away from a resource could leave it incorrectly locked or unlocked. These issues were caused by mixing lock acquisition, idle checks, and timers, leading to stale state being used and cleanup logic interfering with new sessions.
Solution
Separate the idle warning logic from lock acquisition so the warning only appears when the lock is truly near expiry, and ensure clicking “Continue” refreshes the lock without resetting it. Unlock the resource on navigation or unmount only if the lock is actively held and not already being released, preventing conflicts with new sessions. Maintain a single source of truth for the lock state so timers always operate on up-to-date information. This ensures predictable locking, proper idle warnings, and safe unlocking when leaving a resource.
[PM] [Review Setup] Sanitise Name and Description text fields (#137277)
Problem
Input text is not sanitised when adding special characters, and the encoding is displayed
Solution
Make use of the newly implemented control
[PM] [Dashboard] Mapping descriptions shown for all periods if only one has been enabled (#137916)
Problem
When a mapping item has been configured for only a certain period, when there is none for another period, it shows no rating, as a check is done if there are only mappings and not mapping specific to that contract period
Solution
Add a change to the method to determine the mapping to extend and return if there was a mapping identified
[PM] [Agreement] [Action Plans] Action Plan items from deleted contracts displayed when you copy from a previous year (#138337)
Problem
Action plan items of deleted contracts get retrieved to be listed for copy selection
Solution
Add a check to the query to exclude deleted contracts
[PM] [Agreement] [Action plan] Cannot tag an Action plan item in a message to the person (#138144)
Problem
When clicking the tag message for the communication chat, the action plan item is not being displayed
Solution
Correct the value being retrieved and sent through
[PM] [Review Setup] [Templates] Unable to import templates when VB and LB sections are enabled (#137921)
Problem
New validation was implemented to allow key components and stretch targets, and validation was done for valid sections, but preview sections were not included hence why it threw the error
Solution
Add section names for validation check
Year dropdown is not populated on the moderation screen (#138651)
Problem
The retrieval of active review years for Moderation takes too long
Solution
Add missing filters for PM Materialised People Group users
Imports
Missing Employee and Leave Approval Issue (#138345)
Problem
Payspace pull fails when users without reporting lines exist for the users with the same username being pulled from Payspace
Solution
Updated manager data selection logic to safely handle null ReportingLines and ManagerUsername values, ensuring exported manager lists are never null and usernames default to empty strings if missing.
Change V9 PM 360 Evaluation Scores Import To Use Alternate Calculation (#138498)
Problem
The scores shown on PM for value surveys that were imported from Employee Evaluations differ to the scores when viewed on the 360 Manager / Employee Reports. This is because 2 separate calculations are done, which return two different answers.
Solution
Change the 360 Survey scores SP to do the same calculation as is done on the 360 Manager / Employee Report
HR Processes
[HR Process][End User][Search] Unable to search for multi-word phrase (#137367)
Problem
When searching multiple words a space is inserted in which when sent through the query is not encoded which throws the words after the space away
Solution
Encode the search term before sending through
Ruleset Management
Help File Migration (#134427)
Problem
Migrate large user guides from production to be deployed to all clients.
Solution
Introduces a PowerShell script for exporting user guide upsert statements and adds a new Entity Framework migration for seeding user guide data in the Account service. These changes support improved management and deployment of user guide content.
Version 9.1.191 (4 November 2025)
People Management
Reset password message wrapping (#127977)
Problem
On the screen below, the “?” must be directly after the email address so that it does not wrap.
Solution
Prevent the "?" after the email address from wrapping by adding an HTML line break in the translation. Also centred email text.
Auto Docs Place Holders | Add employee address & Work location (#137612)
Problem
When the user toggled has been selected to use residential for postal, the check was reversed as postal for residential was checked
Solution
Correct the logic factor
[Virtual Tours][End User][Display] 'Do not show' on a ruleset has no effect - VT falls back to RS1 regardless (#138237)
Problem
When a ruleset has changed its setting to Do Not Show, the query would remove the tour from the filtered list and default to the default tour identified as well as when all the slide toggles are off, it will have no tour being identified to the ruleset and will default back to the ruleset 1
Solution
Refactor the query to select the tours identified, and only afterwards apply the rules as when from within the base it will be removed and the default rule will be applied.
Reporting line fields - user should not be able to type (#135254)
Problem
It is currently possible to type anything in the fields and then click save - nothing is saved, but the user should not be able to type in these fields.
Solution
Prevent the user from typing in the reporting line input fields.
Dashboards
[More Insights][Span Of Control] Reporting Lines on Hover changes (#138354)
Problem
The tooltip of the reporting lines on the span of control page had readability issues.
Solution
Change the text color to white and make the first ManagerType bold in the tooltip.
Notifications
Content Server not available message shown when hovering over the Open or Processing icon (#138202)
Problem
The description stipulates that no Export should be downloaded, but when I hover over the icon, the tooltip gives the impression that this is a feature, but that the Content Server is not available.
Solution
Don't show Content Server tooltip for "Open or Processing" notification counts.
Test Notification is not being registered as 'Open or Processing' (#138358)
Problem
"Open or Processing" notification counts aren't correct.
Solution
Fixed "Open or Processing" notification count.
Add unprocessed email count on import stats count (#136281)
Problem
On the notification statistics, a user cannot see how many emails have been queued for processing, making it impossible to know if there are still emails not yet sent.
Solution
Add a counter next to the failed count of Email and SMS, indicating the total emails in the ToBeSent table with the status Open or Processing
Add the same counter next to system messages.
When the counter is clicked, no report should download
Make the counter colour the warning orange colour.
PM Send email notification to employee when contract was moderated (#137237)
Problem
New development request to send a notification when the user's performance contract has been moderated.
Solution
Added new template and event codes for Moderation Finalised. Call the notification event when moderation is approved.
[Notifications][Admin User][Pagination] Signibot icon overlaps the Next pagination link on the Notifications page (#137152)
Problem
The Signibot icon overlaps the Next pagination button at the bottom of the Imports tab page.
Solution
Move up the Signibot icon when on the Imports tab page so that it doesn't overlap the Next pagination button.
[People Management] Reporting line fields - user should not be able to type (#135254)
Problem
The Signibot icon overlaps the Next pagination button at the bottom of the Imports tab page.
Solution
Move up the Signibot icon when on the Imports tab page so that it doesn't overlap the Next pagination button.
Tenant Creation Stuck (#137965)
Problem
ImportApi registration is missing from the notification service. Import error notifications are not sent from the Import Api.
Solution
Register import api on Notification Service Helm Charts
Performance Management
PM Text not fitting on start button (#138326)
Problem
When the text for the dashboard buttons is too long, it gets cut off since the button text does not wrap
Solution
Removed no-wrap from the button to allow the text in the button to wrap
New Scorecard Status Report | Unapproved Score (#138289)
Problem
Clients need to "running" score displayed on the dashboard & final score gauge on the front end to be displayed on the reports. This score is only saved to the DB after the ratings are approved.
Solution
On the item rating, when the running score is calculated, save the value to a new unapproved final score field.
Cursor on Templates (#135274)
Problem
The cursor when hovering over the "Select items from the list" data table rows needs to be changed from the default to a pointer.
Solution
Added a CSS class that accesses the tr's for the table. Inline styles/classes are not an option as the rows are added dynamically.
Data Warehouse
New Scorecard Status Report | Unapproved Score (#138289)
Problem
Field FinalScoreBeforeApproval is required within pdmContractPeriods for DWH
Solution
Added field FinalScoreBeforeApproval within ContractPeriods for DWH
Employees not appearing on Performance Report (#137870)
Issue 1:
Problem
The step "Delete Non-Source jpAppointments Entries" failed due to SQL Syntax Error
Solution
Corrected the SQL error within step "Delete Non-Source jpAppointments Entries"
Issue 2:
Problem
The package step JobTitle Exclusions is not required anymore since the field IsJobTitleExcluded is available within accUsers
Solution
Deleted "JobTitle Exclusions" step within the DWH package
Add new datasource Document Statement (#136915)
Problem
Field IsAttached is required within UserFiles
Solution
Added field IsAttached within UserFiles
Adjustments that need to be made within LearningManagementReport (#137761)
Problem
The field IsJobTitleExcluded did not upgrade correctly if it was previously set to true
Solution
Added an extra step to update the field IsJobTitleExcluded firstly to NULL before updating it to either true or false for all the users within accUsers
Imports
Materialisation not working for large imports (#138131 & #138277)
Problem
People groups are not rematerialized after user import. User staging takes excessively long to stage
Solution
Change materialisation from the import to ensure all calculated people groups are rematerialised after the import. Implement bulk copy during duplication check for the staging queue and delete duplicates using Dapper.
Queued imports do not start (#137945)
Problem
New functionality has been implemented to queue imports, but in the services it makes call to the import service to get the latest import, in that method no new update was done to calculate the correct import as there is a new seperate method created for queued imports to be identfied
Solution
Correct the method getActiveImport to take into account the calculation for queued imports
Rename Export/Import (#135253)
Problem
The nav item under "Module-specific functions" called Export/Import needed to be renamed to "Import".
Solution
Used "import" translation instead of "exportImport" translation.
Cannot queue an import if one has already been staged (#136401)
Problem
When an import is queued, a restriction is returned indicating that another import can not start until the previous has finished
Solution
Make use of the extended development done for API imports to extend to frontend imports.
Make email address validation more robust (#128949)
Problem
Currently, an email is validated within normal regex, as well as a check is done on a valid email address for 350 characters, whereas the import staging table column only allows 200 characters
Solution
Implement a new valid method for Emails returning a valid error message to stop the import within the UI, and provide user user-friendly message. Implement unit tests as well to cater for all scenario checks
[Imports] Bulk Imports Failing on 10K, 20K & 50K Users to Import (#132261)
Problem
The position code is not imported during user imports
Solution
Corrects property assignments in ImportUsersEventConsumer, ensuring PositionCode and OrgLevelX.ExternalId use the correct user properties—updates ImportPositionsCommandHandler to use collection expressions for requestPositions initialisation, improving code clarity and correctness.
System Access
SQL Job Failed [Email Ref: 218829] (#138355)
Problem
A user with many subordinates is unable to log in
Solution
Replaces batched IN clause for user ID filtering with a temporary table and SqlBulkCopy for improved performance and scalability. This change enables more efficient handling of large user ID lists in SQL queries.
Organisational Structure
Change wording on Org structure Filters (#137332)
Problem
Naming for labels on the button link slider on the Org Structure needs to be changed.
Solution
Changed translations for button link slider items.
Identity and Authorisation
Trim username and password (#135269)
Problem
Username and password needs to be trimmed upon login, so when pasting a password or username with leading/trailing whitespaces, the login does not fail.
Solution
Trim password and username upon user login.
Tenant Management
Add Comment field (#133408)
Problem
The comment field needed to be added for the tenant edit page. A tooltip displaying a comment needed to be added for each tenant on the tenant list page.
Solution
Created migration for the comment column, added a text area in the tenant edit page. Added a tooltip on the tenant list page.
Salary Review
Import the performance overall final scores of a specific review to a selected salary review period (#136322)
New Functionality
Add import of performance scores from V9
Job Management
Access the V8 menus on V9 (#136363)
New Functionality:
Requirements tab is now only visible if the Job Profiling product has been purchased
Resolved nav menu being pushed and removed job requirements nav parent tab menu
Ruleset Management
Cannot edit templates published from ruleset 1 (#137276)
Problem
The template unread communication messages can not be edited, should a ruleset want to change the schedule
Solution
Alter the template to make not non-read-only to allow for changes and updates template
Version 9.1.190.3 (Support Release - 21 October 2025)
Imports
Missing Employee and Leave Approval Issue (#138345)
Problem
Payspace pull fails when users without reporting lines exist for the users with the same username being pulled from Payspace
Solution
Updated manager data selection logic to safely handle null
ReportingLines and ManagerUsername values, ensuring exported manager lists are never null and usernames default to empty strings if missing.
Notifications
PM Send email notification to employee when contract was moderated (#137237)
Problem
New development request to send a notification when the user's performance contract has been moderated.
Solution
Added new template and event codes for Moderation Finalised. Call notification event when moderation is approved.
Performance Management
The Year dropdown is not populating (#138651)
Problem
The retrieval of active review years for Moderation takes too long
Solution
Add missing filters for PM Materialised People Group users
Version 9.1.190.2 (Support Release - 15 October 2025)
Imports
Improve people group sync and import duplicate removal (#138131 & #138277)
Problem
People groups are not rematerialized after user import
User staging takes excessively long to stage
Solution
Change materialisation from the import to ensure all calculated people groups are rematerialised after the import.
Implement bulk copy during duplication check for the staging queue and delete duplicates using Dapper.
Version 9.1.190.1 (Support Release - 14 October 2025)
Performance Management
New Scorecard Status Report | Unapproved Score (#138289)
Problem
Clients need to "running" score displayed on the dashboard & final score gauge on the front end to be displayed on the reports. This score is only saved to the DB after the ratings are approved.
Solution
On the item rating, when the running score is calculated, save the value to a new unapproved final score field.
System Access
SQL Job Failed (#138355)
Problem
A user with many subordinates is unable to log in
Solution
Replaces batched IN clause for user ID filtering with a temporary table and SqlBulkCopy for improved performance and scalability. This change enables more efficient handling of large user ID lists in SQL queries.
People Management
[Virtual Tours][End User][Display] 'Do not show' on a ruleset has no effect - VT falls back to RS1 regardless (#138237)
Problem
When a ruleset has changed its setting to Do Not Show, the query would remove the tour from the filtered list and default to the default tour identified as well as when all the slide toggles are off, it will have no tour being identified to the ruleset and will default back to ruleset 1
Solution
Refactor the query to select the tours identified, and only afterwards apply the rules, as when from within the base it will be removed, and the default rule will be applied.
Imports
Bulk Imports Failing on 10K, 20K & 50K Users to Import (#132261)
Problem
The position code is not imported during user imports
Solution
Corrects property assignments in ImportUsersEventConsumer, ensuring PositionCode and OrgLevelX.ExternalId use the correct user properties—updates ImportPositionsCommandHandler to use collection expressions for requestPositions initialisation, improving code clarity and correctness.
Version 9.1.190 (13 October 2025)
Dashboards
Ripple effect when selecting an image for a banner (#137261)
Problem
There is a ripple effect when selecting an image for the banner.
Solution
Removed ripple effect when selecting an image for the banner.
People Management
Disability dropdown not showing (#137946)
Problem
There are 2 different disability toggles and lists in which are shown under the tab content of Summary as well as Profile, in which it does not toggle the visibility correctly accordingly to the view selected
Solution
Add a change to find the parent row container and the correct list ID to toggle the visibility
Data Warehouse
Adjustments that need to be made within LearningManagementReport (#137761)
Problem
Adjustments are required within lmTermResults and lmStudentSubjects for Student Reports
Solution
Resolved calculation issue for Scores within StudentSubjects due to rounding that already occurs within the first calculation
Added Step to update Score fields to blank for cases when Students only have 0 marks for a whole term within StudentSubjects
Reduced the manual updates within StudentSubjects
Updated the Promotion Status Calculation for Grade 7 - 12 to resolve issues where it had not been calculated correctly within TermResults
Reduced the manual updates within TermResults
Training Matrix - Refresh (#137719)
Problem
The @ReferenceDate has been commented out for lmEmployeeTrainingRequirementsMatrix which can cause performance issues
Solution
Added @ReferenceDate within the source script for EmployeeTrainingRequirementsMatrix to improve DWH performance
Imports
Improvements to the user imports performance and implementation of batch processing (#131379; #135967; #136136)
Problem
The performance when importing more than 6K users is abysmal
When staging user import directly in the DB the pre-import validation is skipped.
When importing positions without codes, a new position is created with every import.
When an import is busy processing it is impossible to track the progress
When updating the user's details on the profile, the payroll id is cleared, causing the username not to update when synced again from Payspace
When the username, ID number or employee code's case differs from the existing DB case, the usernames are not updated and a new user is created.
When importing user data the update delays the import
When importing the org structure with many changes, the import takes an excessive time
Solution
When data is staged directly in the DB, validate the data before starting the import
Ensure that the payroll ID is not cleared when a user's profile is edited on the front end.
Allow updating username using the payroll ID, ensure matching on username, ID number, and employee code is case insensitive when updating usernames.
Ensure the payroll ID is always imported for new and existing users
Implement bulk processing for the org structure, job profile and positions
Improve matching of existing job profiles when importing job profiles and positions
Remove the userdates update and replace it with a streamlined update for performance
When importing a position without a code and title, ensure the position is mapped to the current position of the user, rather than creating a new position with every import
Add import logs in the service to keep track of running processes
Implement batch processing per service of 5K users per run
Add detail exception logging when importing org nodes
Remove concurrency stamp when creating users
Version 9.1.189 (13 October 2025)
Tenant Management
Tenant Subscriptions (#137663)
Problem
When the Core package is included in a Pay as you Use subscription (included by default), Standard Reports are excluded on renewal
Solution
Include Standard Reports in the Core subscription of Pay-as-you-Use clients
Notifications
Check-In deadline for Final Review (#137902)
Problem
Terminated users are included in the recipient list for PM deadline notifications.
Solution
Exclude users who do not have an active appointment from being included in the results of contracts that are approaching their deadline.
Training Intervention import does not show progress on the Imports tab (#134550)
Problem
Integration Imports are not logged on the Notification Imports view:
Cost Descriptions
Training Interventions
Pathway Groups
Training Intervention Costs
Solution
Included a logging mechanism for these imports on the Learning Management Module
Ruleset email configuration (#136875)
Problem
Email from address is case sensitive
Solution
A small update was made to the email validation logic in the `EmailSetupViewModel`.
The regular expression previously used for validating email addresses has been replaced with the built-in `[EmailAddress]` attribute, which provides more robust and standardised validation.
Replaced the custom regular expression for email validation with the `[EmailAddress]` attribute on the `FromEmail` property in `EmailSetupViewModel.cs` for improved accuracy and maintainability.
Identity and Authorisation
Tenant Creation Stuck (#137965)
Problem
Tenant and Ruleset Creation does not complete and remains stuck on creating administrator users.
Solution
Fix issue with user roles copy breaking due to having no context when calling anonymously during tenant creation
Learning Management
Assignment Management: Assessment Score to Pull to Marksheet (#137841)
Problem
When a learner's score on the Marksheet has been captured and overridden, the assignment score is added additionally to the response, resulting in 2 scores being returned.
Solution
Corrected the conditional check determining whether to use the score imported from the assignment or the overridden score.
Data Warehouse
Training Matrix - Refresh (#137719)
Issue 1:
Problem
Not all the lmEmployeeTrainingRequirementsMatrix are being added due to the date filter within the script
Solution
Adjusted the source script to return all non-deleted Training Requirements Matrix within DataSource EmployeeTrainingRequirementsMatrix
Issue 2:
Problem
The source query for EmployeeTrainingRequirementsMatrix will not return all the data due to the Date filter logic
Solution
Adjusted source query for lmEmployeeTrainingRequirementsMatrix to return TrainingRequirementsMatrix data for the current year
Request for access rights matrix (#137643)
Problem
New Datasource is required to store UserPermissions data
Solution
Added new Datasource jpUserPermissions
People Management
Save button disabled and Show default to be selected on open when ruleset does not have its own Virtual Tour (#137844)
Problem
A check is done, which does not allow the user to save a virtual tour if there are no slides added, which can lead to the user not selecting DO not Show virtual tour and save
Solution
Remove the logic check done for slide count and change the visibility default selection to show default, as this is the default rule.
More descriptive error to be shown when saving a Tour without slide details (#137846)
Problem
When adding a new slide with no content and saving, in the backend, this throws an exception as the body HTML is needed, but it is not a descriptive error
Solution
Implement logic check on the controller with the correct text error being returned
Tour shows after having set it to not show again (#137801)
Problem
When saving a virtual tour from the culture selection, it takes the user's signed-in locale instead of the selected locale
Solution
Correct the locale that is used to save the virtual tour
Add employee address & Work location (#137612)
Problem
The client wants to add the employee's address and physical work location to the placeholders so that it can be used in the auto-docs contract setup.
Currently, they have to type it in manually for each employee
Solution
Implement additional placeholders relating to user address details
Theme Management
Hanging banners not shown correctly (#137802)
Problem
When the primary colour is of a very light hue, the resulting tertiary colour exceeds 100% lightness and gets converted to white (#ffffff).
Solution
Add handling to ensure that the lightness/desaturation never exceeds 100% V9 Portion
Performance Management
Text Sanitation Changes '&' to '&' (#132912)
Problem
On the review setup template, the names were still not sanitised
Solution
Add the new tag helper to sanitise text
Translations
Language selection duplicated on drop-down (#135774)
Problem
Language options are shown in duplicate on the Login screen.
Solution
Remove duplicate language options from the language list returned from cache
Date picker format remains on English (SA) when changing to English (US) (#135930)
Problem
Date formats in localstorage was not updated immediately after changing language and logging in. This happened because a cookie was used to determine whether the date format was changed and if it should be updated in the local storage. But the cookie was set in the app controller, just before the user is authenticated, meaning it could not retrieve the correct language from the user claim (as it does not have access to the claim yet as the user is not authenticated), resulting in the fallback language being used, resulting in the incorrect date formats being calculated.
Solution
Rather set the date format cookie in the home controller (where the user is authenticated) and update the local storage directly from the cookie value (not necessary to retrieve manually anymore) if the cookie values was changed.
Auto-Doc
Username not pulling through (#137664)
Problem
Username placeholders in document templates display incorrect date values instead of the actual numeric usernames. This probably affects several places in the codebase because the cause is a commonly used method
Solution
Added a conditional check to respect the `parseOADates` parameter in the `ToSignifyDateTime()` method.
Version 9.1.188 (13 October 2025)
People Management
Virtual Tour not shown even though it has been set up on RS1 (#137702)
Problem
When a virtual tour does not exists for a ruleset, it must default to ruleset 1, and if it exists, the visibility type should determine which tour to display. Incorrect tours are being displayed based on the visibility type, as when a user opts out of their ruleset, the SQL falls back to ruleset 1.
Solution
Alter the SQL to apply the correct validation
Version 9.1.187 (13 October 2025)
Auto-Doc
Error when attempting to create a document (#137677)
Problem
A general error is displayed when the content management service is unavailable while viewing a document. + Error messages are not displayed correctly with a snack on the front-end.
Solution
Display proper error when content management service is not properly configured when previewing document, + Improve error message display handling using a snack in the global ajax handler.
Data Warehouse
Request for access rights matrix (#137643)
Problem
The Disabilities did not return unique disabilities within accUsers
Solution
Adjusted source script for accUsers to return unique disabilities
KPI Weight percentage per section report (#137494)
Problem
Field Level3SectionItemWeightPerSection is required within pdmContractPeriodSectionItems
Solution
Added field Level3SectionItemWeightPerSection within pdmContractPeriodSectionItems
Term 3 report cards (#136081)
Problem
There was an issue with one subject's Afrikaans translation
The Promotion Status update for StudentSubjects showed as Passed of no Pass Mark were added
The Promotion Status did not calculate correct for certain cases within TermMarks
Marks needs to be adjusted manually within the lmstudentsubject
Solution
Corrected the translation for one Afrikaans Subject
Added a step to update the Promotion Status correctly for StudentSubjects if marks are certain range and no Pass Mark is added
Corrected the Promotion Status calculation for TermMarks
Added new tasks to update learner records manually
Content Management
Digital signing - remove the unsigned document when signing is completed successfully (#135508)
Problem
On V8 and V9, the unsigned document is kept when signing completes successfully.
This takes up double the hard drive space.
Solution
Set the content deletion date to be 7 days from the signed document creation.
Added a delete handler to remove the SignedDocument from the content server and unlink the entity.
As well as request deletion on V8
People Management
Unable to change the language (#137471)
Issue 1:
Problem
With the user guide logic, both view and edit are making use of the same content, which causes complications when switching languages, as well as when data is being saved.
The content listed has wrong logic regarding ruleset rules, which is already handled in the backend with a previous development fix.
Solution
Refactor the View Component to ensure it makes use of the correct view and edit forms, update UI to display as needed
Issue 2:
Problem
User guides that were created in the past in ruleset 1 did not take effect on the new changes to create sections 2 and 3 as well. A logic check was done to accommodate this, but only made a check for 0 and not 1, as every ruleset will have at least 1 section from historical data
Solution
Correct logic check to include the 1 section check
Issue 3:
Problem
When changing a language within the user guides, no reset of selection was done on the section editors, as well as when saving sections that were not marked as active because of logic that excluded active sections from being saved
Solution
Add a new clear method once a language is changed to reset the editors, as well as alter the logic to ensure the sections are saved from the main ruleset, as well as inactive sections
Update Tooltip text (#137333)
Problem
The translation for a tooltip needs to change. "Manage People" tab needs to change to "View/Edit" tab.
Solution
Change translations.
Administration
Access to admin pages (#137300)
Problem
Only ruleset and tenant admins have access to the Other Systems Admin menu
Solution
Grant all admins access to the menu
Performance Management
Display decimals when you click away from the rating field (#136644)
Problem
When doing a key-up stroke validation is done and converted to ensure a decimal place of '.00' is used, but this makes it difficult if one would want to type 2.03 as example,
Solution
Remove the enforced decimal place convert to when the user leaves the input after the full initial change happens
Evaluation Period not pulling through on V9 (#136272)
Problem
When doing a bulk recalculation on performance contracts, the user position is being returned, but because there is not value, the NULL operator breaks the return values
Solution
Implement change to default to blank string should the position be NULL
Improve error when copying from an incompatible Review Setup (#135623)
Problem
Error translations where missing for the one item of review year setup not found
Solution
Added missing translation
Communication Portal
No pulsing dot on notification envelope (#136264)
New Feature
Add general pulse notification by making use of integration events and implement for HR Processes.
Version 9.1.186 (13 October 2025)
Imports
Auto download V9 export on complete (#136523)
Problem
Upon completion of exporting transactions/errors, an auto download of the file needs to be kicked off.
The success snack bar should remain visible until explicitly dismissed.
Solution
Snack lifetime duration increased to unlimited.
The download of the file is now automatically started upon completion of export.
Auto-Doc
Image uploaded when signing is shown overlapping placeholder fields (#135952)
Problem
When signing a document, the placeholder was not properly redacted.
Solution
Ensure that the signature placeholder is properly redacted first, before drawing the actual signature in the place of the placeholder.
Main Dashboard
Custom Dashboard Widget (#130585)
Features
Added the ability to create a custom widget to display on the Main Dashboard
Heading, description, and images can be added
2 buttons are available to be configured with custom URLs
Performance Management
Long period names go over the divider line (#136280)
Problem
When there is one word with no spaces, which does not cause a line break, it overlaps on the timeline, and the 20-character length for the ellipse does not break early enough before overlapping
Solution
Shorten the length from 20 to 15 to fit in
Data Warehouse
Add new Chats table to the DWH (#136913)
Problem
A new table, accChats, is required within the Data Warehouse
Solution
Created a new table, accChats within Datawarehouse
People Management
Virtual Tour: Add functionality to reset all statuses of "Do not Show again" (#136771)
Problem
An Admin cannot reset the "Do not show again" for users
Solution
Add a change to allow resetting all "do not display again" for users
Version 9.1.185.1 (Support Release - 26 September 2025)
Integrations
Hide Next Cloud Password (#137532)
Problem
The Nextcloud password is available from the front-end and provides access to all client documents
Solution
Do not return the password to the front-end
Hide the password (eye)
Only save the Nextcloud details when all fields are completed
Version 9.1.185 (22 September 2025)
People Management
Copy from default ruleset button missing (#137232)
Problem
Default ruleset check is only done if an active tour exists for the ruleset, which should check regardless, and incorrectly orders and shows the virtual tour if the current ruleset has a virtual tour
Solution
Correct the check to check for default, as well as correct the order by to determine the correct virtual tour to be displayed
Edit icon is hidden when the menu is open (#136900)
Issue 1:
Problem
The dropdown list is being rendered behind the padding of the section, which makes the last item not clickable when a section has content
Solution
Add a z-index to elevate the list items to be selected
Issue 2:
Problem
When the edit icon is clicked, a dropdown is given with options for a virtual tour or help page. The content pushes the view button when it is active
Solution
Implement a change to alter the styling to be displayed beneath the icon, and the width is adjusted
Issue 3:
Problem
When the icon is clicked to edit a virtual tour, the dropdown is displayed over the pencil icon,
Solution
Implement styling so that the list of selections is on the left if the icon is present, as well as change the toggle of the icon click
Delete Modal stays on screen after deleting a slide (#136902)
Issue 1:
Problem
When a slide gets deleted, it gets removed, and the delete modal fade gets toggled, as well as the delete modal closes
Solution
Because the hide already removes the fade, it gets toggled back, and the toggle fade as this is handled within the modal close
Issue 2:
Problem
When a slide is deleted, the delete modal does not disappear
Solution
Add a change to hide the delete modal once deleted
[People Management][v8 Menu Items] Extra space at the bottom (#136704)
Problem
When opening a v8 menu item, the right-hand frame is much smaller than the page, leaving some blank space at the bottom
Solution
Set the iframe height to the viewport height and subtract the height of all the other page elements besides the iframe itself.
Card styling issue when the user has a long Name and a long Job Title (#136407)
Problem
On certain test cases, the Job Title does not fill up the rest of the text lines left over by the Name.
Solution
Rather, use rounding instead of ceiling to more accurately calculate the number of lines occupied by the Name. Allocate 20 characters per line occupied by the title to more accurately determine the max text length used by the Job Title.
Labels showing after click (#136901)
Problem
When a slide is reordered, the tool tip is still being displayed, as the mouse over technically never left the button to hide the tooltip
Solution
Implement a change to hide the tooltip when the button has been clicked
An error occurred after toggling the Do not display again toggle (#136908)
Problem
When a user toggles the do not show again for a virtual tour, an exception occurs if that virtual tour is displayed from the default ruleset
Solution
Implement a change that if the virtual tour does not exist for the user's ruleset, fallback to the default ruleset virtual tour and implement user selection to not show again
Card styling issue when the user has a long Name and a long Job Title (#136407)
Problem
Long names and job titles can cause the card content to overflow.
Requested changes:
Increase the number of lines to 4.
Decrease the margin and padding within the user card to accommodate the additional line.
Visually, the name is more important, so it should be allowed more lines than the job title.
Allow the banner to overlay some of the avatar.
Make the Kudos widget button smaller.
Solution
Implemented CSS line clamping to limit the number of lines occupied by the name and title text.
Implemented useLayoutEffect to dynamically calculate the number of lines occupied by the name and allocate the remainder of the lines left to the title, whilst ensuring the title always gets at least one line.
Decrease margin and padding to allow the number of lines to be increased from 3 to 4.
Increase the zIndex of the banner to allow the banner to overlay the avatar, to achieve additional space.
Made the kudos widget button a bit smaller.
Copy button enabled when no Virtual Tours on RS1 (#136904)
Problem
New implementation allows a ruleset to copy from the default ruleset
Solution
Add a check to only allow copying if the default ruleset has a virtual tour of the selection details
Move text to the side of the filters (#135481)
Problem
Fixed global search input text not clearing when clearing filters from help text
Solution
Accessed the global clear filter button to clear filters instead of manually clearing.
Copy button enabled when no Virtual Tours on RS1 (#136904)
Problem
New implementation allows a ruleset to copy from the default ruleset
Solution
Add a check to only allow copying if the default ruleset has a virtual tour of the selection details
Performance Management
Description mapping pill not displayed (#136765)
Problem
When a label mapping is returned for the dashboard widget, the colour and icon was not included
Solution
Include the colour and icon for the label within the widget
Strange behaviour when QA unapproves agreement (#130380)
Problem
When Send To QA is optional, and the moderations have been fully approved after a QA step. When the QA unapproves, it moves the contract back to the moderator. It should remain for the QA to approve again.
Solution
Add a parameter to identify when it should send the contract back to the QA or the Moderator when it gets unapproved. Fixed an additional bug where the QA button is enabled on the search screen after the contract moderation has already been approved.
Unable to open agreement when there are no mappings (#137228)
Problem
When a user opens a contract, no mappings are loaded, which causes the contract to not load
Solution
Add a check to default to 0 if no mappings exist
PM Contract import changes (#135616)
Issue 1:
Problem
When a contract/agreement is imported with a weight over a section, the perspectives are not being retrieved, as a check exists for the weight.
Solution
Add a change that if the section allows perspectives to find the perspective ID needed for linking
Issue 2:
Problem
When Templates are imported, no validation check on the client side is done for the KPI Items over section totalling to 100%, as well as within the import validate weights check, ignoring the level 2 checks, should the value be true.
Solution
Implement the logic within the client side to validate the weights depending on the section's bool value if the setting is activated within that review setup, as well as the check within the backend logic to ignore level 2 weights should the setting be active.
Description mapping pill not displayed (#136765)
Problem
On the dashboard widget, the score label mapping is not shown because the wrong review year setup was calculated for the user, as no mapping was found, and no check exists for null
Solution
Correct the change to get the correct review year setup for the widget, and also pass the correct field to calculate the label mapping
Error message with Check-Ins (#135977)
Problem
When calling the ListContractPeriodCheckInsLeveled endpoint for an Action Plan, an error: InvalidOperationException: Sequence contains no elements, was returned.
Solution
Since Action Plans can't have a check-in, an empty response is returned.
Score gauges shown while rating (#136760)
Problem
When no rating has been made for the user contract, the old dial still displays in the banner header
Solution
Add a change to check if any mappings exist for the component to render no rating identified
Able to add a mapping that exceeds the maximum rating for that year (#136658)
Problem
When a new row is added to the mapping, the max range is calculated based on the previous max range, which can exceed the review year max rating, as well as the errors now showing correct translation
Solution
Implement a change to show a red border when the new max range exceeds the max rating, as well as expand the translation to show correctly according to the review year name max rating
Unable to delete a mapping section (#136928)
Problem
Score label mapping ID is an incorrect name when parsing ID to delete the mapping
Solution
Correct name to pass the correct ID value for deletion
Mapping sections naming convention not correct (#136929)
Problem
When a new mapping is added, the name is calculated from the index value, which is incremented by 1, but the index value is a string which it can not be added and can only be concatenated with the values
Solution
Parse the index to an int to apply addition
Character entity displayed in title bar (#136649)
Problem
The title of the user contract is not sanitised and has HTML encoding
Solution
Correct within the navbar that updated the title to sanitise the text content before setting
Able to create mapping for agreements where scores and weights are hidden (#136535)
Problem
Section Score label mappings can be used when the hide scores setting is enabled in the review setup, which is incorrect according to the business rule
Solution
Add a change to not allow a user to make use of score mappings when the hide score setting has been enabled
Description mappings not shown on View/Print screen (#136763)
Problem
Score mappings are displayed based on the review period selected, as in this case, a null was passed in for final rating in which for this case it needed to be for a review item
Solution
Correct the review item ID to be passed into
Error when saving while not all fields are populated (#136646)
Problem
When a new score mapping item gets submitted with empty values, the form throws an exception instead of highlighting the values
Solution
Add validation so that the boxes get validated on required fields for the user to enter, and add a default colour inthe backend as well to default to
Overall scores no longer indicate when they have been calibrated (#136756)
Problem
Text under the overall final score is not aligned
Solution
Make the width of the div 100, otherwise the text-centre can not be applied to centre the text
"No Rating yet" displayed in a gauge (#136766)
Problem
No rating on the dashboard widget was incorrectly displayed and cramped because of the column size
Solution
Correct check to increase column size, should there be a mapping
Score gauges are shown when the final score has been calibrated (#136761)
Problem
When the score dials are loaded at the top of the final rating, an undefined value is entered to get the correct score label mapping
Solution
Correct the code to pass in the review item ID needed to calculate the final score label mapping
Dials are still shown if agreement hasn't been started or scored yet (#136659)
Problem
The min range has been changed to start at 0.01, which means that a label mapping will not be found should the score not be rated yet, resulting in showing the dial instead of no rating yet with label mapping
Solution
Implement a change to pass a check to showcase if there are mappings present, and if so, make the calculation to show no rating or the label mapping
Score gauges shown while rating (#136760)
Problem
When a user rates on a contract, the scores are updated through the slices, but there is no update indication for the label mapping
Solution
Implement a change to calculate the label mapping from the updated score through the slice, as well as enhance the dapper method, as the min range is now saved
Overall scores no longer indicate when they have been moderated (#136757)
Problem
When a contract has been moderated/calibrated, and a mapping exists, it does not show the mapping text
Solution
Add the text to be displayed below the mapping
Able to add a mapping that exceeds the maximum rating for that year (#136658)
Problem
When a new blank score mapping is added, there is no join to get the max rating needed, and when the value is entered, there is no value to match.
Solution
Split the query to retrieve the max rating separately, so that if there is none, it still returns the max rating, as well as check to match for the max rating
Sanitise text to display special characters correctly (#136514)
Problem
Text is displayed that is not sanitised, which shows encoding values.
Solution
Make use of the newly added tag helper to sanitise text
Heading on page should be made an info note (#136530)
Problem
A heading message is indicated at the top
Solution
Change to be an alert info as the message is an indication to the user to notify them
Scroll down to fit the icon list on the screen (#136653)
Problem
When the icon is clicked, it initialises the icon picker at the bottom of the page, but it does not flip to show above the icon
Solution
Implement a fix to wait for icons to be rendered to have the content height, and then recalculate the height to flip over or not
Unable to add mapping for Final Review on Annual setup (#136655)
Problem
A validation is done to not allow adding more mappings than review years, but the count does not take the overall score into consideration
Solution
Add count to the total review items for validation for the overall score
Heading on page should be made an info note (#136531)
Problem
When the content is first loaded, no colour is defined for the label and icon, as this is handled when the icon changes or the text changes.
Solution
Start text and icon on white against the colour picked
Display decimals when you click away from the rating field (#136644)
Problem
When a value, for example '2', is entered, it does not show the decimal value as .00
Solution
Add a change to enforce a fixed value with the correct decimal place
Duplicate images (#136654)
Problem
Some icons have the same icon but have different values
Solution
Remove duplicate icons
Description mappings not shown on View/Print screen (#136763)
Problem
When 2 label mappings are displayed on top of one another, there is no space between
Solution
Add spacing between the two mappings
Data Warehouse
Term 3 report cards (#136081)
Problem
An extra unrounded score field needs to be added within lmStudentSubjects
Solution
Added new field UnroundedScore within lmStudentSubjects
Signify Performance Management Report (#136876)
Problem
New fields ApprovedOverallFinalScorePercentage and UnapprovedOverallFinalScorePercentage are required within pdmContracts
Solution
Added new fields ApprovedOverallFinalScorePercentage and UnapprovedOverallFinalScorePercentage within pdmContracts
Daily Server Monitoring Checks 2025 (#125159)
Problem
The script did return deleted accDisciplinaryActions as missing fields
Solution
Updated where clause for accDisciplinaryActions to exclude deleted entries within script C_03549_99999_monGenerateDWHDataIntegrityReport
Add the mapping fields in the DWH (#133259)
Problem
The Score Rating Descriptions have not been updated to tables pdmContracts and pdmContractPeriods
Solution
Resolved the issue by including the new fields within the Insert Into Tables Step
Daily Server Monitoring Checks 2025 (#125159)
Problem
The source script for lmEmployeeTrainingRequirementsMatrix requires @ReferenceDate for performance improvement
Solution
Added @ReferenceDate within lmEmployeeTrainingRequirementsMatrix Source Script
Add the mapping fields in the DWH (#133259)
Problem
Score Rating Description fields need to be added to the DWH
Solution
Added Score Rating Descriptions within pdmContracts and pdmContractPeriods
Notifications
UTC not correctly calculated on scheduled run time (#130537)
Problem
Schedule runtime displays incorrectly after saving, always adding the timezone offset every time it is saved.
When saving the schedule runtime, the date and time are not saved as UTC in the database, but get converted back to Local time somewhere in the process.
Solution
Send the datetime to the service as Local Time spoofed as UTC, and redo the UTC conversion on the service side.
This is not an ideal approach, but I want to ensure that the traffic that gets sent to the Notification Api is correct and no conversion is lost, and only do the UTC conversion there.
Add API call to retrieve emails (#134239)
Problem
A api is not available to retrieve the sent logs.
The body of an email is not included in the export of the logs on the front end
Solution
Add a calculated notification body in stats export on the front-end and add an API call for direct access to the notification logs.
Identity
Logged in with English (SA) language displayed is Afrikaans (#137127)
Problem
When you unpublish the active language and you log out again, the selected language is incorrectly determined in the language drop-down, due to the cached language that is no longer available in the list of available languages
Solution
Ensure that the cached language (from cookie) on identity is part of the list of available languages; otherwise, reload and fallback to the default language of the ruleset.
HR Processes
Error shown when Process is set to use Fallback, which has not been set up on Global Workflow Fallback Configuration (#136216)
Problem
When a fallback type was previously selected and that option is no longer available, an empty option was displayed as the fallback type.
Solution
When no fallback types are available, add a not application default option, so that the drop-down does not display an empty option.
Fall back approver's already approved level becomes enabled again, even after already having approved (#136651)
Problem
Fall back approver's already approved level becomes enabled again, even after already having approved
Solution
Ensure that a level cannot be approved or declined if already approved or declined.
Learning Management
Add stamps when marking an assignment (#136383)
Problem
When placing the custom stamp annotation, the tool automatically deselects. The requirement is to have the tool kept enabled until the user selects another option or closes the annotation toolbar.
Solution
Added handling to re-enable the selected custom stamp after placing the annotation.
Wrong date being shown on certain stamps (#135993)
Problem
Syncfusion does not support the 'tt' format identifier - only used in en-US format.
Solution
Rather, remove 'tt' to ensure the date is properly formatted.
Wrong date being shown on certain stamps (#135993)
Problem
Built-in stamps displayed the author as "guest", and the date format was incorrect - not using the format from the current user.
Solution
Ensure that the stamp author displays the username of the current user and uses the date format of the user.
Add stamps when marking an assignment (#136383)
New development to add custom stamps to the online marking PDF annotation. Also modified the confirmation modal to now show the message as well as the custom stamps used.
Imports
Additional Placeholders on Auto-Doc (#135690)
Problem
The organisational fields are not named according to the document template placeholders and fail to map
Solution
This pull request updates the user query logic in `UserQueries.cs` to expand the set of user and organisational data being selected and refactor how results are handled.
The main changes are focused on improving the detail and structure of the query output, making it easier to retrieve comprehensive user and organisational hierarchy information.
Unspecified error when clicking on the Request button in quick succession (#131848)
Problem
Unspecified error when clicking on the Request button in quick succession
Solution
This happened due to the restriction on the v8 side to allow requests for a certain type only every X minutes. Made some enhancements on the HttpClientWrapper to return the raw response when a request fails, so that we can better handle the above scenario and display the proper message instead of a general failure message.
Clicking the request tab in quick succession displays 'Completed with Errors' status log entry (#131849)
Problem
Clicking the request tab in quick succession displays a 'Completed with Errors' status log entry
Solution
Instead of simply displaying the status of the request in the error message, display the raw response too, which is more detailed.
Exported filename to be more descriptive (#132575)
Problem
Exported filename to be more descriptive.
Solution
Make the files more descriptive by including the type in the name.
Updating the username based on the Payspace Payroll ID (#136736)
Problem
When importing a user with a new username from Payspace, a new user is created when the external/ payroll ID setting is active
Solution
This pull request extends the user import and update functionality to support matching users by Payroll ID in addition to existing identifiers like Username, Employee Code, Id Number, and External ID.
It introduces a new `BasicUserPreviewPayroll` model to include Payroll ID in user queries and updates the relevant methods and queries to handle this new identifier.
The changes ensure that Payroll ID is considered when finding existing users, and add appropriate error handling for duplicate Payroll IDs.
User import and update enhancements:
Updated the user matching logic in `ImportUsersCommandHandler` to include Payroll ID as an identifier, allowing users to be found and updated by Payroll ID. Added checks for uniqueness and duplicates in both the database and the import file, with clear error messages.
Replaced usages of `BasicUserPreview` with the new `BasicUserPreviewPayroll` type throughout the user update process to support Payroll ID.
Query and model updates:
Modified the `IUserQueries` interface and its implementation to accept and process Payroll ID as part of the user identifier tuple, and to return `BasicUserPreviewPayroll` objects.
Updated the SQL query in `UserQueries` to include Payroll ID in the selection and filtering logic, converting string Payroll IDs to integers for database comparison.
Added the `BasicUserPreviewPayroll` record to the user view models to represent users with Payroll ID information.
System Access
Missing Employee (#135967)
Problem
When the employee number has a varying case or the encryption key in V8 and V9's case differs, the security key is invalid
Solution
This pull request makes a minor update to the `GenerateTimeBasedSecurityKey` method in `StringHelper.cs`.
The change ensures that the combined string used for generating the security key is always in lowercase, which helps maintain consistency and avoid case-sensitivity issues in key generation.
Content Management
Bulk signing does not start (#136623)
Problem
When a new document request is created, the content ID is set to null, and a new method was added to set the content ID
Solution
When the entity is added, first set the content ID
Ruleset Management
New tag only shown for one of the two newly created rulesets (#136328)
Problem
Newly created rulesets are missing the "new" tag, which is caused by the ruleset lifetime duration being incorrectly calculated using the CreatedDate in local time and UTC.
Solution
Move the ruleset label status calculation logic from the view to the server side. Additionally, log information about rulesets that are created on the current day, to debug the issue further if the attempted bugfix does not fix it.
Admins don't have access to the required Integrations screens (#131940)
Problem
Tenant admins didn't have some permissions that ruleset admins have
Solution
Grant them permissions
Date Pickers for Subject & Cycles is Warped (#135981)
Problem
Some date fields were warped due to incorrect styling on date inputs. Solution: Ensure correct styling. 135930 Problem: Date pickers on ReportBuilder still do not format dates correctly.
Solution
Ensure the fields are correctly formatted by storing formats in localStorage instead of session, and other tweaks to the global format setup and handling.
Termination Date placeholder not shown in user's preferred language (#136400)
Problem
Termination date not formatted properly on auto doc.
Solution
All auto doc placeholder values are read as strings, and sometimes the date string could not be parsed as a date, so it could not be formatted. Make the general string-to-date parsing more robust by supporting more formats.
Other
Fix the incorrect jQuery locale file resolution by making use of the PathBase in base layout
Make the jquery locale file resolution more robust
Implement the small suggestion by Mechac to display the Course filter select on the event scheduling list view page with a placeholder
Admins don't have access to the required Integrations screens (#131940)
Problem
Admins do not have access to Integrations
Solution
General:
Org Admin, People Admin
Content Server:
People Admin, Performance Admin, Learning Admin
Chat Bots
Super admins only
Push Bulk V8 Additional Imports:
People Admin, Job Profiler Admin, Org Admin
Pull Bulk V8 Additional Imports:
PM Admin, Learning Admin, Event Scheduling Administrator
API Gateway:
All Admins
Payroll:
Only super admins and People Admins
Date Pickers for Subject & Cycles is Warped (#135981)
Problem
Certain instances where date input values were not properly formatted due to the 'change' method not being triggered when programmatically setting the value using $dateInput.val()
Solution
Globally override the jQuery val() method, ensuring that it won't affect existing usages of val and also ensuring that it only works for date inputs and not for other inputs.
Auto Doc
Termination Date placeholder not shown in the user's preferred language (#136400)
Problem
Termination placeholders are not correctly identified as dates on the master, which then makes it impossible to correctly format according to user culture and timezone.
Solution
Force the use of invariant culture to hopefully allow the date string to be parsed as a date.
Version 9.1.184 (22 September 2025)
Ruleset Management
Admins don't have access to the required Integrations screens (#131940)
Problem
Some admins don't have the required permissions to the Setup and Configuration admin menu -> Integrations
Solution
Grant admins permissions
Notifications
Students are unable to determine which lesson they need to review based on the absentee notifications. (#136423)
Problem
The client utilised subgroups across multiple pathway classes, which resulted in the Pathway Group/Class being the same for various pathways. As a result, students were unable to determine which lesson they needed to review based on the absentee notifications.
Solution
Included the pathway name in the absentee notifications, so students can clearly see which lesson they need to complete
Report Builder
Date picker format remains on English (SA) when changing to English (US) (#135930)
Problem
Date formats were not properly implemented on the report builder and jQuery date pickers.
Solution
Implement date formats in the report builder and apply them globally to jQuery date pickers. Also added global date format methods for WebMVC JavaScript
Tenant Management
Current Date format not as per language set in user's Preferred Language (#136191)
Problem
Incorrect date format is displayed (not according to user language preference) on the update expiry modal.
Solution
Ensure that the date is formatted according to the language preference of the user on the modal.
Version 9.1.183 (22 September 2025)
Master Data
Save Add New to keep some data populated (#133283)
Problem
When Save Add New master data, remember the previously selected values for the sliders and dropdowns - not any other field.
Solution
When the form is reset after Save Add New is clicked, exclude the sliders and dropdowns from having their values reset.
Data Warehouse
Labour Relations (#136545)
Problem
The DWH returned data for accDisciplinaryActions, although it had been marked as deleted
Solution
The source script for accDisciplinaryActions has been adjusted to only return entries that have not been marked as deleted
Training requirements matrix (#136063)
Issue 1:
Problem
The query did not return all the users due to an incorrect join within Countries
Solution
Corrected the join to join with the employee countryId instead of the location
Issue 2:
Problem
The Query for EmployeeTrainingRequirementsMatrix does not return all the data as expected
Solution
Adjusted query to fetch the required EmployeeTrainingRequirementsMatrix data
Term 3 report cards (#136081)
Problem
New subjects are required for the Promotion Status calculations
Solution
Added the new subjects and required translations
Request for Document Upload Report (#135925)
Problem
Data for UserFiles does not exist within the Data Warehouse
Solution
Added DataSource UserFiles within the V9 Datawarehouse package
Event Scheduling
Current Date format not as per the language set in the user's Preferred Language (#136191)
Problem
The incorrect date format is displayed (not according to the user's language preference) on the update expiry modal.
Solution
Ensure that the date is formatted according to the language preference of the user on the modal.
Implement Y-Axis (#136528)
Problem
When filtering on dates where there is no Event, the Graph filter displays a solid line
Solution
Implement a manual Y-axis for the range selector component (not supported natively)
Filter criteria styling issues (#136525)
Problem
The field increases/decreases when long/short Event names are selected.
Solution
Make sure that the filter is a fixed length. Also added a better clear button for the custom select2 component.
Add search functionality on the list page (#134969)
Problem
Load more appears when filtering events, and there are no more records to load.
Solution
Ensure that the Load More does not display when a course filter is selected. Along with this, I also fixed an issue with the date ranges on the list view and an infinite load bug which sometimes occurred on the attendance history modal.
Use a different date picker when updating the Attendance History (#134967)
Add search functionality along with a Course filter select (drop-down). Along with this, I added functionality which sets the correct locale for dayjs, so that formatting works properly for different languages (on REACT and WebMVC).
Auto Doc
Termination Date placeholder not shown in the user's preferred language (#136400)
Problem
Auto doc string dates are parsed using basic DateTime.TryParse
Solution
Rather, use CustomDateTimeConverter to improve the success rate.
Termination Date placeholder not shown in the user's preferred language (#136400)
Problem
Auto doc date placeholders were not properly formatted according to the timezone and preferred language of the user.
Solution
Ensure that they are formatted according to the timezone and preferred language of the user. Also, if a date has a value equal to the max date, ie 9999, assume that the field does not have a value (especially in the case of termination dates)
Image uploaded when signing is shown overlapping placehold fields (#135952)
Problem
Redaction was used to clear the signature placeholder before drawing the signature image. This sometimes caused a blank box to display above the signature image.
Solution
First, draw a transparent rectangle over the placeholder in order to hide it, instead of the redaction.
Additional Placeholders on Auto-Doc (#135690)
Problem
Not all the required placeholders are available
Solution
The most significant changes include correcting the spelling of a placeholder description across multiple files and adding additional user details to the document user details query.
Placeholder description typo fix:
Corrected the spelling of the placeholder description from `"jobProfiler:labels.personTeminationDate"` to `"jobProfiler:labels.personTerminationDate"` across all relevant migration files and seed data to ensure consistency and prevent future confusion.
Enhancements to document user details:
Added new fields to the `GetDocumentUserDetailsAsync` query in `UserQueries.cs` to include `EmployeeCode`, `MobileNumber`, `Email`, `IdNumber`, and `PassportNumber` in the returned user details, providing a more comprehensive data set for document user previews.
Documentation improvements:
Added a summary comment to the `CreateSeedData` method in `DocumentBuilderPlaceholders.cs` to clarify its purpose and indicate where new placeholders should be added in related services.
Learning Management
Add a Warning dialogue when saving (#136438)
Problem
Within Online Marking, when making changes to the document and the " Save " button is clicked, the document is saved directly, which could lead to missed clicks or cases where the user did not intend to save immediately
Solution
Implement a confirmation modal to request confirmation from the user if they are sure that they want to proceed and save, as the changes can not be reverted
View full-screen video not scaling (#130573)
Problem
Fullscreen api call to the browser is not allowed on the LMS portal.
Solution
Set the permissions of the LMS portal to show the video in full screen
Pathways: Subject Setup: Saving Error (#136283)
Problem
Unable to save the intervention of a subject cycle. Gives error "The weight cannot exceed 100%"
Solution
Caused by including deleted interventions in the calculation of the total weight per cycle. Filter out deleted records for the cycle and move the removal of interventions before validation
People Management
Move text to the side of the filters (#135481)
Problem
The help text displayed when searching for people was not displayed correctly.
Solution
Fixed the positioning of the people search help text. (Was working when no user was returned.) Removed unused CSS class.
Changed styling and moved help text to its own component to ensure maintainability.
Save & Go to Profile - We're Sorry Error (#135781)
Problem
A new change was implemented to have a retry count to look if the signed in users are within the people group after a user have been created, appointed or terminated. Once one of these actions is executed, it clears the cache and resets the people groups, as these groups materialise again, larger people groups take longer, which does not complete before the data needs to be fetched and displayed.
Solution
Remove the retry count as large rulesets does not complete within the time frame, instead of relying on a retry count, do a bypass validation rule and add to the TempData attribute of MVC which only persists data between one method to another method and then drops the data, so this allows to pass that value to the Edit method which now first check if validation rule must be bypassed else fallback to normal process.
People Groups
Summary shows no entries (#136424)
Problem
The summary tab does not load any entries when the page is loaded if the summary is selected by default, it only loads when the summary vertical pill is clicked on.
Solution
Load the people group user summary table on page load if it's the active tab.
HR Processes
Error shown when Process is set to use Fallback, which has not been set up on Global Workflow Fallback Configuration (#136216)
Problem
An error is shown when Process is set to use Fallback, which has not been set up on the Global Workflow Fallback Configuration.
Solution
Only allow the user to set a specific fallback type if a configuration exists for it on the ruleset (global or org node).
Ruleset Management
New tag only shown for one of the two newly created rulesets (#136328)
Problem
Newly created rulesets are missing the "new" tag, which is caused by the ruleset lifetime duration being incorrectly calculated using the CreatedDate in local time and UTC.
Solution
Ensure that the CreatedDate is converted to UTC before calculating the ruleset's lifetime duration, so the "new" tag is assigned correctly.
Can't turn off certain sections (#135322)
Problem
On Ruleset 1 (Main) - Edit functionality for sections 1- 3 must be allowed, as well as creating the section if there does not exist any for the newly added page. The user can not see when a new user guide has been created or when Ruleset 1 has been updated.
Solution
Implement change to fallback to ruleset 1 user guide section 2 and 3 if there does not exist any, also add a check to show the newly added section 2 and 3 for ruleset 1 user, and when being edited, show to the admin on edit section 2 and 3 but witha read-only state
Can't delete external link (#133097)
Problem
An error occurs when attempting to delete an external link (menu item) that has one or more themes linked to it.
Solution
First, delete the associated theme menu items that belong to the menu item & save those changes, before deleting the menu item.
Imports
Bulk Imports Failing on 10K, 20K & 50K Users to Import (#132261)
Problem
Cannot stage more than 9K users at a time. When staging 50K users, the staging query times out
Solution
This pull request introduces several improvements and modernisations to the codebase, focusing on C# collection initialisation, performance optimisations, and database query handling.
The changes enhance code readability, leverage newer C# features, and improve the robustness and efficiency of duplicate user checks during import operations.
C# Modernisation and Code Simplification:
Replaced traditional collection initialisations with C# 12 collection expressions and target-typed new expressions for arrays and lists in `UserDetails.cs`, making the code more concise and readable.
Updated empty array and list returns to use the new shorthand `[]` syntax instead of `new()`, improving clarity and reducing verbosity.
Database Query and Performance Enhancements:
Added a preliminary SQL check for the presence of staged user data before running duplicate checks in `ImportQueries.cs`, allowing the method to return early and avoid unnecessary processing when there are no records.
Increased the SQL command timeout to 120 seconds for potentially long-running queries, reducing the risk of timeouts during large imports.
Utilised collection expressions (`[.. duplicateIds]`) for returning query results, further streamlining the code.
Missing Employee (#135967)
Problem
When importing a job or position that fails in the import, the exception fails to log the error and always logs the catch failure
An error occurred trying to import Positions: Collection was modified; enumeration operation may not execute.
Whenever updating data on any entity, a DB transaction is performed when nothing else but the edited user/date is changed
When importing many records, the import starts processing before all data has been staged. The staging of import data is not performant
Solution
The most significant changes include enhancements to bulk insert/update logic for job profiles and positions, improved concurrency in user validation, more robust handling of import statuses, and optimisations in entity tracking and auditing.
Bulk Operations and Error Handling:
Implemented bulk insert/update for job profiles and positions, with detailed error handling and logging to ensure that failures in bulk operations are captured and reported in the response.
Import Status and Entity Tracking:
Added a new `StagingData` status to the `StatusType` enum and allowed the import process to start in this state, then transition to `Staged` after bulk operations complete.
Performance and Concurrency Improvements:
Switched from `List` to `ConcurrentBag` for collecting validation results in `UserDetailsValidationService`, removing the need for explicit locks and improving performance in parallel scenarios.
Query and Data Handling Optimisations:
Updated SQL queries to use `WITH(NOLOCK)` for improved read performance during imports.
Auditing and Integration Events:
Refined auditing logic to ensure only entities requiring audit are processed, and streamlined the integration event publishing flow.
These changes collectively improve the reliability, scalability, and maintainability of the import and validation processes.
Bulk Operations and Error Handling
Added bulk insert/update logic for job profiles and positions, including error handling and logging, to ensure that failed bulk operations are reported in the response.
Import status and entity tracking
Introduced `StagingData` status to `StatusType` and allowed imports to start in this state, transitioning to `Staged` after staging completes.
Performance and concurrency
Switched to `ConcurrentBag` for collecting validation results in `UserDetailsValidationService`, eliminating explicit locks and improving concurrency.
Query and data handling
Updated SQL queries to use `WITH(NOLOCK)` for better read performance during
Auditing and integration events
Admins don't have access to the required Integrations screens (#131940)
Problem
Performance Management admins couldn't perform imports on the Admin Integrations page - Learning Management admins don't have permissions to the admin gear, and so can't perform imports
Solution
Grant PM admins access to these imports:
Performance overall scores to career and succession, Survey imports and Evaluation period master data
Grant LM admins access to these imports:
Cost Description, 2 Training intervention imports, Pathway Group Note:
Some of the items in the admin group don't have gates, so a person with the link can access them and perform admin tasks.
Wrong link when exporting errors (#135078)
Problem
When exporting errors or transactions from the imports page and clicking on the link in the success snack message, it is supposed to navigate to the exports tab, but it navigates to the import tab instead.
Solution
Added the correct navigation URL to the link.
Made some code format fixes.
Missing Employee (#135967)
Problem
Custom fields are not included in the validation report.
Occupation level ID returned as the current value in the validation report.
When one item fails in a bulk insert, update all items fail.
Duplicate appointments are sent for bulk processing based on unique fields.
Addresses that have not changed always get updated.
When the email address, name or surname is null and custom steps are configured on the account, then the import fails.
Concurrent errors occur in identity processing.
When importing, the people groups are not refreshed
Solution
The main enhancements include robust batch processing for bulk database operations, expanded support for user custom fields, and improved address update logic.
Additionally, a database migration makes certain user import fields nullable for greater flexibility.
Bulk processing and error handling improvements:
* Refactored `BulkInsertUpdateAsync` in `SqlServerDbContext` to process entities in batches, catch and log errors per batch and per item, and handle concurrency exceptions with retries. Errors are collected and reported at the end of the operation.
* Enhanced audit publishing logic to exclude entities that failed during bulk processing, ensuring only successfully processed entities are audited.
User custom fields support:
Added logic to import and persist up to 20 custom user fields during user import, and updated the data model and query layer to expose these fields.
Address update logic: Improved address upsert logic to update existing addresses only when their properties differ from the imported data, reducing unnecessary database updates.
Database migration:
Added a migration to make `Surname`, `Name`, and `EmailAddress` fields nullable in the `UserImportData` table, and updated the model snapshot accordingly.
Audit and concurrency handling:
Improved concurrency conflict resolution in bulk operations by reloading and retrying updates, logging failures, and skipping problematic entities.
People Group Refresh:
When importing users, the people groups should automatically refresh
Identity and Authorisation
Not generating a new OTP for Login after the existing OTP has been used (#135555)
Problem
Using an OTP does not automatically invalidate it, as it is a time-based OTP. This results in the same OTP being sent after the existing one has been used if it's been used within the time expiry.
Solution
Update the security stamp to invalidate the used and previously issued OTPs upon successful OTP Login verification. Also updated the OTP message to match the actual time-step window.
Notifications
The HR Request Fallback Approver template has not been propagated to other rulesets (#136395)
Problem
HrRequestFallback event was not propagatable
Solution
Ensure the HrRequestFallback event is propagatable
Formatting issues on the "unread messages" email (#136368)
Problem
The wrong URL is being taken when generating the email template, as well as the translation not being used within the service
Solution
Correct URL change, and only do ToString for enum to show the name of the enum for now, as there is currently development to be able to retrieve the translations
Job Management
Job profile loads infinitely when there are 62304 positions linked to the profile (#134819)
Problem
Positions table was extremely slow with a lot of positions - this was due to the data being processed on the front-end, not a slow query.
Solution
Change the datatable to render server-side. Other changes: Allow back-end filtering on positions, including on the appointed user and position title and code. Add a custom class for JQueryDataTable params, so that it is not necessary to process the object each time in the controller action.
Location in Org displays character Entity when org name contains apostrophe (#132003)
Problem
A new tag helper have been created that will do server side sanitizing and encoding, but when a value gets selected or entered or changed cases exist where values are being incorrectly displayed and rendered on the client side.
Solution
Extend the tag helper to add a class to the control if it is used. On the client side, whenever a new value is set, it will trigger an event to first validate and encode the values, setting the correct, sanitised, and encoded text.
Performance Management
Check-in phase is open, although the PM year is locked (#136475)
Problem
When a review year setup has been locked, a manager can still navigate to the Overall section on contracts and navigate within the check-ins and proceed with interactions.
Solution
Add a check to not allow the check-ins to be clicked should the review year be locked, and show the tooltip, which is shown when trying to start an agreement
Performance Review - new members (#136426)
Problem
When Dual Participation is OFF and the manager has not yet created a contract for the employee, the employee dashboard displays the lock icon with the "Phase not started" message; it should show the Disabled View similar as to when the manager did create a contract.
Solution
Fix the condition check on whether the phase is active for the Dual Participation Off - No Contract case.
Search not working correctly when adding People Groups to linked Setup (#134227)
Problem
In the search control, when a user types in a value, it erases the text to a point where the field is empty, the results do not clear and reset.
Solution
Add an event that, when the input is empty, just triggers the clear button
Typing mistake for Copy from Another (#136420)
Problem
There was a small typo on the "Copy from another" translation in performance management.
Solution
Fixed grammatical error.
Search not working correctly when adding People Groups to linked Setup (#134227)
Problem
In the search control, when a user types in a value, it erases the text to a point where the field is empty, but the results do not clear and reset.
Solution
Add an event that, when the input is empty, just triggers the clear button
Improve error when copying from an incompatible Review Setup (#135623)
Problem
When a user contract is copied and an exception occurs, a general message is displayed
Solution
Add new translations for exception messages, as well as throw the correct message and display to the user the message that occurs.
General Comments does not have a tab on the left-hand side (#133732)
Problem
General comments are not being displayed in the left nav menu.
Solution
Implement a change to show the general comment with the correct ref, as well as increase the offset a bit so that it gets triggered when you scroll
Translations
No translation for the message that shows in a table when no data is available (#134020)
Problem
JQuery DataTable internal tokens were not translated.
Solution
Translate the jQuery DataTable tokens globally.
Product Setup
Product Setup on V9 to open the v8 menu item (#135685)
V9: Solution
Implement a change to allow on Product Setup if the Learning Store is open to post a message to V8 to open the admin modal, add a fallback that if the modal fails to open, the user gets redirected to the product setup, which was the previous flow.
V8: Solution
Implement a new change to allow the admin modal to be opened through a message being posted from the iframe within V9, add a security check to determine which domains the message is allowed from, and push back a success to V9 so that it does not default to the old way within V9.
SigniChat
Multi-line messages displayed with the "
" tag (#135973)
Problem
A new tag helper has been created, which sanitises the text to create the correct implementations for display text, but in a specific case where the last message contained new lines on the chat modal, the line breaks are displayed, which show text being overlapped on top of and below people's messages
Solution
Extend the tag helper functionality to indicate that it should remove break lines, which will remove all the break lines and replace them with just a space to accommodate this use case
The button to add new chats is still shown when discussions are disabled (#136147)
Problem
The height of the communication portal is designed to reduce white space if there are no messages to display, but still a lot of white space
Solution
Decrease the height even more to remove all the white space
Version 9.1.182 (22 September 2025)
Ruleset Management
[Custom URL] When a new ruleset is created, the Custom URL is copied from Ruleset 1 (#136300)
Problem
When copying or creating a ruleset, the custom logout URL is also copied, which is incorrect.
Solution
Do not copy the custom logout URL when creating or copying a ruleset.
[System Help Page] Can't turn off certain sections (#135322)
Problem
The logic that handles the display on newly added sections does not function in terms of the wording of the toggle
When a toggle is "on", it will only show for admin users, whereas the section will read as an example visible to all users
Solution
Add a change to rename the column to "isActive" and alter the logic to handle each section accordingly to the working and functionality intended
Preview empty (#133418)
Problem
The banner preview in the AddBanner modal on the Main Dashboard did not display a default banner (the preview before selecting any banners).
Solution
Ensuring the default banner path is correctly assigned to the image URL, as well as ensuring the default banner path is correctly returned for different environments, with multiple fallbacks.
Translations
[Translations] [Dutch] No translation for the message that shows in a table when no data is available (#134020)
Problem
JQuery DataTable internal tokens were not translated.
Solution
Translate the jQuery DataTable tokens globally
Correct the error message that displays when Nextcloud credentials can't be validated (#130098)
Problem
The error message when Nextcloud auth fails is grammatically incorrect.
Solution
Fixed the translations for the error message.
[Date Picker] Format to user language (#135450)
Problem
Date inputs were not formatting according to the user’s language.
Solution
Store the user’s date format in browser session storage (similar to timezones, but not persisted in cookies).
Add a global JavaScript event listener for date inputs.
This listener sets a data attribute on the input, containing the correctly formatted date.
CSS then uses this data attribute to display the date in the appropriate format.
Auto-Doc
Image uploaded when signing is shown overlapping placeholder fields (#135952)
Problem
Signatures on documents are not positioned correctly on the page on the placeholder after being signed by the user.
Solution
Remove the code which moved the image up and to the left, allowing the image/signature to be positioned at the correct location on the page where the placeholder is located.
Performance Management
Long period names go over the divider line (#136280)
Problem
The review survey is currently overlapping content on the timeline within the performance management dashboard
Solution
Add an ellipse tool tip to ellipse the text to a certain length and display the full name on mouse hover
Icon overlaps with the documents icon (#136150)
Problem
Tag Message Icon is overlapping icons on the perspective document folder
Solution
Adjust the icon to show inline and not overlap
Rename "Moderate" to "Moderated rating" (#129754)
Problem
The label for the "Moderate" dropdown is confusing for users, as there are a lot of variations of the word "Moderate" already present.
Solution
Rename the label from "Moderate" to "Rating" as requested.
Agreements locked when closing the browser (#135384)
Problem
When a user opens a contract, that contract is locked and another user can not open until the previous user closes the contract. But in cases where the user just closes the browser, the contract stays locked until it times out, which unlocks the contract
Solution
Implement a change to add an event that gets triggered when the user closes their browser to invoke another message to unlock the contract. Also, add a change to make use of the ref of the state, as when it gets triggered to unlock, another useState is triggered to lock it again.
Default "is Library Item" to No if left blank (#129463)
Problem
Within the Performance management template imports, if Library items and perspective columns are left blank, it must default to a false value
Solution
Implement a change to default to false values on the 3 identified columns
Handle special characters on dashboard (#132067)
Problem
On performance management, some text is not being sanitised
Solution
Make use of the new implementation helper to sanitise the text
People Management
Back button on appointment history (#135252)
Problem
When adding or editing appointment histories, the back button was taking users to the people management page instead of returning them to the specific person's appointment history.
Solution
Fixed the back button to remember where you came from and take you back to the specific person's appointment history page you were on.
Enhance Search (#135210)
Problem
Currently, if you search for an employee, it does not search in the Middle Name or Known As fields, only in Name and Surname.
Solution
Added the Middle Name field to the Materialised Users table. Then added the Middle Name and Known As field to be included within the User queries when searching from the people management page.
Double "Click here" text is being displayed with incorrect Label text (#135479)
Problem
Duplicate "Click here" text for "Not finding the person" link.
Solution
Removed duplicate "Click here" and made minor UI changes.
Preview empty (#133418)
Problem
When selecting banners in the main dashboard, after every reload before a banner is selected, the banner preview is empty.
Solution
Correctly set the default banner preview link to the default banner URL.
Sign-ins (#135213)
Show the “Sign-ins” menu item under the Audit Information tab on People Management.
No additional access rights are required
Top 200, also limit My Profile sign-ins to the top 200
Learning Management
Product Setup - Training Requirements Matrix Spelling Error in Header (#133472)
Problem
On the Training Requirements Matrix tab, the header has a spelling error: "client-spesific" should be "client-specific"
Solution
Updated the translations.
Content Management
V9 Document Signing Robustness (#135310)
Problem
When V8 sends to digitally sign a document, safety and fallback measures are put in place for cases where it can fail; some of these cases do not log against an entry in which the document failed
Solution
Implement a new entity to log errors regarding the document signing process, as well as enhance the robustness of the process to singularize the validating and uploading of a file.
SigniChat
System notification sent every 4 hours to inform a person they have unread messages (#133263)
Problem
When retrieving data from a new service, the old schema is still referenced
Solution
Update to use the new reference value
Character entity displayed for special characters (#135449)
Problem
Some places still had unsanitized text within the communication portal.
Solution
Implement the new tag helper to sanitise the text fields
The button to add new chats is still shown when discussions are disabled (#136147)
Problem
With the new implemented change to not show the dropdown of products when there are no messages, it occupies a lot of white space
Solution
Implement a change to decrease the modal height when there are no message counts
Unread counter not rendered when there were no previous unread messages (#135935)
Problem
When a new SignalR message is received, the unread counts are updated if the user has their popup open, but the product group has the incorrect ID in which tries to update
Solution
Correct the ID value to update the product count
Unable to delete a people group (#136146)
Problem
When people groups are selected to be unlinked, nothing happens, as the wrong ID is being bound for the row to be removed
Solution
Correct the row ID value to be bound correctly for deletion
The button to add new chats is still shown when discussions are disabled (#136147)
Problem
When the discussion enabled has been toggled off, users can still see the Start New Discussions
Solution
Implement a fix to parse the correct value for the case where the new discussions are being rendered
Notifications
Product names displayed as one word (#136230)
Problem
The product name within the templates is only cast to a string value instead of getting the translation to localise
Solution
Implement a change to get the correct display name of the enum
Search functionality not working (#136235)
Problem
A new change was made to do child links under sub-tabs on the left-hand side, which results in the global search functionality relying on the tab name to filter the data.
Solution
Fix the query to get the child active names that are being used within the global search
Data Warehouse
Send job completion mail (#135969)
Problem
The separate scripts for V8 and V9 are not required
Error occurs within accUserLoginStats on UAT
Solution
Adjust the V9 DWH Job Results script to cater for V8 as well
Resolved the error accUserLoginStats by excluding the V8 offline DB within UAT
Dashboards
Kudos Not Found Error (#136229)
Problem
After confirming the "Do not show this message again" modal and then navigating with the Kudos widget button, an empty page is returned, with a duplicate "spa" in the URL.
Solution
Fixed the navigation URL and removed the extra "spa".
Add pop-up modal (#133274)
Problem
A small help modal for the kudos dashboard widget is required. It should have a "Do not show this message again" prompt. The Kudos button on the people management page needs to be changed to a pill button.
Solution
Modal implemented. Do not show this message again flag stored in local storage. If the flag does not exist, the modal is opened before navigating to the people management page; else, it navigates directly to the people management page. Kudos button changed to pill button.
Imports
Errors (#136080)
Problem
When updating a user's username, sometimes the detection misses the existence of the user and attempts to create a new user
Solution
The logic for identifying new users now checks both existingUsers and existingApplicationUsers lists, ensuring that users are only created if they do not exist in either collection. This improves accuracy when importing users and prevents duplicate entries
Automated Employee Import Error (#135625)
Problem
The instance of entity type 'ApplicationUser' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values.
Solution
Refactor identity update to resolve untracked update exception
People group import to be triggered as soon as employee import has been executed (#124098)
Problem
When a user import completes, only users are imported, not the people groups, people group users and reporting lines.
Solution
This pull request updates the list of import types sent during the additional service import request in the `ImportUsersEventConsumer` class. The change ensures that more types of data are included in the import request.
General
Location in Org displays character Entity when org name contains apostrophe (#132003)
Problem
With certain text values, characters like & are generated to an encoded value, as well as an apostrophe and so forth.
Solution
Implement a new global sanitised-input tag helper that resolves this case, so that we still have limitations on what gets sanitised
Master Data
Disabled Disciplinary Transgression Items break existing transgressions that use the item (#135320)
Problem
When disabling a Transgression Type, current Disciplinary Actions using the type cannot be edited.
Solution
Ensured the Transgression Edit page can be opened even when Transgression is not active.
Version 9.1.181 (1 September 2025)
Imports
Errors (#136080)
Problem
The user import cannot transfer people due to the error Global appointment error, Failed to process transfers, details: Cannot insert duplicate key row in object 'JobProfiler.Appointments' with unique index 'IX_Appointments_UserId_RulesetId_EndDate'. The duplicate key value is (831760, 168, 2026-03-31 00:00:00.0000000). The statement has been terminated.
Solution
Change the order of the bulk insert in the appointment command to first update existing records and then add new records to avoid this conflict on the end date.
Missing Employee (#135967)
Problem
Import fails to stage more than 2100 users
Solution
Implement batching for Dapper queries when removing duplicate users for the staging queue.
Audit
Development Environment and Infrastructure for 2025 (#125158)
Problem
Sign-in history on the people profile did not receive the correct user ID, and the query which retrieved the history had a bug where it returned history for ALL users instead of filtering on the user it received.
Solution
Ensure that the correct user ID is retrieved and fix the query to always filter on the user ID.
Data Warehouse
Send job completion mail (#135969)
Problem
The package email step does not email all the execution results
Solution
Adjusted the script and added a step that will be used to retrieve the latest SQL Job results for the ExecuteSequence SSIS package
Daily Server Monitoring Checks 2025 (#125159)
Problem
The lmEmployeeTrainingRequirementsMatrix is executing very long due to the current script logic, and it refreshes all the data every day
Solution
Added a date filter to only refresh recent data and implemented a performance improvement within the SQL Script
Performance Management
[Copy from Previous] Search filters not reset, but results are (#133833)
Problem
When a user opens a modal to create a contract from another person, searches, then proceeds to cancel and reopens the modal, the results are reset, but not the search text.
Solution
Implement a change to reset the search text as soon as the results are reset and populated when the modal opens
Version 9.1.180 (1 September 2025)
SigniChat
[Communications Portal] Multi-line messages displayed with the "
" tag (#135973)
Problem
Text is displayed with encoding such as & and for new lines
Solution
Implement a new sanitise tag helper which sanitises the text and displays the output as needed
[Communications Portal] New message pulsing dot is hidden when you send a second message (#135988)
Problem
When a message is received from another user, the notification dot is toggled to display, but once another one is received, it removes itself
Solution
Implement a fix to extend the logic that if a message is received and a dot is already shown, do not remove
[Communications Portal] Unable to start a new chat when setting allows everyone to start one (#135961)
Problem
When the configuration type is set to " everyone can create a new discussion", a user still has no access, query only caters for the people group
Solution
Implement a change to allow for a check on the type of everyone or people group joined, if the user is included
Communications Portal] Rename the setting: "Everyone can start discussion" (#135968)
Problem
The phrase reads that everyone can start a discussion
Solution
Change wording to read that anyone can start a discussion
[Communications Portal] Unread counter not rendered when there were no previous unread messages (#135935)
Problem
When a message is received and the user has the portal open, the count is not increased, as the content is not rendered if the user has no unread messages
Solution
Change the HTML syntax to still render in the element, as well as update the wording being displayed
[Communications Portal] Translations not shown correctly (#135926)
Problem
Some translations were not updated to the new file format
Solution
Updated the missing file formats on some labels and headings
[Communications Portal] Owner cannot delete a group chat (#135963)
Problem
A group owner must also be able to delete a group chat if he/she is the owner
Solution
Change code check to allow deletion if the user is the owner
[Communication Portal] Pulsing red dot not removed from coms portal icon (#135372)
Problem
When a user has their chat portal open, and receives a message, a red dot indication is pulsing in the banner, but the user does have the chat already open
Solution
Implement a change to validate if the portal is open or not, and toggle the new notification depending on the state of the modal
[Communication Portal] Character entity displayed for special characters (#135449)
Problem
The discussion name value shows value for &
Solution
Implement a change to display the raw HTML name of the discussion
[Performance] [Communication Portal] Group Chat images loaded on every page (#135485)
Problem
The new group chat modal is rendered on every page
Solution
Move the modal out to only render when the new group chat is opened
[Communication Portal] Move options to start new chats to align horizontally with the add button (#135444)
Problem
When the user has no permission to create a new group discussion, the other items are pushed to the bottom
Solution
Decrease the position where it is being displayed, so that both items render in accordance with when only one does render
General UI changes (#135326)
Problem
A new translation file has been added, and not all places have been updated
Solution
Update the portal to make use of new translations. Add a check to show the total unread count, and only if there are any unread messages
Notifications
[V9 to V8 Integration][Admin][Import] Error on Import and unable to open Import Error Link (#135994)
Problem
On Import error mails, the web MVC link is used for navigation, which does not include the needed ruleset code and theme for authentication
Solution
Correct call to generate a login redirect short URL with the needed link
As a Ruleset Administrator, I want a new section for the Communication Portal under the Notifications tab (#135313)
Problem
The communication portal is currently open to any client, with anyone being able to create new chats
Solution
Implement a new setup where each client can configure their ruleset if discussions should be enabled or not, with additional new settings to allow for people groups or everyone to start new chats
General UI changes (#135326)
Problem
Currently, the modal is opened inside a wrapper, which causes it not to behave like a modal, and it needs to reload data each time
Solution
Change so that the UI reflects as a modal, keep the state of the modal content, and just display the modal as needed. Implement change to send a request to an iframe if it exists, capture the response, should there be one else follow normal process with chat. Should a value be received back from the v8 iframe? Give the option to the user to create a new chat or group chat regarding the eLearning pathway content.
Performance Management
[Performance Management][Review Year][Review Period] Check-in button giving error when outside of active Review Period (#132041)
Problem
A change was made to make the check-in dial clickable as the eye-icon for mouse over, but the condition check to allow the click was not included, which caused an error should the user click on it, even if they are not allowed to
Solution
Implement a change to move the validation check to accommodate the 2 cases where the check is needed.
Report Builder
[Report Builder][End User][Last Run Date] Last run date tooltip shows time report was last run +2 (#135938)
Problem
We calculate the DateTime value according to the client details(timezone|culture) in the server side, which is then sent to the client which includes the value 'Z' within the converted string value, indicating that the time is not local. This causes any jQuery or conversions being done to be reapplied with the current client's local timezone. So, for example, if a UTC datetime was for 10:00, after calculation in UTC+2, the time will be 12:00 sent to the UI, and after the dayjs calculation, the time will be 14:00
Solution
By removing the 'Z' will indicate to the UI that the time is local time already calculated
Ruleset Management
Warning when ruleset code/ theme key is changed (#135407)
Problem
When a login URL is used, the ruleset code forms part of the URL that many users bookmark. When the ruleset code is changed, this URL becomes invalid and breaks.
Currently, the user has no warning that this is the effect, nor is there any measure to allow bookmarked URLs with the code to not become invalid.
When the theme key also stored in the URL is changed, users will use the URL will be redirected to the default theme for the ruleset. The user changing the theme key is not warned about the impact.
Solution
When saving the ruleset management details for a new code, show a system message to inform the user that the theme URL will change.
When changing the theme key, show a system message to inform the user that the theme URL will change, and any user still using the previous theme URL will automatically be redirected to the default theme key for the ruleset
When the rulesetcode is changed, store the historic codes as a list against the ruleset in a value object. Use these codes in the app controller and identity when the ruleset ID is determined.
When the previous code is used, the theme key must also exist on the same ruleset to ensure an incorrect ruleset is not loaded that also uses the code as its new active code
When the rulesetcode cannot be found in the history,y displays a message to the user that the URL is not valid and they should contact their system administrator
Imports
Automated Employee Import Error (2) (#135625)
Problem
When a terminated user is imported without a position code, a new position is created with every import. When a terminated user is imported with a new start date and position with the same end date as the appointment, it is processed as a new appointment, causing all new appointments to fail to create.
Solution
When retrieving the position code from the existing appointments, include all appointments, not just the active appointments. When a new termination record is imported for a terminated user where the start date is before the current terminated appointment end date, handle it as a termination. Updated appointment import logic to use last appointments instead of only active appointments for transfer and new appointment calculations, ensuring no date overlaps. Refactored queries and handlers to support this, and added/updated unit tests to cover new scenarios for transfers, corrections, and overlapping appointments.
[Payroll Connectors] Client ID and option to change Client secret missing when editing existing connector (#135776)
Problem
When an integration form opens, the details are populated without the client ID, as the client ID is shared with the same ID value between payroll and PowerShell.
Solution
Implement a check as to which form is currently open and populate the client ID based on that check
Import Error (#135543)
Problem
When a schedule processes the Payspace or PowerShell scripts, the data cannot be staged due to Cannot insert a staging record without a valid OwnerUserId
Solution
Eliminated the check for a valid OwnerUserId in the UserImportStaging constructor and updated related unit tests. Also added ProcessPayroll job configuration to appsettings.Development.json.
[Payroll Connectors] Unable to add a new PowerShell script connector (#135772)
Problem
A new setting has been implemented to make use of for pay-space payroll connector, but within PowerShell, this control does not exist and therefore causes an error
Solution
Implement a null check to ensure the control first exists
[People Import] [Validation Report] Validation report populates "New Start Date In Group" when it was left blank in the import template (#134861)
Problem
When a user pulls the Import validation report, the user's Start Date of Position is used to populate the StartDateInGroup
Solution
Alter the check to make use of the correct field needed
Payspace changes to correct the appointment dates (#134132)
Problem
Start Date in the company is not mapped from Payspace
Solution
Map the employment date from the employee status API as the Start Date In Company for import
People Management
[Images] Issues with images on master (#135931)
Problem
The default list of avatar images is not shown. Initially, avatar images are fetched from Ruleset 1 if the current ruleset has none. Once an avatar picture is uploaded, it never does the fallback and then the 'defaults' are lost. Additionally, it appears as though the ruleset 1 specific content is not available on all environments, resulting in only the custom uploaded avatar images being displayed.
Solution
Always include the default avatar images in the list of available images to choose from. No longer fallback to Ruleset 1 content, but use the existing defaults avatar images folder.
[People Management]: The Load More button overlaps with People's Card (#135597)
Problem
The Load More button on the People Management card view overlaps user cards when the viewport is a certain resolution.
Solution
Removed the height specificity on the card container, causing the load more button to overlap the actual cards.
Upgrade issue (#135875)
Problem
The people group user list times out after 60s
Solution
Removal of the CTE (Common Table Expression) and restructuring the query to use a single SELECT statement, which improves readability and potentially performance.
Additionally, the query now includes organisation path information directly and sets a longer command timeout for large queries.
Query refactoring and optimisation
Removed the CTE (`cteUser`) and replaced it with a single, streamlined SELECT statement in the SQL query for listing user items. This simplifies the query structure and reduces complexity.
Moved the join to `OrgNodes` (`cnp`) directly into the main query, ensuring that the `FlattenedOrgPath` is included for each user item without requiring a secondary join.
Added a command timeout of 600 seconds to the query execution, which helps handle cases where the query might take longer due to large datasets.
[People Management]: Profile Avatar selection is not saving (#134835)
Problem
Images of file types that are not JPG are not saving when selecting and saving the profile avatar.
Solution
Fixed what filetypes can be returned and used for avatar/profile. Not in scope of ticket, but changed the allowed file types when uploading images on profile image modal. Small code cleanup. Allowed filetypes (from Image Resources) are: PNG, JPG, JPEG, GIF, and SVG (this is an exception, as we only want admins to be able to upload SVGs). Changes discussed with William. No changes affect his current work.
Translations
[Login][End User][Language] Language selection duplicated on drop down (#135774)
Problem
Language options are shown in duplicate on Login screen.
Solution
Added a safeguard to the language publishing to not add the language to the cultures cache if it already exists.
[Ruleset Management][Admin User][Default Language] Able to select a language which is not published from the Default Language drop-down (#135670)
Problem
When setting the default language for a ruleset, you can pick a culture that is Not Published.
Solution
Change the default language options dropdown to not show languages that are not both selected (available) and published
Data Warehouse
Report Issues (#135915)
Problem
The Promotion Status calculations are not calculated correctly within TermMarks
Solution
Adjusted script that will calculate the TermMarks more accurately
Daily Server Monitoring Checks 2025 (#125159)
Problem
There are no emails that return the Deploy SSIS Packages results
Solution
Created SQL Script C_03610_99999_GenerateDWHDeployJobResultsToBeEmailed that will return the SSIS Deployment Packages results
[DWH] - Remove join between datasources People and Learner records (#135282)
Problem
There is no difference between Users and LearnerRecords within ReportBuilder
There is no notification regarding whether the deployed SSIS Packages ran successfully
Solution
Added Join between Users and LearnerRecords
Added a Task to execute the SQL Job that will email the SSIS Package run results
Integrations: Bulk Additional Service Imports: DWH (#135629)
Problem
A new SSIS Package is required within the Data Warehouse to refresh the report data on its own
Solution
Created a new SSIS Package LearningManagementReport_ETL THAT contains the required tasks to refresh the school report data
Job Profiler
Job Profiler: Importing competencies (#132883)
Problem
Competency analysis is not showing the correct position information, only the first appointment record returned, resulting in older position details displaying.
Solution
Order the appointments to ensure that the latest appointment information is selected to get the current position information.
[Job Management] Copy Position Error (#135780)
Problem
Copy position gives a DataTable error due to a missing column.
Solution
Refresh the position tab instead of manually adding a datatable row, which can be unstable if the rows ever change.
Dashboards
[Dashboards] Indicate when the dashboard has no data (#133268)
Problem
No script will do a Data Integrity check for the current V10 Dashboards
Solution
Created a Script that returns the Data Integrity data
Learning Management
The training matrix page gives an error on load when the server is busy (#135799)
Problem
The training matrix page does not load at certain times when the server is busy
Solution
Replace the long-running query to populate the job profiles dropdown with ListJobProfiles
LMS Portal: Subject Setup: No Cycle 'Weight in Period' Validation (#132285)
Problem
The weights in a cycle can exceed 100
Solution
Prevent users from assigning more than 100 total weight to interventions in a cycle, improving data integrity and user experience.
Identity and Authorisation
Login Report - Not recording reset password login data (#135574)
Problem
No new login logs are viewable on the report builder
Solution
Fixed backend User reference
Tenant Management
Tenant Creation | Not receiving initial email and user not authenticated (#135653)
Issue 1
Problem
A check is being done if the tenant setup has been completed before a notification for rulesetup is sent out, but an attempt is made to send the notification of the ruleset out before the last command for tenant is called
Solution
Correct the order to first finish last tenant setup command and then proceed with the notification with the ruleset
Issue 2
Problem
When a new tenant is created, it creates a support user and a few others as well. This makes use of the bulk user import functionality, as this now requires an import ID, which failed to create users
Solution
Parse the import ID to create the new users to proceed with the tenant setup
Caching
Employee appointment/termination error (#134571)
Problem
When a signed-in user terminates a user or adds a new user, the cache/roles are cleared and re-materialised, thus causing authentication issues, which throws a we're sorry screen
Solution
Extend the duration attempt to wait as well as increase the retry count to 2 times.
Date Handling
[Date Picker] Format to user language (#135450)
Problem
Date inputs were not formatting according to the user’s language.
Solution
Store the user’s date format in browser session storage (similar to timezones, but not persisted in cookies). Add a global JavaScript event listener for date inputs. This listener sets a data attribute on the input, containing the correctly formatted date.
[People Management][Admin User][Date Fields] Date fields not populated on edit, even though dates have been captured (#135972)
Problem
The way the date formats were applied did not work on Firefox, due to the way::before was used.
Solution
Instead of using a date-attribute and applying a style on that for::before, draw a span over the date input so that the correct date format is displayed.
Version 9.1.179 (1 September 2025)
Identity and Authorisation
Login Report - Not recording reset password login data (#135574)
Problem
The following pages did not record login successes or failures: - Confirm Account Creation - Continue Registration - Disclaimer: When logging in, the disclaimer is required - External Login: When logging in with a non-existent user with the 3rd party login - Login with Recovery Code - Registration - Reset Password
Solution
Added the missing logging functionality in the backend
Learningstore redirect givesan error when logging into V10 (#135006)
Problem
When signing in via the learning store, the we're sorry screen appears. This is caused by the redirect code, which expires one month after creation.
Solution
Added logic to ensure it only expires after 10 years. Also added migrations to update existing redirect codes
Imports
Payspace: Adda setting for effective and position effective dates (#135410)
Problem
For payspace import, some clients make use of PositionEffectiveDate, where others make use of Effective date for start in group data.
Solution
Implement a new setting to save accordingly to each connector so that a client can specify as to which one will be needed for the import.
Import Error (#135543)
Problem
The import error email is not always send to the administrators when Payspace Pull, Payspace Push, Powershell Pull or the Bulk import to V8 fails. When the acctual import after the payrol connector import fails then not email is sent When Code and Name of a org is supplied as empty strings the preimport validation rejects the import incorrectly with the error Org node with code - contains no Org Name; When the Bulk import between V8 and V9 fails then no email is send to the people administrators to be aware of
Solution
Change the import to send to the people with the people admin role when 'n backend import for the import types UserDetailsImport, CustomPowershellScriptImport, PaySpacePullImport, PaySpacePushImport, BulkAdditionalServiceImport When a user does the import from the front end only they will receive the error Change prevalidation on org to only require the name when the org code is provided Auto unlock a failed backend bulk V8 import after a period of 2 hours
Bulk Additional Service Import Failed (#135542)
Problem
When the bulk additional service import is triggered, it includes the appointment history, which is currently not finished implemented in the v8 side. This then causes the import to fail, even if all the others succeeded
Solution
Remove the appointment history from the additional service import to not execute for now
User Import: Queue Users for import via the API (#133099)
Problem
When users are imported via the API, a check is done to see if there is an active report; if so, it stops the newly requested user import
Solution
Implement functionality to stage the data and be picked up by the next job process
Payspace changes to correct the appointment dates (#134132) / Birthdays dates incorrect on Main Dashboard timeline(#135175)
Problem
When pulling dates in Payspace on production, where the server's timezone is UTC dates with an offset return the UTC representation, which is not handled, e.g 1990-03-16T00:00:00+02:00" becomes 1990-03-15 22:00:00.0000000
Solution
Ensure the offset is parsed as the same date without the time component, e.g. 1990-03-16T00:00:00+02:00" becomes 1990-03-16 00:00:00.0000000
People Management
Inactive Positions (Not Published) are not being accounted for correctly by the system. (#126723)
Problem
When terminating an employee from the grid view on the people management index page, the "Keep position active" flag was not honoured, but always true.
Solution
Fix the MDBSwitch to bind value using checked instead of value, and fix keepPositionActive property name (the name of React was different from the one returned from the API)
People Management: Admin Access to Profile Fields (#135626)
Problem
The 'Assets' heading in people management does not update when the user changes the text on the frontend.
Solution
There was no translation added, and the text "ASSETS" was hardcoded. Simply added the existing matching translation
[Filter]: Default to Active Tab (#135477)
Problem
The default filter view in the ManagePeople tab is "All" and needs to be "Active"
Solution
Changed the default to "Active"
Rename 'Manage People' (#135211)
Problem
The 'Manage People' button requires renaming to 'View/Edit People', including the tooltip.
Solution
Rename the 'Manage People' English translations to 'View/Edit People'.
Display the correct Pop-up modal text (#135482)
Problem
Bug on translations displaying incorrectly. Issue is resolved, translations resources generated on master. The size of the help modal is too small.
Solution
Updated modal size, translations already working.
No Close button on the Pop-up modal (#135483)
Problem
The "Not finding the person" help modal had no close button. (Can click on the modal to close)
Solution
Added a close button.
Late Coming Warning on HRIS (#135379)
Problem
When adding a new user transgression, it displays inactive transgressions/outcomes
Solution
Only return active transgressions/outcomes.
System Access
Employee appointment/termination error (#134571)
Problem
Once a user has been added/terminated, the Redis cache is cleared, and a new call is made to materialize data as well as repopulate the user roles for the signed in user. Thus, after adding or terminating the user, the call is made to the Respective service to fetch the needed data, which requires the role of the user who is signed in, and because the roles are busy populating again, the error is thrown, which is caused by a 401 - Unauthorised
Solution
Implement a check within the /Edit path view, which the signed-in user is redirected to after they have added or terminated the user, to wait for half a second, and should the error of unauthenticated state be received and try once more.
Assessment Builder
Online Marking: Investigate (#135561)
Problem
When the ink annotation is clicked, it sets the pdf viewers state, where the user can draw, they do then need to click again to create the canvas, this can cause that they need to for each separate canvas be able to click multiple times
Solution
Implement a new solution change to create a new canvas after every mouse-up event
Data Warehouse
Daily Server Monitoring Checks 2025 (#125159)
Problem
The package failed on UAT due to the V8 DB, which does not have the UserLog table anymore
Solution
Added V8 DB to be excluded within UAT for V8 Login calculations
Discrepancies - Leaver Report (#134926)
Problem
There are fields required for the Employee Termination Report on the V9 Report Builder
Solution
Added fields StartDateInCompany and EndDateInCompany within Users - Added field IsLatestAppointment within Appointments
Remove the join between data sources, People and Learner records (#135282)
Problem
There are entries within DataSourceJoins that need to be archived
Solution
Created a Step that will archive entries within DataSourceJoins if the DataSources have been archived
Audit
Security Audit Report (#133313)
Problem
Audit export breaks sometimes from V8, as the AuditId prop does not always contain a value.
Solution
Make the AuditId DTO nullable on the V9 side, to work with null audit IDs from v8 audit data.
Content Management
009 Digital Signing Failed (#135527)
Problem
Fail notification is sent for each try to sign a document, which caused a lot of emails
Solution
Change the fail notification for signing documents to only send when the max retry count is reached.
Notifications
Cannot upload images using the uploader (#135366)
Problem
On the notification template, WYSIWYG editors when you add images to the message body or the system message body, the images do not persist after saving the template.
Solution
Store the images server-side for the notification templates to ensure they persist.
Version 9.1.178 (1 September 2025)
People Management
Employee appointment/termination error (#134571)
Issue 1
Problem
Sometimes the Were Sorry Screen is shown on the termination of people
Solution
Ensure that the backend handles concurrent processes better
Issue 2
Problem
After terminating a user and then terminating another user thereafter, a `We're Sorry` view is returned due to an authentication issue
Solution
Updated backend logic to fix the fault causing the authentication
Issue 3
Problem
After terminating a user, a `We're Sorry` view is returned due to an authentication issue
Solution
Updated backend logic to fix the fault causing the authentication issue
Add an audit export on the user's profile for sign-ins per day (#133325)
Add an audit export on the user's profile to export a report for a specific successful sign-in day
The purpose is to draw an audit report for a specific user on a date they were logged in to see what the user changed
IR data - report (#134913)
Problem
To display the user who uploaded a transgression file, the query makes use of the EditedUser; this is not ideal, as there could be instances where the edited user gets updated, which then loses the original uploader information.
Solution
Added a new UploadedByUserId column to directly set the ID of the user who uploads the document on the transgession. Added/amended with a new column where required. Added additional null handling on the transgression file details select for incase the user id is 0 (should not happen, but added to prevent the modal from breaking).
[Kudos] Image enhancements (#133277)
Problem
User story requires me to style the Kudo badges in People Management.
The cursor needs to be changed to a pointer when hovering over Kudo badges.
When a Kudo is selected, it should stand out more, while the rest of the unselected Kudos need to be greyed out.
Solution
Cursor changed to pointer upon hovering over badges.
Box shadow and border around badge when selected is now more rounded.
Selecting a badge greys out all over badges that are not selected.
[People Management] Own record should be visible (#133381)
Problem
The user card of the user currently logged in is not displayed in the "My Department" and "My Company" tabs of the people management page.
Solution
Updated search parameters to ensure the logged-in account is displayed in the "My Company" and "My Department" tabs in people management.
[People Management] Employee Card changes (#133385)
Problem
Improvements to the user cards had to be made. The name and business title will sometimes overlap with icons; this needed to be fixed.
The clickable area on the card is inconsistent and needed to be over the entire card.
The subordinate count bubble needed to be clickable on the TEAM and PEOPLE tabs.
On the other two tabs, the tooltip when hovering over the subordinate count bubble needed to display the message: "This item is only clickable in the 'MY TEAM' and 'MANAGE PEOPLE' tabs."
When clicking on the subordinate count bubble, the user needs to be routed to the Team Insights page.
Solution
The name and title text have been made smaller, and the name and title are now limited to 30 characters each.
The entire user card is now clickable instead of only the top half.
The subordinate count bubble now displays the right tooltip and is clickable on the correct tabs.
The user is successfully redirected to the Team Insights page when clicking on the subordinate count bubble.
[People Management] Panel shifting on v8 (#133406)
Problem
A panel in the Edit Person page was shifting when opening a V8 menu.
Solution
Overrode the styling that causes the issue when opening the V8 menu.
[People Management] Update filter view (#133383)
Problem
The button link slider on the grid view tab of the Manage People tab needed to be on the card view, too.
Debouncing had to be implemented for keystrokes when searching.
A modal had to be added that provided the user with tips for searching when no users are found.
Solution
The button link slider is now on both tabs, and the items are correctly ordered.
Debouncing for the search has been implemented, and the search tip modal has been successfully implemented.
Some minor UI changes have been made, as well as spelling mistakes fixed.
Imports
User Validation report not created (#135312)
Problem
When exporting the User Validation Report on the Payspace type import (which includes the failed to import data pulled from Payspace), the openxml export functionality breaks due to the dynamic objects returned.
For the failed import records, only the username and validation message are returned and not the rest of the staging data fields.
These are expected when the OpenXmlService tries to build the sheet because the other imported records do have them.
Solution
Ensure that the staged properties are always included, allowing the open xml export to correctly get the required fields for the export.
An error occurred during an import (#135315)
Problem
There are certain scenarios where the org node import has either all nodes fail, or nothing imported, then the resulting list of nodeids to refresh ends up being empty.
When the command to update the org flat path is called, if the nodeid list is empty, it ends up refreshing the paths for ALL nodes, across all rulesets, leading to potential timeouts and unnecessary refreshes.
Solution
Added a check to not do the flat path refresh if the nodeid list is empty.
Included RulesetId on the refresh query to ensure that it can only ever refresh the org nodes for the ruleset data being imported.
Org errors when Payspace/PowerShell imports run (#134958)
Problem
New validation was added to prevent a parent from becoming a child of its child.
With this change, it broke other flows where reorganising the structure no longer worked
Solution
Enhance the method to search for whether the parent moves to as a Descendant of its child
User Import: Add custom fields (#133089)
Problem
Clients import custom fields for reporting and other objectives
Clients with custom fields
Solution
V9
Add 20 custom field columns to the user import
Add to the front-end template and import
Add to the API import
Add to the PowerShell Payroll connector import
Add a table in Account.UserCustomFields to store the data with 20 columns
Add the custom fields in the export user data API
V8
Change the bulk pull of data via the integration API to receive and stage the extra custom fields
Languages
Language Preference Handling (#134859)
A user can now ONLY update their language preference on the login page - they can simply view their current language on the my preferences page on webmvc, but they cannot update it.
How it works now: User lands on the login page. Look for a cookie for the language (identity ONLY) and pre-select the language on the login page if the cookie exists. If the cookie does not exist, we pre-select the language from the default ruleset language.
When the user updates the language, we simply update the cookie value. This ensures that the language is set when the user lands on the login page again.
When the user successfully logs in, we store the language in the db (this is done really only for auditing purposes or for a fallback later on perhaps, it is not used or required elsewhere currently ). We also use the cookie (again still only on identity) and set the "locale" claim of the user, which will be stored in the bearer token. This allows us to easily send the language from identity to webmvc (and to use it there).
From now on, we read the language preference of the user ONLY from the claim while logged in. I removed the WebMVC culture cookie completely as to avoid confusion.
Notifications
Cannot upload images using the uploader (#135366)
Problem
Emails will not send when the CustomToRecipient is an empty string instead of null.
Gives error "The recipient address must be specified.: "
Solution
Modified assignment of the recipient to check for white space and null. Also corrected the assignment to customToEmail to use GetString instead of ToString. GetString will honour a null JSON value and return null, while ToString returns an empty string for a null JSON value
Search icon on communications panel header not implemented (#135181)
Problem
No implementation has been done for the search for the communication portal
Solution
Implemented search functionality to search discussions
Pulsing red dot not shown next to the chat where a new message was received (#134974)
Problem
When a user sends a new message, an indication is sent over signal r if that user has the portal open, the unread count does not change
Solution
Implement a new change to update the unread count when a message is sent, and the user has the portal open
Chats are not removed when deleted (#134857)
Problem
When a chat is deleted, it is soft-deleted within the backend, but still returns deleted chats to the user
Solution
Alter the script to not return deleted chats
You cannot create a new chat on a mobile device (#135179)
Problem
When on a mobile device, mouse hover can not be triggered to display new communication
Solution
Add a new event handler to listen for a click to toggle the items
Performance Management
KC weights displayed incorrectly when using Decimals (#135102)
Problem
On the Review Setup Templates, all the Weights are formatted to decimal count 0.00, except Key Competencies
Solution
Alter to format to the correct value to display for the key competency
Performance Management: Delete agreements returns an error message (#135305)
Problem
Some of the people lists break and shows a snack error, logs indicate a column cannot be found.
Solution
Corrected the join for the People Group Custom query items select.
Report Builder
Report Builder: Filter Operator Returning an Error (#135385)
Problem
Report filter criteria operator is getting sanitized when using > or < as the operator, causing the report generation to break.
Solution
Add report filter criteria operator and value to the exclusion list for sanitisation
DateTime Conversion (#134860)
Problem
Date formats and conversions using custom cultures and timezones did not work when executed on services other than webmvc and specifically on reportbuilder when run in a docker container.
Solution
This happened because we did not include 'icu-data-full' when adding icu-libs and tzdata in the docker files (except webmvc).
Data Warehouse
Create an API for the Training Requirements Matrix to be retrieved (#131532)
Problem
The join was incorrect between Users and TrainingRequirementsMatrix, which causesa performance issue with the DWH Package - Adjustments are required for WFA
Solution
Corrected join between Users and TrainingRequirementsMatrix - Adjustments made within lmStudentSubjects and lmTermResults for WFA
Corrected DATETIME conversion error within accUser (#125159)
Problem
The DWH package failed due to a DATETIME conversion error within accUsers
Solution
Adjusted the accUsers script to prevent DATETIME errors for the Date fields
Implement a permanent solution for Template Names within pdmContractPeriods (#134946)
Problem
The TemplateName caused confusion when it returned Int values due to copy templates changes made within the system
Solution
Added field TemplateCreatedFrom within pdmContractPeriods to identify how the template was created and only return TemplateNames that are equal to 'Template'
Tenant Usage Stats (125159)
Problem
Most of the fields did not populate within TenantUsageStats
Solution
Updated the script that will inject all the available fields from staging to the actual table
Investigate and Adjust accUserLoginStats (#134945)
Problem
The ActiveUserCounts were calculated per SchemaID and not per V8 DB Names, which is incorrect
Solution
Added the DBNAME with join within insert #AllLogins for V8 calculation
Adjusted Source Script (#125159)
Problem
The script failed due to a divide-by-zero error
Solution
Adjusted the lmTermResults_Staging script to resolve the error
Assistance with Disciplinary Action Outcomes (#135190)
Problem
Within the ReportBuilder, there is no join between Users (People) and DisciplinaryActions
Solution
Updated the DataSourceJoin script to include a join between Users and DisciplinaryActions
Updated Source Script (#125159)
Problem
The Package for accTenantUsageStats failed due to the ItemType field that has been removed from PeopleGroupUserItems
Solution
Resolved this by updating the SQL Source Script to use the new field Excluded from the table PeopleGroupUserItems
Discrepancies - Leaver Report (#134926)
Problem
Field 'HasActiveAppointment' is required within Users (People). Field 'Published' has been removed from JobProfiler Source Table
Solution
Added field HasActiveAppointment within Users that will be used to calculate if a user has an active appointment daily.
Removed field 'Published' from JobProfiles
Learning Management
Pathways: Marksheet: Remove Comment Category from the Comments (#135277)
Problem
The Comment Category is displayed in the comments field.
Solution
Remove the Comment Category from the comments field to only display the actual comment
Job Profiler
Inactive Positions (Not Published) are not being accounted for correctly by the system. (#126723)
Problem
When terminating an employee from the grid view on the people management index page, the "Keep position active" flag was not honoured, but always true.
Solution
Fix the MDBSwitch to bind value using checked instead of value, and fix keepPositionActive property name (the name of React was different from the one returned from the API)
Main Dashboard
[Banner] Preview empty (#133418)
Problem
The banner preview in the AddBanner modal on the Main Dashboard did not display a default banner (the preview before selecting any banners).
Solution
Ensuring the default banner path is correctly assigned to the image URL, as well as ensuring the default banner path is correctly returned for different environments, with multiple fallbacks.
[Main Dashboard] Changes on More Insights | Span of Control (#133375)
Problem
All reporting lines for each user on the "Span of Control" page were visible and needed to be a tooltip to prevent cluttering up the page. Position needed to be displayed for each user. When you click on a user, it needs to open their manage person modal.
Solution
All reporting lines are now tooltips when hovering over position title. Position title is now a pill next to each person. When clicking on a user record, it opens his Manage-Person-Modal.
Master Data
[Master Data] Fix display of last edited date (#133282)
Problem
Last Edited column header in MasterData data tables needs to be changed from LAST EDITED to LAST EDITED (BY USER), and the last edited table data needed to be formatted so that the dateTime is first and the user ID is last, and in brackets.
SolutionThe
Last Edited column header was changed with Signify Translation Helper. Translation JSON files updated. Formatting of column data changed to match: "DateTime (userID)".
Ruleset Management
[Ruleset Management][Admin User][New Ruleset Login] Unable to log into a newly created ruleset (#134902)
Problem
When a new ruleset is created from a ruleset where there is no default appointment type, then the first user on the new ruleset has no appointment and cannot login.
Solution
This pull request modifies the SQL query in the GetDefaultAppointmentTypeAsync method to handle cases where no default appointment type exists. The change ensures that a fallback query is executed when a default appointment type is not found.
New Functionality
Communications
As a System Owner, I want to combine Chat functionality and Inbox functionality so that this becomes the Communication Portal
Business Rules
The chat and inbox should be combined
When clicking on the icon in the header, open the chat page
All dis cussions regarding the product are shown first
Discussions about [ Product Name]
When a message was sent to a person while in a performance agreement , the context will show, for example, [Review Year Name ] | Review Period
People reporting to the manager are shown by default in the Performance Management section
Other discuss ions across all other products are also available
The context here is the Product Name
The other messages section includes
Imports
Exports
Documents
Training Requests
Leave Requests
HR Processes
When clicking on one of the other message buttons , the user will be navigated to the “old” inbox
A red flashing dot will display when there is a new message
On the icon in the header
Other messages – on the button of the tab that has a new item
New Discussions and Group Discussions can be created
Add an option to only allow Group Owners to post messages on Group Discussions
When this toggle has been selected, only the Group Owner can make posts
The people in the group will not be able to send messages and will only see the messages that the owner posts
As a manager viewing the Performance Agreement of one of my employees, I want to start a discussion with the employee
Business Rules
When clicking on the Inbox icon, the chat opens and disp lays the current employee’s / manager’s chat
The header displays the Review Year and Review Period
As a person viewing my Performance Agreement, I want to start a discussion with my manager
Business Rules
When clicking on the Inbox icon, the chat opens and displays the current employee’s / manager’s chat
The header displays the Review Year and Review Period
Version 9.1.177.5 (Support Release - 25 August 2025)
People Management
People Group list times out (#135875)
Problem
The people group user list times out after 60s
Solution
Removal of the CTE (Common Table Expression) and restructuring the query to use a single SELECT statement, which improves readability and potentially performance. Additionally, the query now includes organisation path information directly and sets a longer command timeout for large queries.
Identity and Authorisation
Learningstore redirect gives an error when logging into V10 (#135006)
Problem
When signing in via the learning store, the we're sorry screen appears. This is caused by the redirect code, which expires in one month after creation.
Solution
Added logic to ensure it only expires after 10 years. Also added migrations to update existing redirect codes
Login Report - Not recording reset password login data (#135574)
Problem
No new login logs are viewable on the report builder
Solution
Fixed backend User reference
Imports
Import Error (#135543)
Problem
When a schedule processes the Payspace or PowerShell scripts, the data cannot be staged due to Cannot insert a staging record without a valid OwnerUserId
Solution
Eliminated the check for a valid OwnerUserId in the UserImportStaging constructor and updated related unit tests. Also added ProcessPayroll job configuration to appsettings.Development.json.
Payspace changes to correct the appointment dates (#134132)
Issue 1
Problem
Start Date in the company is not mapped from Payspace
Solution
Map the employment date from the employee status API as the Start Date In Company for import
Issue 2
Problem
Start Date in the company is not mapped from Payspace
Solution
Map the employment date from the employee status API as the Start Date In Company for import
Learning Management
LMS Portal: Subject Setup: No Cycle 'Weight in Period' Validation (#132285)
Problem
The weights in a cycle can exceed 100
Solution
Prevent users from assigning more than 100 total weight to interventions in a cycle, improving data integrity and user experience.
Tenant Management
Tenant Creation | Not receiving initial email and user not authenticated (#135653)
Issue 1
Problem
A check is being done if the tenant setup has been completed before a notification for rulesetup is sent out, but an attempt is made to send the notification of the ruleset out before the last command for tenant is called
Solution
Correct the order to first finish last tenant setup command and then proceed with the notification with the ruleset
Issue 2
Problem
When a new tenant is created, it creates a support user and a few others as well. This makes use of the bulk user import functionality, as this now requires an import ID which failed to create users
Solution
Parse the import ID to create the new users to proceed with the tenant setup
Version 9.1.177.4 (Support Release - 21 August 2025)
People Management
People Management: Admin Access to Profile Fields (#135626)
Problem
The Assets heading on people management does not update when the user changes the text on the frontend.
Solution
There was no translation added, and the text "ASSETS" was hardcoded.
Simply added the existing matching translation
Identity and Authorisation
Login Report - Not recording reset password login data (#135574)
Problem
The following pages did not record login successes or failures:
Confirm Account Creation
Continue Registration
Disclaimer: When logging in, the disclaimer is required
External Login: When logging in with a non-existent user with the 3rd
party login
Login with Recovery Code
Registration
Reset Password
Solution
Added the missing logging functionality in the backend
Imports
Import Error (#135543)
Problem
The import error email is not always send to the administrators when Payspace Pull, Payspace Push, Powershell Pull or the Bulk import to V8 fails.
When the acctual import after the payrol connector import fails then not email is sent
When Code and Name of a org is supplied as empty strings the preimport validation rejects the import incorrectly with the error Org node with code - contains no Org Name;
When the Bulk import between V8 and V9 fails then no email is send to the people administrators to be aware of
Solution
Change the import to send to the people with the people admin role when 'n backend import for the import types UserDetailsImport, CustomPowershellScriptImport, PaySpacePullImport, PaySpacePushImport, BulkAdditionalServiceImport
When a user does the import from the front end only, they will receive the error
Change prevalidation on org to only require the name when the org code is provided
Auto-unlock a failed backend bulk V8 import after a period of 2 hours
People Groups
Employee appointment/termination error (#134571)
Problem
When a signed-in user terminates a user or adds a new user, the cache/roles are cleared and re-materialised, thus causing authentication issues, which throws a we're sorry screen
Solution
Extend the duration attempt to wait as well as increase the retry count to 2 times,
System Access
Employee appointment/termination error (#134571)
Problem
Once a user has been added/terminated, the Redis cache is cleared, and a new call is made to materialise data as well as repopulate the user roles for the signed-in user.
Thus, after adding or terminating the user, the call is made to the Respective service to fetch the needed data, which requires the role of the user who is signed in, and because the roles are busy populating again, the error is thrown, which is caused by a 401 - Unauthorised
Solution
Implement a check within the /Edit path view, which the signed-in user is redirected to after they have added or terminated the user, to wait for half a second, should the error of unauthenticated state be received and try once more.
Imports
Bulk Additional Service Import Failed (#135542)
Problem
When the bulk additional service import is triggered, it included the appointment history, which is currently not finished implemented in the v8 side. This then causes the import to fail, even if all the others succeeded
Solution
Remove the appointment history from the additional service import to not execute for now
Version 9.1.177.3 (Support Release - 16 August 2025)
Content Management
Digital Signing Failed (#135527)
Problem
Fail notification is sent for each try to sign a document, which caused a lot of emails
Solution
Change the fail notification for signing documents to only send when the max retry count is reached.
People Management
IR data - report (#134913)
Problem
To display the user who uploaded a transgression file, the query makes use of the EditedUser; this is not ideal, as there could be instances where the edited user gets updated which then loses the original uploader information.
Solution
Added a new UploadedByUserId column to directly set the ID of the user who uploads the document on the transgession. Added/amended with a new column where required. Added additional null handling on the transgression file details select for incase the user id is 0 (should not happen, but added to prevent the modal from breaking).
Version 9.1.177.2 (Support Release - 14 August 2025)
Notifications
Cannot upload images using the uploader (#135366)
Problem
On the notification template, WYSIWYG editors, when you add images to the message body or the system message body, the images do not persist after saving the template.
Solution
Store the images server-side for the notification templates to ensure they persist.
Imports
Payspace changes to correct the appointment dates (#134132)
Problem
When pulling dates in Payspace on production, where the server's timezone is UTC, dates with an offset return the UTC representation, which is not handled, e.g 1990-03-16T00:00:00+02:00" becomes 1990-03-15 22:00:00.0000000
Solution
Ensure the offset is parsed as the same date without the time component, e.g. 1990-03-16T00:00:00+02:00" becomes 1990-03-16 00:00:00.0000000
User Validation report not created (#135312)
Problem
When exporting the User Validation Report on the Payspace type import (which includes the failed to import data pulled from Payspace), the openxml export functionality breaks due to the dynamic objects returned.
For the failed to import records, only the username and validation message is returned and not the rest of the staging data fields; these are expected when the OpenXmlService tries to build the sheet because the other imported records do have them.
Solution
Ensure that the staged properties are always included, allowing the open xml export to correctly get the required fields for the export.
People Management
Late Coming Warning on HRIS (#135379)
Problem
When adding a new user transgression, it displays inactive transgressions/outcomes
Solution
Only return active transgressions/outcomes.
Version 9.1.177.1 (Support Release - 11 August 2025)
People Management
Employee appointment/termination error (#134571)
Problem
Once a user has been added/terminated, the Redis cache is cleared, and a new call is made to materialise data as well as repopulate the user roles for the signed-in user.
Thus, after adding or terminating the user, the call is made to the Respective service to fetch the needed data, which requires the role of the user who is signed in, and because the roles are busy populating again, the error is thrown, which is caused by a 401 - Unauthorised
Solution
Implement a check within the /Edit path view, which the signed in user is redirected to after they have added or terminated the user, to wait for half a second, should the error of unauthenticated state be received and try once more.
People Groups
Performance Management: Delete agreements returns an error message (#135305)
Problem
Some of the people lists break and show a snack error. Logs indicate a column cannot be found
Solution
Corrected the join for the People Group Custom query items select
Version 9.1.177 (11 August 2025)
People Groups
Search filter caches previous search result (#134842)
Problem
The search filter value does not clear when opening and closing modals.
Solution
Ensure that the search filter clears when opening and closing modals
Search field seems longer than usual (#134858)
Problem
The search field seems longer than usual on some of the modals
Solution
Ensure that the search boxes on all the modals are the same length
Job Grade details not included in the message (#134863)
Problem
Job Grade details are not included in the message
Solution
Ensure that Job Grade details are included in the message
Org unit change order and duplicate (#135091)
Problem
When adding Org Units to a custom PG, if the modal is only closed without adding a new unit to the PG. When reopening the modal to add then the org nodes are displayed in duplicated. When the modal is opened, the org structure is appended to the content. Close does not destroy the treeview.
Solution
Correctly destroy the tree view to ensure that when the modal is opened again, it is populated fresh.
Allow select all when clicking on "Select" to delete people from the group (#135089)
Problem
Currently, there is no way to select multiple people at once to delink them in people group management
Solution
Added new reusable logic to attach new functionality to the "SELECT" heading of the table, and once the user clicks on the heading, everyone on that page is selected. They can then remove them all simultaneously
People Group Cleared after appointing a new person (#135028)
Problem
The all people people group returns no results
Solution
Changed the destination table for user insertion from `#PeopleGroupUsers` to `#CalculatedUsers` for the "All People" group logic in `PeopleGroupsQueries.cs`. This likely aligns the "All People" group with the same user calculation process as other groups.
Data Warehouse
Report Builder: List Operator not Working on Parameters (#135074)
Problem
The attendance has not been added to the ListItemValue list
Solution
Added Attendances within ListItemValue that will populate the list dropdown for Attendances data
xAPI Report (#134665)
Problem
xAPI Data Collection was failing on some tenants due to a mismatch between the LastSyncDate and the returned statements. Some statements then already exist on the flattened xapi statement.
Solution
Added handling to check that duplicate statements are removed first before inserting any new ones.
Report cards: Mistake (#134775)
Problem
Adjustments are required as requested within StudentSubjects and TermMarks
Solution
Implemented manual updates and deletions within steps for lmStudentSubjects and lmTermMarks
People Management
Payspace changes to correct the appointment dates (#134132)
Problem
The start date in group and start date in company are not imported correctly. When only SDIC is supplied, it overrides the SDIG incorrectly. The SDIG incorrectly validates that it cannot be before the first appointment. When the start date of the appointment in the position is moved earlier, it incorrectly gets rejected because it cannot be before the current start date
Solution
Correctly map SDIG and SDIC Change check to ensure the SDIG can be completed before the first appointment date, but not after. Change the appointment check to allow appointment corrections on the start date when the position remains the same. Ensure the people group database cache is busted after import
Discrepancies - Leaver Report (#134926)
Problem
People Management Grid view load additional people fails sometimes, this happens when there is an issue on the appointment information where the termination date is before the start date. This causes the year & months worked calculation to fail.
Solution
Handle the failure when the termination date is before the employee's appointment start date by then only returning the work anniversary date and not the year/month calculation.
Learning Management
[Training Matrix Requirement]: +ADD button not responsive (#135069)
Problem
The import template has extra columns, breaking the import staging Org nodes without orgpaths are displayed on the training matrix
Solution
Replace the import template with the new version. Remove orgnodes without a path.
Rapport (#134908)
Problem
Manual adjustments for subject name are requested within StudentSubjects
Solution
Manually updated the subject name within the DWH for lmStudentSubjects
-1 save (#134762)
Problem
The user could copy and paste invalid values to the marksheet
Solution
Add Validation checks to prevent this
Content Management
[Digital Signing] [Bulk Signing] Not all documents signed (#135019)
Problem
When a file is being tried to upload and an error occurs, or credentials fail to validate, the entire method is stopped and returns File failed to upload
Solution
Implement an internal retry count of 3 times with 20seconds apart to retry to upload the file or validate the credentials, instead of failing directly.
Position title query (#134957)
Problem
When a user wants to generate a document using the autodoc feature, the position title placeholder returns the incorrect position title. This is because it does not order the appointments by the latest appointment for the user, and naturally returns the first position it finds.
Solution
Order the appointments first before retrieving the relevant placeholder information.
Event Scheduling
Typing in the cost fields does not work correctly (#134285)
Problem
Typing a value in the amount of the Costs tab table did not work properly due to rounding.
Solution
Use the custom system rounding method instead of 'toFixed(2)'
Make full line clickable, not just the > (#134884)
Problem
After saving the attendance for the session or overall, the list page does not refresh with the updated counts.
Solution
Ensure that the list page refreshes for a certain course after the attendance was updated.
Imports
Incorrect error when Parent is moved below the child (#134660)
Problem
With the new validation rule implemented to not allow new parent orgs to be defined, the error gets logged for the number of org levels there are
Solution
Implement a new check to break out of iteration for this Exception being thrown
[Integrations] [Payroll Connectors] Unable to save a new connector (#134483)
Problem
After a payroll has been soft deleted and is being created again, a validation rule applies to ensure that the connector does not exist
Solution
Enhance the logic rule to also ensure it only validates existing payroll connectors that have not been marked as deleted
User Import: Add custom steps to Account/Job Profiler/Identity (#133088)
Problem
When user-import data is being retrieved for custom steps, org levels are not being returned after level 1
Solution
Fix the naming convention of the org levels being selected
Payroll connector is not populating Job grade (#134763)
Problem
The import is blocked by address validation when the address is available in the payroll but not used in Signify
The current PowerShell connector is outdated
It is difficult to see why the actual user import is not running
Solution
This pull request introduces several changes aimed at improving validation logic, enhancing logging, updating PowerShell script templates, and refining UI elements. The most significant updates include removing redundant address validation logic, adding a new logging step for incomplete imports, modernising the PowerShell script for Sage Payroll integration, and updating UI icons for clarity.
Report Builder
Report Builder: An error occurred while processing your request. (#134450)
Problem
When a report is viewed, People Groups are populated if it has not been. When a group has a lot of users, a timeout exception can occur, which fails the report.
Solution
Enhance and modify the query to optimise for faster results. Generate a new user-friendly message to indicate that the display users are still being reloaded.
Ruleset Management
[Help Page][Edit section] Save button on Ruleset 1 not saving after editing (#134847)
Problem
When the Default ruleset has no sections, no user guides can be saved or created
Solution
Implement new checks and enhance to create user guides for creation, should the default ruleset have no user guide
Version 9.1.176 (11 August 2025)
Ruleset Management
[Help Page] Save button shows quickly, then disappears (#134850)
Problem
The button is only hidden after the data is retrieved.
Solution
Alter the flow to hide the button when a call is made
Unable to save a new connector (#134483)
Problem
After a payroll has been soft deleted, and is being created again, a validation rule applies to ensure that the connector does not exist
Solution
Enhance the logic rule to also ensure it only validates existing payroll connectors that have not been marked as deleted
Client ID and Secret fields are cleared when you edit the connector (#134480)
Problem
When the change Client Secret is toggled, the correct value should be hidden or shown
Solution
Split the correct logic and values for each element
Imports
People Management: Payroll connector is not populating Job grade (#134763)
Problem
The import is blocked by address validation when the address is available in the payroll but not used in Signify
The current PowerShell connector is outdated
It is difficult to see why the actual user import is not running
Solution
This pull request introduces several changes aimed at improving validation logic, enhancing logging, updating PowerShell script templates, and refining UI elements. The most significant updates include removing redundant address validation logic, adding a new logging step for incomplete imports, modernising the PowerShell script for Sage Payroll integration, and updating UI icons for clarity.
Incorrect error when Parent is moved below the child (#134660)
Problem
With the new validation rule implemented to not allow new parent orgs to be defined, the error gets logged for the number of org levels there are
Solution
Implement a new check to break out of iteration for this Exception being thrown
Streamline V9 to V8 sync (#126727)
Problem
When retrieving simplified data between Account and JobProfiler details, no direct call can be made within the same query
Solution
Enhance and split out the logic to the correct service to retrieve each separate data per user.
Tenant Management
System Help Page cannot save (#134332)
Problem
Administrators could not access the edit page
Solution
Administrators can always access the edit page and save button, but only the primary ruleset admins can edit sections 2 and 3
People Management
Filtering is not working (#134646)
Problem
A recent change was made to accommodate user filtering that must be cleared when logging out. Because of this, a change was not set to update the sections of clearing search values
Solution
Add a new set field to update the search filter values
Expand the people groups include and exclude functionality (#129793)
Problem
Extend people group queries to include job grades and query conditions
Solution
Split the people group admin into included and excluded sections. Each section has people, group conditions and query conditions. Add job grades to group conditions. Implement query conditions with validations and execution preview available in the account and no profiler services.
Screen preferences reset every time I log in (#132852)
Problem
When logging out, all filter criteria on people management is cleared.
Solution
Remove search criteria (filter and alphabet) from other filter criteria, store in its local storage key and clear it when logging out - which keeps the other filter criteria in the local storage - ready for when the user logs back in again.
[People Management] [Admin] Filters not stored per user (#107920)
Problem
When you switch to another ruleset on the same browser (without first logging out of the previous ruleset), the search filter criteria are pulled over into the new ruleset.
Solution
This happens because the search filter criteria is stored within the local storage, which will always be the same for the same domain, even if the ruleset differs. Make the key of the local storage contain the ruleset id, so that the filter criteria, stored in the local storage, can be unique per ruleset.
Performance Management
[PM] [Review Year] Search not working correctly when adding People Groups to linked Setup (#134227)
Problem
When the text field is being cleared, the results are not being reset, only after a new key press is done
Solution
Add a new check foran empty result to then reset the data again
SigniChat
Unable to open/initiate chat (#133060)
Problem
An 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'
Event Scheduling
Implement new Load More arrow and make it dynamic (#133668)
Problem
"Load more" arrow button displayed on the people group users modal, even though there weren't any more items to load.
Solution
Ensure that the button only displays when there are more items to load.
Training Interventions not pulling through (#134273)
Problem
Training interventions were not displayed, due to the rule set ID not being passed through to retrieve the training interventions. (Regression bug, after the GRPC method was made to [AllowAnonymous])
Solution
Ensure the ruleset ID is passed through to the service method when retrieving training interventions.
Do not wrap icons/text (#134274)
Problem
Icons and text were wrapped improperly on the status buttons for both session and overall attendance.
Solution
Improve styling and fix the improper wrapping of text.
An error appears when typing time (#134275)
Problem
An error appears when typing the time for the session manually using the keyboard.
Solution
This happened due to the validation which occurs as the user types. This is a problem because as the user types, the time might be invalid until the entire time is entered. I removed the validation which happens on the event and moved it to just before the user saves the changes.
Not all Events open and load the page from the top (#134276)
Problem
Not all Events open and load the page from the top - rather, the page sometimes jumps to the middle and focuses on the sessions accordion.
Solution
Ensure that when the details tab loads, it focuses on the first element on the page.
Completion Status page does not scroll entirely (#134279)
Problem
The overall attendance register modal had unnecessary white space at the bottom of the modal just before the buttons.
Solution
Remove the whitespace.
Pop-up does not appear on hover (#134284)
Problem
Missing tooltips and tooltips not displaying over the correct elements.
Solution
Add the missing tooltips and ensure that existing tooltips display over the correct elements.
Typing in the cost fields does not work correctly (#134285)
Problem
Typing a value in the amount of the Costs tab table did not work properly due to rounding.
Solution
Use the custom system rounding method instead of 'toFixed(2)'
The Cancel/Close button does not return the user to the previous page (#134289)
Problem
Close buttons on modals did not correctly route you back to the correct modals after switching around between modals.
Solution
Ensure that you are taken to the correct modals when switching around (opening and closing) between different modals.
Version 9.1.175 (11 August 2025)
Notifications
Due Date Notifications are not CC'ing the Parent/Guardians of the Students (#134294)
Problem
Next of kin users do not receive emails when sent from V8
Solution
Resolve the problem for CC and BCC addresses when email is sent externally
Screenshots not displaying correctly (#133883)
Problem
When no screenshot is included in the email, it still shows an image tag
Solution
Display the image if there is one, else show an error message
Data Warehouse
Daily Server Monitoring Checks 2025 (#125159)
Problem
The DWH results cannot be retrieved and emailed from Master or other clients
Solution
Created script C_03592_99999_GenerateDWHJobResultsWithinInsertEmailsToBeSent.sql that will be used to fetch and email the latest DWH Job Results
Term 2 Report Card (#133772)
Problem
Not all the new subjects are available within StudentSubjects, and the Marks are not calculating correctly for certain cases within TermResults
Solution
Added the extra subjects for Grade 10 students and corrected the Mark calculations within the task "Manually Update lmTermResults_Staging_V9
Update the existing report to show all the login data (#133324)
Problem
Extra fields are required within accUserLogins for Security Auditing purposes
Solution
Added new fields IPAddress, Browser and FailedReason within accUserLogins_Staging_V9 and accUserLogins
Learning Management
Attendance History Date-Pickers (#134520)
Problem
The calendar range picker shows incorrectly (without styling) on the attendance history
Solution
Import the Syncfusion styles correctly to ensure the calendar range picker control renders correctly.
Organisational Structure
Improve org import validation and performance (#133495)
Problem
When the save changes are called after all the Org nodes are built, and an exception occurs, all users fail and therefore cannot proceed to import the rest of the identity
Solution
Make a change to save per user in the org, and if that fails, fail that user instead. Change how the org nodes are built up with a more generic approach to improve performance
People Management
Avatars and Profile Images settings (#134522)
Problem
The Image Resources settings handling the display/upload of Avatar images were also affecting the profile image selection and upload.
Solution
Removed the if check determining the display of the Profile Picture selection and upload, as this must ALWAYS be visible and not be affected by the Avatar settings.
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.
Performance Management
PM Manager not correct on Print View report (#134451)
Problem
On the contract print preview, the performance manager is not displayed correctly.
Solution
Fix the print preview page to correctly display the user's performance manager
Wage performance reviews (#134309)
Problem
When Dual Participation is disabled, the manager cannot copy Manager Ratings to Final.
Solution
Remove dual participation limitation on the check that determines whether to allow copying ratings to the final
Imports
Exception Errors (#133141)
Problem
When syncing data from PaySpace, the employee's position effective date is used as the position start date rather than the Effective position date. Everytime an appointment is changes on Payspace, regardless if it influence the position or dates, a new appointment is created. The OFO codes are not used but differs between companies for the same job code, causing validation issues.
Solution
This pull request introduces enhancements to the `PaySpaceUserDetailsExportCommandHandler` class by adding configuration support and refining logic for handling OFO codes and user details. Key changes include the integration of a new configuration setting, improved conditional checks, and updates to user detail mappings.
User Import: Add custom steps to Account/Job Profiler/Identity (#133088)
Problem
When running imports through the services for Account, JobProfiler and Identity, data is being processed and handled through business rules, but no additional to handle special cases per ruleset
Solution
Add custom import steps for pre and post import per service to handle the different cases, should there be an existing script to handle a ruleset's special conditions.
Identity and Authorisation
Default displayed language not applied from the Login page (#132901)
Problem
Upon user sign-out, all cookies and identification data are deleted. As a result, the login screen cannot be rendered properly due to the absence of necessary context, such as language preferences.
Solution
Introduce a new cookie during user login to store the user ID. This identifier can then be used to retrieve the appropriate language settings. After setting the cookie, the page should be reloaded to apply the updated configuration based on the new cookie.
Tenant Management
System Help Page cannot save (#134332)
Problem
Users can access the edit page for system feedback on other Rulesets
Solution
Prevent seeing the edit button if not on Ruleset 1
Version 9.1.174.3 (Support Release - 31 July 2025)
Ruleset Management
Save button on Ruleset 1 not saving after editing (#134847)
Problem
On rulesets other than the default, User Guides could not be updated or saved, as it was using the User Guide of the default to try and update
Solution
Implement and enhance the User Guides to be able to create a new Guide and its configuration for that ruleset, referencing the needed data from the default ruleset
Imports
People Management: Payroll connector is not populating Job grade (#134763)
Issue 1
Problem
The import is blocked by address validation when the address is available in the payroll but not used in Signify
The current PowerShell connector is outdated
It is difficult to see why the actual user import is not running
Solution
This pull request introduces several changes aimed at improving validation logic, enhancing logging, updating PowerShell script templates, and refining UI elements. The most significant updates include removing redundant address validation logic, adding a new logging step for incomplete imports, modernising the PowerShell script for Sage Payroll integration, and updating UI icons for clarity.
Issue 2
Problem
Not all fields are mapped from a PowerShell script.
Solution
This pull request enhances the ProcessPowerShellPayrollConnectorsCommandHandler class by extending the user data mapping logic to include additional fields. These changes improve the comprehensiveness of the payroll processing functionality by capturing more user attributes.
Learning Management
-1 does not save (#134762)
Problem
When overriding is enabled on the Mark Interventions, we only save the marks if they are manually entered. If we copy and paste values, the marks for those students are not flagged as overridden. Please note that entering '-' also does not set the override flag
Solution
Replaced the logic that is used to determine if a user's mark has been overridden. Allowing copy and pasting when the Mark Interventions are set to auto with override enabled
Cannot add comment for learner (#134761)
Problem
Copy and paste text that contains text that starts with a month name.
It automatically switches to date and time format `DD/MM/YYYY`
Solution
Set the format to be text only for comments and Numbers only for Marks
HR Processes
HR Processes emails (#134452)
Problem
When the Request Workflow levels are set up in such a way that the direct next level approver is the same as the current approver, the next level is auto approved as well. In this case, the notification howeve,r is not sent should there be a subsequent approver, since the request's current approval level does not take into account those levels that have been auto-approved.
Consider workflow: Level 1 - Line Manager is Approver Level 2 - Specific Position E.g. Hr Admin Level 3 - Specific Position E.g. CEO
If the originator of the request's line manager is also the Hr Admin, then when the Level 1 approval happens, Level 2 is also approved automatically.
The notification, however, sends through the current approval level (Level 1), and the recipient is retrieved for the next level (Level 2). The Hr Admin then ends up receiving two emails, and the CEO never receives the email (although the request correctly falls into their queue).
Solution:
Ensure that the current or subsequent next level approval is sent to the notification event to ensure the correct level approver recipient is retrieved.
Version 9.1.174.2 (Support Release - 24 July 2025)
Learning Management
Attendance History Date-Pickers (#134520)
Problem
The calendar range picker shows incorrectly (without styling) on the attendance history
Solution
Import the Syncfusion styles correctly to ensure the calendar range picker control renders correctly
People Management
Avatars and Profile Images settings (#134522)
Problem
The Image Resources settings handling the display/upload of Avatar images were also affecting the profile image selection and upload.
Solution
Removed the if check determining the display of the Profile Picture selection and upload, as this must ALWAYS be visible and not be affected by the Avatar settings.
Tenant Management
System Help Page cannot save (#134332)
Problem
Users can access the edit page for system feedback on other Rulesets
Solution
Prevent seeing the edit button if not on Ruleset 1
Version 9.1.174.1 (Support Release - 21 July 2025)
Imports
Exception Errors (#133141)
Problem
When syncing data from PaySpace, the employee position effective date is used as the position start date rather than the Effective position date. Every time an appointment is changed on Payspace, regardless of whether it influences the position or date, a new appointment is created. The OFO codes are not used consistently across companies for the same job code, resulting in validation issues.
Solution
This pull request introduces enhancements to the `PaySpaceUserDetailsExportCommandHandler` class by adding configuration support and refining logic for handling OFO codes and user details. Key changes include the integration of a new configuration setting, improved conditional checks, and updates to user detail mappings.
Version 9.1.174 (21 July 2025)
Performance Management
Action Plan section and General comment sections not always 'open' (#134363)
Problem
The previous applied fix allowed adding action plans/comments had condition checks reversed.
Solution
Corrected condition check to correctly reflect setting on whether allowed to add/edit AP / Comments.
Action Plan section and General comment sections not always 'open' (#134363)
Problem
Action Plan items and general comments can not be added when period phases are inactive
Solution
Add a new configuration check to do a validation check by ignoring the phase validation, to be able to add the action plans and general comments
Report Builder
Selected field on report when data table box is deselected already exists when (#132340)
Problem
When clicking on the Data Source checkbox to include all the available fields, a snack error is shown indicating that a field has already been added to the report.
Solution
Added an existence check when adding the entire data source fields to skip the field if it has already been included in the report.
Imports
Due Date Notifications are not CC'ing the Parent/Guardians of the Students (#134294)
Problem
Next of Kin import api call fails
Solution
Resolve the problem in the case of null email addresses for next of kin, as api call response does not support null values
Learning Management
Product Setup for Learning Management and V9 Error Log (#134245)
Problem
On one ruleset, the Training Intervention Codes are null, and this causes the view model to throw exceptions when the user tries to access the product management page.
Solution
Added null handling when the Training Intervention Codes are received from the DB.
API / Themes
Themes set for menu item on V9 not imported to module on V8 (#134336)
Problem
When no Secondary Colour is set for a theme, it is saved as NULL. When then fetched externally (V8 theme sync), it returns as null, but the LESS theme generation on v8 expects there to be a secondary colour.
Solution
By default, the secondary colour to Black (000000) if no secondary colour is chosen for the External List Themes API call. The system sets this to default on the front end if the secondary is not specified.
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
When the cookie is reattached for the period to re-render the login screen, the cookie does not exist on the identity sign-in
Solution
Update the cookie to be shared in this case of the sub-domain to be retrieved
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.
Version 9.1.172 (21 July 2025)
Imports
Payroll sync with ITS (#133878)
Problem
When auto-processing PowerShell connectors, the connectors fail to complete due to the parallelism
The PowerShell command is not robust, and any failure fails the whole import on all rulesets
Solution
This pull request refactors the ProcessPowerShellPayrollConnectorsCommandHandler class and simplifies the validation logic in the UserImportStaging domain model.
Key changes include replacing parallel processing with sequential loops, adding error handling for PowerShell script execution, improving logging, and removing redundant validation methods.
System Access
Add terms of use to the login page (#133812)
Problem
Terms of use are not on the login page
New URL for terms of use
Solution
Add terms of use to the login page and update the R1 default to the URL
Add a fallback to R1 from other rulesets when their own URL is not defined
Errors encountered on V9 (#133655)
Problem
When the user has opened the themed login URL and then opens the support login, the redirect is a fully qualified URL, whilst if the user only opens the support URL, then the redirect URL is local
Solution
Updated the redirect behaviour in SupportLogin to use Redirect for absolute URLs and LocalRedirect for relative URLs, ensuring correct handling of external return URLs after support login.
People Management
Mobile app update (#132947)
Problem
Not all required file types are supported.
Solution
This pull request updates the configuration for allowed file types in the `appsettings.json` file to expand the range of supported formats for content management.
### Configuration Update
*Expanded the `AllowedFileTypes` list to include additional image, audio, video, document, and archive file formats, such as `.ics`, `.vcs`, `.bmp`, `.tiff`, `.webp`, `.heic`, `.wav`, `.aac`, `.flac`, `.ogg`, `.m4a`, `.wma`, `.avi`, `.mov`, `.mkv`, `.wmv`, `.flv`, `.webm`, `.xlsm`, `.csv`, `.ods`, `.odt`, `.dot`, `.dotx`, `.mdb`, `.accdb`, `.ppsx`, `.odp`, `.txt`, `.rtf`, `.md`, `.zip`, and `.rar`.
"Transfer Employee" buttons display when you click on the "Appointment" section heading (#133827)
Problem
When editing a person in people management, the user clicks on the appointment tab, the children are revealed, AND the footer for transfer employee, etc., is also revealed, even though the appointment page is not loaded.
Solution
Added JavaScript to determine if the tab is a sub-tab or a parent tab and only reveal the footer when a sub-tab is clicked. EXCEPT for the summary tab, which does not have any "children", the footer can directly show when this element is clicked.
Tenant Management
[Mentoring & Coaching] Banner Heading Changes (#121985)
Problem
Mentoring and coaching were incorrectly displaying Learning Management for their banner
Solution
Fixed the incorrect product mapping
[System Summary] 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
Performance Management
[PM] [Contract Locking] Contract not locked if you impersonate employee while contract is open (#132933)
Problem
When a manager opens an agreement, then in another browser impersonates that user as well, the agreement is not locked
Solution
Fix code check when agreements are loaded to also include logic check for impersonated ID as frontend does on hubConnection
[PM] [Evaluations] "Other People to Evaluate" section of logged in user shown when impersonating employee (#133436)
Problem
When navigating to Impersonate a user for PDP, no indication is shown of the people that the user must evaluate and instead shows the logged-in users to evaluate
Solution
Parse the impersonating user to retrieve the users they must evaluate, rather than the person signed in
Portraits are not round in the "Other People to Evaluate" section (#133439)
Problem
When entering a contract and clicking back, the evaluations are no longer round but oval. There was a styling extension set to d-flex on that page component, which pulled through when clicking back which applied to all the d-flex there as well.
Solution
Change the class name which extends the base but only applies to the new name, which will not apply to the base class d-flex
Added to group SA HR Support (#133539)
Problem
When a template has KPI / KPA custom items that have the exact same name, the contract is created with the section items linked. Leading to a similar issue as previous where changing 1 item affects all of them. This is restricted on a per contract basis, so at least won't affect across contracts.
Solution
Added used Ids list that populates when assigning the ids for the new custom section items, ensures that used Ids are not accidentaly assigned to all section item that have the same name.
Content Management
Document does not get attached on the first attempt (#133862)
Problem
When selecting the upload document, selecting a file, closing the modal, and then reselecting the same file, the file does not get selected not bound to it.
Solution
When clicking close modal, the file is not cleared, and therefore is seen as selected, so no file change event triggered
Notifications
Strip HTML from SMS Templates before sending SMS (#129165)
Problem
SMS links display HTML tags
Solution
Did not include HTML tags when sending an SMS
Version 9.1.171 (21 July 2025)
HR Processes
Consecutive step approver update (#126525)
Problem
When a user who is the Approver for two consecutive steps clicks to approve the first step, the second step should be automatically approved.
Therefore, the button for the second step should be disabled and not show a hand cursor to reflect this behaviour.
Solution
Adding a new list that tracks the usernames of previous individuals who have been requested to review an HR Process.
If this user is already in the list (They were requested to review multiple times), give the second or third or nth Approve button for this user a disabled appearance/functionality.
Learning Management
[Shared Links] Links do not open the Pathways (#132844)
Problem
Shared Pathway links don't open; instead, they display a 'Not Found' error. A malformed URL causes this.
Solution
Avoid adding empty redirect URLs to the query string because it causes the query string to have duplicates.
Duplicates create an invalid resulting URL.
Cycling between Cycles does not display appropriate Training Interventions (#133590)
Problem
Cycle selection is not updating the training interventions on the marksheet
Solution
Extended the ListMarkSetupAsync method in ILearningManagementQueries and LearningManagementQueries to accept an optional cycleId parameter, allowing filtering by cycle.
Updated LearningManagementServiceV1 to use the new parameter when retrieving mark training interventions.
Unable to save Marks on Marksheet (#133653)
Problem
No marks are displayed with the new cycle navigation when saving the marks
Solution
Updated ILearningManagementQueries to include an optional cycleId parameter in ListStudentMarksAsync , enabling filtering of student marks by cycle.
Modified the implementation in LearningManagementQueries to incorporate this new parameter in the SQL query.
Notifications
Tenant Subscription emails (#133709)
Problem
The Tenant overdue / expiry emails are not getting sent out. It fails with the error "_An invalid character was found in the mail header: '"'.
The issue is that the Calculated / CC recipient is stored in the email to be sent table as "CustomToEmailCC": "will.madg@gmail.com", which then fails when trying to add that as an email address.
Solution
Corrected the assignment of custom notification fields by using the element.Value.ToString()instead of the element.
ToString(), ensuring the correct values are extracted.
Added continue statements after each assignment to improve loop efficiency.
Sections 2 and 3 are not displaying on the Edit Help Page (#133175)
Problem
The feedback label was linked to the button, making it clickable.
The edit functionality had no save button visible, and even after being visible, it did not work for inserting
Wording for the headers was outdated
Solution
Label: Removed the for "btn-feedback" tag
Edit functionality: Adjusted JS logic to show the relevant controls for the different stages and added logic to account for newly inserted records for UpsertUserGuideConfiguration by first saving the inserted records and then triggering the methods with their materialised IDs
Also, replaced the forced not null statements with proper accounting for null values
Report Builder
Curl-Request - when valueStrings is null, it should return as null instead of "" (#133581)
Problem
When generating the report builder curl file, if the ValueString are empty, it fails on the GRPC side
Solution
Parse in NULL instead of an empty string
Report results API (#130102)
Problem
When clients require API integration to retrieve data similar to what they see in the report of report build we need to build custom APIs for each request.
Solution
Create an API to retrieve the report builder results for any Report Builder report via a single API
Data Warehouse
Stats from DWH (#132930)
Problem
The Login Stats need to be added within the DWH
Solution
Added the UserLoginStats datasource to the V9 Datawarehouse Package
Years of service report (#133024)
Problem
Field YearsOfService is required as requested by the client
Solution
Added new field YearsOfService within Appointments
Add settings to PackageSettings to disable modules (#133513)
Problem
V8 and V9 require their own FullRefresh column within PackageSettings
Solution
Added new fields V8FullRefresh and V9FullRefresh within PackageSettings
Imports
Exception Errors (#133141)
Problem
A new change was added to log more detailed information about certain data failures, but this is not an error, and therefore, this is shown as errors on the import with a high count
Solution
Add a new import type table of warnings, to log there instead of warnings, as it is not considered an import error
Added new Command to Log Import Warnings, updated Payroll command to log warnings when needed, added migration to create the table
[V9 to V8 Images][End User][Profile Images] Images not being displayed across modules (#132909)
Problem
The generation of the user image file name is per ruleset, and to timely to complete for the 140 rulesets on production.
If any user cannot be found, the process fails.
Solution
Refactored UpdateAllUserProfileImageFileNames to accept multiple ruleset IDs instead of a single one.
Updated the gRPC and proto definitions accordingly across all affected services.
Improved error handling and logging for batch updates.
Performance Management
Handle special characters on dashboard (#132067)
Problem
When special characters are entered or returned, such as &, it will be shown instead of the & character
Solution
Add a case to convert text and check for any special characters
Improved and split out to a new component for sanitised text for spa pages
Moderated agreement not shown as moderated on dashboard (#132770)
Problem
When moderation has been sent for quality assurance, no in-progress indication is shown on the dashboard
Solution
Add a new check that, when sent to Quality Assurance, shows Moderation In Progress
New Development - Performance Management
Show fewer people on the Other People to Evaluate Section (#132590)
Problem
When you need to evaluate others on Performance Management, the area displays:
Solution
Show the first 5 people with a “Click to view more…” option
When clicking, open the Evaluation page
Show anonymous ratings to the employee (#132553)
New requirement
We want staff members to see the scores as well. Essentially, what managers see, we want staff to see.
Suggestion
On the Anonymous setting, add another sub-setting:
Show the comments and ratings anonymously (Manager and Employee will see the ratings and comments submitted)
New Development - SigniChat
[Ruleset Setup][Integrations][Chat Bots] Add helper text for Main Dashboard Bot Code (#116457)
Added Helper Text for the Main Dashboard Bot Code to indicate where the Bot will display
Add the Bot under the Inbox icon as well
New Development - Event Scheduling
Event Scheduling: Mark Attendance (Phase 2) (#129927)
User Story 1 – As an Event Administrator, I want to update the most relevant session’s attendance for an intake group
On the list of Events, click on the button to mark attendance
On the next page, the attendance can be updated
An option to mark all as Attended is available
User Story 2 – As an Event Administrator, I want to update the overall completion status for attendees
To see the Overall Status per event, click on the button under Overall Status
Sessions attended are shown
Overall Status can be updated
An option to mark all as completed is available
The Competent Status is also available
User Story 3 – As an Event Administrator, I want to see the event costs per attendee and update the cost
The Training Intervention cost can be updated (if applicable - dependent on the Event Costs settings)
User Story 4 – As an Event Administrator, I want to view the historical attendance register
On the list of events, select the View Attendance History icon
From here, the attendance for the sessions is shown
A session can be updated
User Story 5 – As an Event Administrator viewing the historical attendance register, I want to add a session
TBC
User Story 6 – As an Event Administrator viewing the historical attendance register, I want to add a new attendee
TBC
Version 9.1.170.3 (Support Release - 11 July 2025)
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 an 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.
People Management
Switching profiles on PM (#131168)
Problem
Getting an error when viewing people's profiles
Solution
Improve performance on checking whether the person being viewed is in the admin's active people group
System Access Issue (#134130)
Problem
When a ruleset has multiple location master data records, the people edit page breaks between different users 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
This pull request 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.
Cannot access employee (#133837)
Problem
Busting the cache doesn't always clear all the cache because we wait for the task to finish execution
When setting cache, we don't wait for the response, but always use a false response, which causes ambiguity in logs
Solution
Wait for the cache to be busted
For some master data methods, use the default behaviour of waiting for the actual response after setting the cache
Imports
Payroll sync with ITS (#133878)
Problem
When auto-processing PowerShell connectors, the connectors fail to complete due to the parallelism
The PowerShell command is not robust and any failure fails the whole import on all rulesets
Solution
This pull request refactors the ProcessPowerShellPayrollConnectorsCommandHandler class and simplifies the validation logic in the UserImportStaging domain model. Key changes include replacing parallel processing with sequential loops, adding error handling for PowerShell script execution, improving logging, and removing redundant validation methods.
System Access
Support URL not working (#133655)
Problem
When the user has opened the themed login URL and then opens the support login, the redirect is a fully qualified URL, whilst if the user only opens the support URL, then the redirect URL is local
Solution
Updated the redirect behaviour in SupportLogin to use Redirect for absolute URLs and LocalRedirect for relative URLs, ensuring correct handling of external return URLs after support login.
Add terms of use to the login page (#133812)
Problem
Terms of use are not on the login page
New URL for terms of use
Solution
Add terms of use to the login page and update the R1 default to the URL
Add a fallback to R1 from other rulesets when their own URL is not defined
Version 9.1.170.2 (Support Release - 9 July 2025)
People Management
[Kudos][End-User]: An error when sending a Kudo with a customised message (#133771)
Problem
The user is unable to send a Kudo to a colleague. Recently, there has been a change which removes the "given_name" key from the _identityService authentication. Kudos directly uses Given Name, which caused it to not work anymore
There is a duplicate auto-complete tag on the login page for the password input. Removed the "off" setting
Solution
Use the username instead of the given name
HCO | New Tenant Creation | Errors (#133954)
Problem
When a user with the people admin role and "Manage my data" active edits their own profile, any non-required fields on the summary or profile pages are marked as required.
Solution
This pull request refines the conditional logic in the _ProfilePersonal.cshtml and _Summary.cshtml files to improve clarity and ensure consistent behavior when determining the visibility and editability of form fields based on user permissions and requirements.
Ruleset Management
[Translation] Add nl (Dutch) to the system - v8 and v9 (#133891)
Problem
The language is not available for translation in the system
Solution
Add nl (Dutch) to the system
Imports
User Import: Add rules to the import sample sheet (#134071)
Problem
No description of the rules of each column in the user import
When data is provided for a column without a heading, then the import fails obscurely
Solution
This pull request introduces improvements to the CreateListFromExcelStreamV1 method in src/Web/WebMVC/Services/OpenXMLService.cs to enhance code clarity and ensure data validation when processing Excel files. The most important changes include adding comments for better readability and implementing a check to avoid adding invalid or empty property names.
Code readability improvements
Added a comment explaining the purpose of retrieving the first sheet from the workbook part's Sheets collection to clarify its role in worksheet data processing
Data validation enhancements
Introduced a check to ensure that values are only added if the corresponding property name (header) is not null, empty, or whitespace, preventing invalid data from being processed
Version 9.1.170.1 (Support Release - 2 July 2025)
Performance Management
Moderated agreement not shown as moderated on dashboard (#132770)
Problem
When moderation has been sent for quality assurance, no in-progress indication is shown on the dashboard
Solution
Add a new check that, when sent to Quality Assurance, shows Moderation In Progress
Data Warehouse
Add settings to PackageSettings to disable modules (#133513)
Problem
V8 and V9 require their own FullRefresh column within PackageSettings
Solution
Added new fields V8FullRefresh and V9FullRefresh within PackageSettings
Imports
Organisational Structure Not Reflecting in Target Audience (#133417)
Problem
The reference to the import API was incorrectly pointing to Rapax, leading the V8 additional services imports not to report as completed.
Solution
Corrected the Import api proto reference. Already corrected on Master.
Version 9.1.170 (30 June 2025)
Data Warehouse
Add settings to PackageSettings to disable modules (#133513)
Problem
Other clients do not use all the modules within the system, which will cause the DWH to fail
Solution
Added extra settings within PackageSettings to enable or disable Modules to be run within the DWH
Learning Management
LMS Portal: Marksheet: Save does not work when entering and Removing Input in an Empty Row (#132306)
Problem
When adding a value in a cell where there is no user, the marksheet can not be saved, even after removing the value
Solution
Add new validation to ensure that the row has a user before taking any value to save
Only show First Name in comments (#133519)
Problem
The full name displays instead of only name
Solution
Change the full name on the marksheet to only display the name
Version 9.1.169 (30 June 2025)
Tenant Management
Using Commas rather than periods causes loss of field data (#132987)
Problem
When a "," is used to update decimal values of a field, the values are lost
Solution
Convert commas to dots for consistency
System Access
The default displayed language is not applied from the Login page (#132901)
Problem
The list of languages on the login screen always had the first alphabetical item in the list set as the selected value
Solution
Try to get the User's preferred language from their cookies and fallback to the UI culture (most likely en-GB in most cases) if the cookie does not exist
Imports
Default Timeout for HttpClientWrapper to 5 minutes and remove option to set after initialisation (#132811)
Problem
Since only one HttpClient is used and injected, its properties cannot change once any requests have been made. There are instances where the timeout is tried to be set after the HttpClient has already processed a request. This results in an error of " This instance has already started one or more requests. Properties can only be modified before sending the first request"
Solution
By default, the HttpClient instance has a timeout of 5 minutes when it is initialised.
Notifications
Port and Time Out text box labels incorrect (#102607)
Problem
When the page is displayed, the Port and Time Out text box labels have the border box drawn through the label.
Solution
Change the floating labels to normal labels
Report Builder
[Report Builder][Admin User][Delete] Delete click area to be increased (#132803)
Problem
Currently, the delete button is very small, and if you click a little off the icon, the Report's details are opened, which is not ideal.
Solution
Increase the "My report builder" report delete button size
Previously deleted report imported by new user shown as previous user being the owner (#133015)
Problem
Previously deleted report imported by a new user is shown as the previous user being the owner.
Solution
Ensure that the user who imported the report shows as the owner of the imported report.
[Report Builder][End User][Date Format] Date format (English SA) not being applied on report (#133070)
Problem
User culture was not always used in the report builder report results for date fields.
Solution
This happened because when we checked for a date field before formatting according to user culture and timezone, we did not check for "datetime2" fields.
Performance Management
Unable to start Period 2 on a Bi-Annual setup (#133387)
Problem
When starting a contract in the second review period,
Solution
Added null values when copying a contract for the action plan items of training interventions that need to be bound
Linked setup items go over the edge of the card (#120465)
Problem
When the Review Setup name or description has a lot of content, it pushes off the columns to the right, which causes the page to have a scroll and not be within the card
Solution
Add a new wrapper around to scroll within the card, and not allow the page to grow horizontally.
Version 9.1.168 (30 June 2025)
Performance Management
[Recalculate Scores] Results include deleted contracts (#133399)
Problem
Deleted contracts are being retrieved when selecting the contract to recalculate
Solution
Exclude deleted contracts
[Recalculate Scores] Search filters reset after recalculation (#133038)
Problem
When agreements are selected to recalculate, selections are cleared because the new score might not show directly.
Solution
Add a message indicating that recalculated scores can take up to 5 minutes to display
Key Competencies do not get highlighted when scrolled to (#133092)
Problem
When the user is in the check-in phase and scrolls down, it does not hit the last section and highlight the nav menu on the left
Solution
Resolved case to increase offset to ensure the section gets hit to highlight on the nav menu
Linked setup items go over the edge of the card (#120465)
Problem
When the Review Setup name or description has a lot of content, it pushes off the columns to the right, which causes the page to have a scroll and not be within the card
Solution
Add a new wrapper around to scroll within the card, and not allow the page to grow horizontally.
Tenant Management
Unable to delete the tenant, which could not be created from the list (#133126)
Problem
We were unable to delete a tenant that could not be created from the list due to the delete modal not being initialised correctly at times.
Solution
Remove the data-mdb-toggle="modal" and data-mdb-target tags from the button to ensure that the modal always initialises and displays correctly (this causes the modal to display automatically without having to bind a click event). Also, bind the click events directly on the document so that we don't have instances where we try to bind the event before the elements are rendered on the page.
Report Builder
Condition button missing on first Filter By entry (#133101)
Problem
The Condition button is removed from the first Filter By entry on the Filtering canvas.
Solution
Move the condition column to the left
Learning Management
[Shared Links] Links do not open the Pathways (#132844)
Problem
Shared Pathway links don't open but give a Not Found error. This is caused by a malformed URL.
Solution
Avoid adding empty redirect URLs to the query string because it causes the query string to have duplicates. Duplicates create an invalid resulting URL.
Version 9.1.167 (30 June 2025)
Data Warehouse
As a Report Builder Administrator, I want to have the audit data in the DWH so that I can create a report for the recalculated scores (#130423)
Problem
The new recalculated score fields are not available within the Report Builder
Solution
Added the new recalculated score fields within the Report Builder (DWH)
New Scorecard Status Report (#127073)
Problem
The DWH did not exclude disabled years when generating the list dropdown values
Solution
Adjusted the DWH package to exclude disabled years for list dropdown values
Add additional fields to accTenantStats (#132864)
Problem
Extra fields are required within accTenantUsageStats as requested by Marinus
Solution
Added Extra fields within accTenantUsageStats
Ruleset Setup | Image Resources
Unable to upload Banner Image (#133162)
Problem
The file name included in the directory creation is causing issues with the image stream
Solution
Only used the directory in creation
Report Builder
Date Parameters Logic vs Results (#132813)
Problem
When date filters were being applied, it would also consider the time and thus end up being inconsistent and unintuitive
Solution
The date filters should only consider the date value, not the time at all
[Value Text Box] Value text box is not emptied when changing the operator to 'list' (#133110)
Problem
When the operator is changed to 'list' after already inserting text into the 'Value' text box, the box is not emptied when selecting the 'list' type operator. The text box has been disabled for this operator, so it cannot be emptied.
Solution
Make sure that the Value text box is cleared when the Operator is cleared.
Performance Management
As a Performance Management Administrator, I want to recalculate performance scores from Bulk Actions (#130420)
Problem
When a new review survey is added or review period weights are adjusted, all agreements that have already been done are/was calculated on the current weights being used
Solution
Add a new Event to recalculate agreements
Tenant Management
Time to be displayed on the system Close Date shown on Description tab (#129940)
Problem
Please add the time (11:59 - i.e one second to midnight) on the display of the System Close Date as it does for the Expiry Date .
Solution
Fixed system close dates not displaying consistently across the system.
We also now display (at the end of the day) next to the dates, to make clear when the system will close or expires.
Finally, display "ExpireD" vs "ExpireS" on based on if the expiry date is in the future vs if it is in the past, when displaying the warning for system admin users.
General
Help Files: Feedback Label not displaying correctly (#133157)
Problem
Feedback Label not displaying correctly
Solution
Corrected the path for the translation
[Tools page] [System Summary] [Styling] Improve column spacing (#132973)
Problem
Improve column spacing
Solution
Adjusted spacing and wording, additionally, in the case of overflow, the ellipse and tooltip, the text
Always log an error when throw is used in code (#130740)
Problem
Sometimes an error is caught and thrown, but not logged to the error log. This makes it difficult to investigate some errors experienced in production
Solution
Added loggers where appropriate to WebMVC, Notifications, Audit, Identity, Master Data, Import, Job Profiler, Performance, Learning, and Content Management
Added explicit typing where I encountered any generics
Reformatted some pages to follow the convention
Version 9.1.166 (30 June 2025)
Report Builder
Objective Settings Queries (#133021)
Problem
The Select Distinct set on the report is not applied when exporting, only on viewing, leading to duplicate records being displayed when exported.
Solution
If DistinctRows is not provided, fall back to the configuration on the report.
Allow report builder admins to set certain filter criteria fields as drop-downs in a report (#129916)
New Development
User Story 1 – Add a step to the DWH SSIS packages
Add a step on the DWH SSIS packages to check for any filters that are of Operator type 'Is Equal to (from List)', and then select a unique list of the values into a new table that contains the relevant data source ID and data field ID and then the individual item values. E.g. DataSourceId DataFieldId RulesetId ListItemValue 1 1 10 FY24 1 1 10 FY25 1 2 11 Mid-Year 1 2 11 Final
User Story 2 – As a Report Builder Administrator, I want to have a new operator available named is equal to (from the list)
Add a new filter Operator
Is equal to (from list)
When this is the operator type, do not show the input, as the list will be determined at runtime
Ensure the data that is displayed is Ruleset-specific
User Story 3 – As a Report User, I want to select the dropdown with the available values
Modify the View Report page to check for 'Is Equal To (From list)' filters and prefetch the unique values from the DWH table created above, add tand hat as list items to the page
When the report is run the ,actual text value is still sent through, modification required to the report builder SP to handle 'List' operator filters as if it is 'Is Equal To (From list),' which does an exact match
On the end-user view, the filter will show as follows, where the edit box on the right will show as a drop-down list.
Report Builder: Date Parameters Logic vs Results (#132813)
Problem
When date filters were being applied, it would also consider the time and thus end up being inconsistent and unintuitive
Solution
The date filters should only consider the date value, not the time at all
Help Files
As a person with access to the Help Files, I want to have an updated layout with feedback functionality (#129792)
Problem
Change the help page modal's text to be more descriptive. Change the toggle functionality such that when checked, it would allow the content to be shown instead of hiding the content (reversed current toggle logic). For consistency, I standardised the pop-up design by adding a close (X) button to the top-right corner of all general modals (Only general modals for now).
Solution
Added a generic close button at the top of each general modal. I also updated the help page's translations and fixed how the toggle works.
Add a feedback Template (#131914)
Problem
The help screen modal should allow users (managers, employees, or administrators) to provide feedback on different parts of the system.
It should have a feedback button to provide access to the new feedback functionality.
The feedback form should show a new modal with three questions rendered as a partial view inside the modal.
There should be appropriate error handling and navigation flow management.
Upon submission, the following information should be sent to the Official Signify Documentation Email:
A screenshot of the parent page embedded as a base64 image.
The URL of the current window location.
User details: username, first name, surname.
Ruleset ID.
Responses from the completed form.
This functionality should be integrated using the existing "manual test notification" method.
Solution
Altered the help page modal to include a button for showing the new feedback form.
Added a new modal in the original CSHTML page containing the help page modals.
Had the new feedback modal load the questions to answer in a new partial view, which uses JavaScript to manage when certain questions should be shown and other navigation flow management.
Added translations for the new feedback modal in the languages
Reused an existing method to send notifications. Most values are hardcoded, as they are unlikely to require changes.
Add feedback form (#131915)
When the feedback button is clicked, open a new feedback model
Get the template ID from the notification service based on the code
Get the user data from the users service
On the model, implement show hide accordions according to the selection
When feedback is clicked, trigger the manual test notification with the following
Send an email to documentation@signify.co.za
Include the data
Screenshot of parent page embedded as a base64 image
URL from window location
Username, name, surname,
RulesetId
Answers from the completed form
Performance Management
Manager rating cannot be saved - error message (#133058)
Problem
When FinalRatingsOnly is enabled and the items are interpolated, it does not save the Manager Score along with the Final score (as it would when not interpolated). This causes the validation to fail when trying to approve the ratings.
Solution
Ensure that the manager score values are also saved when the ratings type is FinalOnly, and correctly update the SPA after the save.
PM UPLOAD document button missing (#132985)
Problem
When the contract is in the Objective phase but not yet in the Rating phase, users are unable to upload documents. As the Ratings phase where the only phase that where being checked/validated.
Solution
Updated the validation logic to correctly parse and assess the current contract phase, ensuring document uploads are allowed during appropriate phases.
Incorrect Total after 10/10 Self-Rating and Error on Submit Final Rating (#131647)
Problem
The scores within ContractPeriods do not round correctly when they round to above 100
Solution
Adjusted the rounding issue for ContractPeriods scores to ensure it does not exceed 100
Move the "Modify Final Scores" option to the dashboard (#93147)
Problem
When an agreement has been finalised and rated, you need to navigate within the agreement to select 'Modify Final Rating' when wanting to modify the agreement
Solution
Added new Ellipse menu item to modify the Period Contract, and a new modal to select the Review Period to modify.
Radio buttons not behaving correctly (#121338)
TBC
Data Warehouse
Implement Additional Billing Fields for subscription (#132464)
Problem
The default decimal precision of the decimal columns was set to 2, causing the entity framework to not update correctly, and the data not being there to be saved
Solution
Set the decimal precision to match the appropriate values (38 numbers, 18 decimals)
Absenteeism tracking (#132467)
Problem
The client requires a report that will show the absence history
Solution
Added a new DataSource called lmAttendance that will provide the required data
Report Builder: 200 Data Value Fields in the HR Process Request Pivot Data Table (#132915)
Problem
jpHRProcessRequestPivotData requires 100 extra custom fields
Solution
Add 100 extra custom fields within jpHRProcessRequestPivotData
Years of service report (#133024)
Problem
Field YearsOfService is required as requested by the client
Solution
Added new field YearsOfService within Appointments
Learning Management
Manual overriding of marks - Report cards (#132474)
Problem
Cannot add a negative mark that will not be counted in the average
Solution
Allow the Teacher / Administrator to add a -1 for an absent student
This mark should then be excluded from the average calculation
As an Administrator with access to the Learning Management setup, I want to import the Training Requirements and export the list (#131531)
New Development
Create an import file to import the Training Requirements
Country
Training Intervention Code
Training Intervention
Required Field
Job Title
Organisational Unit
Job Grade
Start Date in Position
Requirement Start Date
Requirement End Date
Days required to complete the training
Validation
If a Country Master Data value does not exist, the entire record will be rejected
If a Training Intervention Code does not exist, the entire record will be rejected
If a Training Intervention Code does not match the Training intervention, the entire record will be rejected
If a Training Intervention does not exist, the entire record will be rejected
If a Job Title does not exist, the entire record will be rejected
If an Organisational Unit does not exist, the entire record will be rejected
If a Job Grade Master Data value does not exist, the entire record will be rejected
The Requirement Start Date cannot be after the Requirement End Date
The Requirement End Date cannot be before the Requirement Start Date
Export
Add Export functionality to export the table
·
Tenant Management
Time to be displayed on the system Close Date shown on Description tab (#129940)
Problem
The time does not show for the System Close Date
Solution
Ensure the time component is also displayed
Dates not displayed according to what was set on the update (#130503)
Problem
When viewing the dates on the system, they do not match up with what has been set. It appears as though the date 202504-10 11:59 is shown in UTC +2, which would be 2025-04-11 @ 1:59.
Solution
Fixed system close dates not displaying consistently across the system.
We also now display (at the end of the day) next to the dates, to make clear when the system will close or expires.
Finally, display "ExpireD" vs "ExpireS" on based on if the expiry date is in the future vs if it is in the past, when displaying the warning for system admin users.
Imports
Payspace Employee import rejections (#132840)
Problem
When pulling users from Payspace, users without ID numbers have no employment statuses and are excluded from mapping without a reason.
Solution
When the user does not have an ID number, fall back to the employee number when grouping the user's appointments to retrieve the latest record
Add error logs for the users who are excluded
Stage the excluded users into user staging for the Payspace import
Ensure the provinces can be created case and culture-invariant.
Another rule to be aware of is that the Payspace pull only imports terminated users when they already exist on the ruleset with the payroll ID from Payspace. Any user terminated on Payspace before today that does not exist in the payroll ID on the ruleset is excluded and will not be imported.
Import log shows successful, but transaction log is empty (#132526)
Problem
Not all import types are developed to export data; therefore, when a user clicks 'User validation report', it will export but have no data
Solution
Add a new check to validate and ensure the import type is allowed to be validated
Automated Employee Details Import (1) (#104244)
Problem
The import service Swagger is not working.
Solution
Rename the duplicate message in the proto
Content Management
Bulk signing attempts fail immediately (#132716)
Problem
When trying to sign attempts on multiple assessments, the process fails immediately. The retry also fails immediately.
Solution
Add option to retrieve document by external request ID used for retry in V8
License documents are not digitally signed (#132379)
Problem
When you print a license and then save it as a PDF, it does not have the certificate to show that it has been digitally signed.
Solution
Correct problem when there is more than one signatory, the subsequent signatures show as invalid
People Management
Username with ' in it displays wrong when clicking on Performance Management tab (#132879)
TBC
Version 9.1.165 (30 June 2025)
People Management
[My Profile] Error shown when user clicks on My Profile (#132878)
Problem
When a user who does not have an admin role tries to view their profile, the page breaks.
The problem is that it tries to fetch the active products for the tenant/ruleset, but the call to get ruleset information is admin-authorised only.
Solution
Changed to get the tenant ID from the available anonymous call, which is then used to fetch the tenant subscription information.
[Imports] Error with future-dated appointment (#132805)
Problem
When a user is added with a future-dated appointment, the appointment saves on V9 but does not sync with V8.
When the User Import is manually executed, an error is encountered.
Solution
Support users added to export a user for import to V8.
Further investigation is in progress.
[Appointments] Terminated appointments can be deleted (#132690)
Problem
When an end date (or termination date) has been added to an appointment record, it is possible to delete the appointment.
Solution
The user cannot delete the latest primary appointment, even if there is a termination date.
It is possible to delete a primary appointment that is not the latest.
[Payroll integration] User import fails when access to OrganisationPositionDetail is not granted (#132260)
Problem
When the Payspace client does not grant access to the OrganizationPositionDetail, then the following API call fails as "forbidden": string url = $"{connector.BaseUrl}/v1.1/{companyId}/OrganizationPositionDetail?$count=true";
Solution
Add try-catch statements when pulling data for the OFO code to suppress and log the failure should it occur, and then continue with the import.
V9: Import Issue (#132815)
Problem
When providing other data in the import for org level 1 than the default IN01 data, the import fails with the error: "The org node to link the user's position to could not be found."
Solution
Add org level 1 as received data, and fall back to the default only when no data is provided
Performance Management
[Agreement] Manager Ratings not updated when Manager and Final Ratings can be completed simultaneously (#127230)
Problem
With the setting to do both final rating and manager rating, the banner scores for Manager Rating are not being updated on the contract.
Solution
Add a new check to update the Manager Rating along with the Final Rating when both are captured.
[Agreement] Radio buttons not behaving correctly when typing your own KPAs or selecting from the library (#121338)
Problem
When adding a new KPA/KPI, the radio buttons do not work correctly when navigating between each toggle.
Solution
Fixed the check to not overwrite the toggle's state.
As a Performance Management Administrator, I want to recalculate performance scores from Bulk Actions (#130420)
Problem
When a new Review Survey is added or Review Period weights are adjusted, it affects all agreements that have already been completed.
The completed agreements were calculated based on the previous weightings.
If the weights are later updated, and a user opens an existing or completed agreement, the score now appears differently than it should, based on the new weights.
Solution
A new bulk action has been added to allow agreements to be recalculated using the updated weights.
Users can now click on "Recalculate Scores", apply the necessary filters, and select all agreements that need to be recalculated.
The process will then run and update the scores for those agreements accordingly.
As a System Administrator, I would like to enable a setting on the Review Setup to inherit contract section weights (#130993)
Problem
Change the description of the settings for Auto copy and for the Inherit Contract Weights.
Add a total on the Edit Section Weights modal.
Solution
Update the Translations to the new value.
Add a total weight to the Edit Section Weights modal.
As a Language Administrator, I want to be able to translate the new fields (#130422)
Problem
A new feature was added to the Performance Management for bulk recalculating of performance scores, but the new fields were not enabled for translations.
Solution
Translation functionality was enabled for the new fields.
As a Performance Administrator, configuring Review Setups, I want a setting to allow training to be added to the PDP (#118125)
Problem
When configuring a Review Setup, a Performance Administrator wants a setting to allow training to be linked to the personal development plan (PDP).
Solution
A new setting was added that allows training interventions to be linked to a PDP.
[Bulk Actions] Errors display when you land on the Bulk Action Logs screen (#132668)
Problem
When navigating to the Bulk Actions logs on Performance Management, it results in an error.
Solution
Add a new column in the query that was created for the recalculation of performance management scores.
Performance Management: Incorrect Total after 10/10 Self-Rating and Error on Submit Final Rating (#131647)
Problem
The scores within ContractPeriods do not round correctly when they round to above 100
Solution
Adjusted the rounding issue for ContractPeriods scores to ensure it does not exceed 100
[PM] [Full Agreement import] Add more information to error messages (#129133)
Problem
When there are errors on the Full PM import, it can be difficult to determine the exact section that the error relates to if there are multiple items used across sections.
Solution
Improved the error messages to include the section that the error applies to in the error message, and had to add an additional parameter to get the translated section name to be able to correctly report the section in the error message.
The manager cannot modify objectives if objectives are approved and the ratings phase is inactive (#121163)
Problem
When an agreement is within the ratings phase, which has not been started, it can be moved to modify objectives in the dashboard side, but it is unable to when navigating to the contract
Solution
Fixed logic check to be able to modify objectives within the contract period view.
Path to link Signify to Power BI (#132335)
Problem
An additional api required to export all user contract data for a review year and review setup
Solution
Create a copy of rpc ListReviewYearSetupUserContracts (ListReviewYearSetupUserContractsRequest) returns (ListReviewYearSetupUserContractsResponse); and extend to include all users
Include location in org
Remove image path for performance
Move the "Modify Final Scores" option to the dashboard (#93147)
Problem
When an agreement has been finalised and rated, you need to navigate within the agreement to select 'Modify Final Rating' when wanting to modify the agreement
Solution
Added a new Ellipse menu item to modify the Period Contract, and a new modal to select the Review Period to modify.
[View/Print] Unapproved ratings show on the report (#119167)
Problem
Ratings are displayed on Print/View even if the scores have not been submitted
Solution
Add a new check to only show the score when scores have been submitted
[Check-ins] Historical Check-ins do not show the rating the manager gave (#120070)
Problem
Cannot see the rating for the person's historical check-in
Solution
Remove the check to only view manager rating checks
[Moderation] Add a clear button (#129908)
Problem
Within the Moderation section, there is no way to clear selections other than manually clearing one
Solution
Add a new Clear selections button to clear all input
[PM] [Templates] Add functionality to delete multiple templates at once (#120577)
Problem
Can only remove one template at a time on the PM Review Setup Templates
Modal is very small when a selection is required to select templates for bulk deletion
Translation missing for en-GB
When the modal is displayed to remove multiple templates, you can click on which then navigates you to the template
Solution
Add a new option to remove multiple templates at once.
Show a larger modal for Bulk delete templates
Added Translation for en-GB
Remove the check to be able to navigate to the template
Login
[Login] A Person cannot log in if all MFA options are turned off on a ruleset (#132853)
Problem
A user is unable to log in when none of the multi-factor authentication options have been enabled.
Solution
Fixed the local redirect after login to handle the new redirecturl to ensure that users can log in whether MFA is enabled or disabled.
[3rd Party Login] Unable to log in with Microsoft (#132846)
Problem
A user is unable to log in with Microsoft, and an error displays after account validation.
Solution
Fixed the local redirect after login to handle the new redirect URL to ensure that users can log in with their Microsoft account.
System Access
Improve Performance opening V8 links from V9 (#131794)
Problem
The encrypted query string causes low performance when accessing V8 pages from V9.
Solution
Replace the encrypted query string with a time-based security key.
The security key is valid for 30 minutes and remains unchanged for the period.
It is built using the username, encryption key and time constant.
Add deep links to quick links.
Send V8 notifications through V9 (#129209)
Problem
A client with a configured token-based own SMTP on V9 needs a separate basic SMTP for V8.
V8 notifications do not handle token-based SMTP authentication.
Solution
Make the endpoint available on the notification service on V9 to receive and process messages.
V8 attachments need to be handled.
Implement Encrypted Fallback config (#131882)
Problem
The new security key implementation in V9 requires all V8 counterparts to also be upgraded.
Solution
Add a config setting on V9 to whitelist rulesets by Id to use the previous query string encryption.
When a ruleset is not part of the config, then the new security key method will be used.
As a person with access to the Help Files, I want to have an updated layout with feedback functionality (#129792 )
Problem
The Help page modal's text needs to be more descriptive.
The toggle functionality needs to be updated. When checked, it should allow the content to be shown instead of hiding the content (thus reversing the current toggle logic).
Standardise the pop-up design by adding a close (X) button to the top-right corner of all general modals (only general modals for now).
Solution
Added a generic close button at the top of each general modal.
Updated the Help page's translations and fixed how the toggle for permissions works.
A feedback button will be added in upcoming updates for this feature.
[v9 URL] Bookmark URL (#127982)
Problem
Clients are experiencing issues when they bookmark the secure login URL for the Signify system.
Solution
Change the identity login page to accept a theme URL as the redirect URL
Allow the theme redirect to be used should the cookies or the ruleset have changed
Make the theme's redirect URL reusable
Imports
Implement log for import requests (#124033)
Problem
Currently, onboarding and synchronisation are the biggest issues encountered by the consultants (between V8 and V9 and vice versa).
Solution
In V8, create two procedures: sysExternalImportTransactions, sysExternalImportErrors.
Read from the sysProcessLog and export the data for the request.
Add a nullable field in sysProcessLog, ExternalRequestId, this field will contain Import.Imports.Id from V9.
Add the procedures to the sysObjectWhitelist table to be available in the API.
When the user clicks on export transactions or export errors, make an API call to the above and export the data as normal.
Move the singular import requests to log an import like the bulk imports do.
Add status "In Progress" when the import starts.
Communicate completion of the import from V8 to V9.
V9: Import Issue (#132815)
Problem
When providing other data in the import for org level 1 than the default IN01 data, the import fails with the error: The org node to link the user's position to could not be found."
Solution
Add org level 1 as received data, and fall back to the default only when no data is provided
PaySpace Signify discrepancy script (#129254)
Problem
When data is not staged in the user stagings for an import, then the exported Excel sheet is broken without data.
Data fields are inconsistent in the export
Solution
Add a check to export a default error
Add a cast to shortdatestring for datetime and datetime? fields
[Integration][Admin User][People Import] Import log shows successful but transaction log is empty (#132526)
Problem
Not all import types are developed to export data; therefore, when a user clicks 'User validation report,' it will export but have no data
Solution
Add a new check to validate and ensure the import type is allowed to be validated
Tenant/Ruleset Management
System Summary Page (#124038)
Problem
Old V8 installation has documentation on Master Builder, with all client URLs, etc.
For V9, this seems to have fallen away – is there a way to automatically insert this on Master Builder (Product Table)
Developer Solution
Add a new button on the tools page to access the system summary.
Create a new page with a table with paging, 50 per page and global search.
Includes useful information for support (such as Tenant Id, Tenant Name, RulesetId, RulesetName, SystemCloseDate, LoginURL, SupportURL, and ActiveProducts).
Includes a list of Subscriptions, ActiveUserCount, BaseLicenceCount, and SchemaCreatedMessage.
Add a gPRC call in the Account Service to do the query with the requested fields.
General
Upgrade nugget packages on Signify repository (#129990, #129991)
Problem
.NET 8 is still used on the Signify solution.
Solution
Upgrade the Signify solution to .NET 9 and test that the modules are still working.
Data Warehouse
[DWH] WFA Adjustments for Term 2 - Phase 1 (#132175)
Problem
The Term 2 and Term 4 EXAM Marks need to be included within the subject list for reports
Solution
Added t he Term 2 and Term 4 EXAM Marks within the subject list
Version 9.1.164.4 (Support Release - 25 June 2025)
Report Builder
Objective Settings Queries (#133021)
Problem
The Select Distinct set on the report is not applied when exporting, only when viewing and leading to duplicate records being displayed when exported.
Solution
If DistinctRows is not provided, fall back to the configuration on the report.
General
Unable to upload Banner Image (#133162)
Problem
The file name included in the directory creation is causing issues with the image stream
Solution
Only used the directory in creation
Imports
Payspace Employee import rejections (#132840)
Problem
When pulling users from Payspace, users without ID numbers have no employment statuses and are excluded from mapping without a reason.
Solution
When the user does not have an ID number, fall back to the employee number when grouping the user's appointments to retrieve the latest record
Add error logs for the users who are excluded
Stage the excluded users into user staging for the Payspace import
Ensure the provinces can be created case and culture manner.
Appointment error on Own (#132805)
Problem
When logged in as a support user, the user cannot open the V8 pages
Solution
Include users of type support in the export function from V9 to allow it to be imported on V8 and open the pages.
PaySpace Signify discrepancy script (#129254)
Problem
When data is not staged in the user stagings for an import, then the exported Excel sheet is broken without data.
Data fields are inconsistent in the export
Solution
Add a check to export a default error
Add a cast to shortdatestring for datetime and datetime? fields
Skip the OrganizationPositionDetail for the OFO population (#132260)
Problem
When the Payspace client does not grant access to the OrganizationPositionDetail then the following API call fails as forbidden
string url = $"{connector.BaseUrl}/v1.1/{companyId}/OrganizationPositionDetail?$count=true";
Solution
Add try catches when pulling data for the OFO code to suppress and log the failure should it occur and then continue with the import
Performance Management
Manager rating cannot be saved - error message (#133058)
Problem
When FinalRatingsOnly is enabled and the items are interpolated, it does not save the Manager Score along with the Final score (as it would when not interpolated). This causes the validation to fail when trying to approve the ratings.
Solution
Ensure that the manager score values are also saved when the ratings type is FinalOnly. And correctly updates on the SPA after the save.
PM UPLOAD document button missing (#132985)
Problem
When the contract is in the Objective phase but not yet in the Rating phase, users are unable to upload documents. As the Ratings phase where the only phase that where being checked/validated.
Solution
Updated the validation logic to correctly parse and assess the current contract phase, ensuring document uploads are allowed during appropriate phases.
Performance Management: Incorrect Total after 10/10 Self-Rating and Error on Submit Final Rating (#131647)
Problem
The scores within ContractPeriods do not round correctly when they round to above 100
Solution
Adjusted the rounding issue for ContractPeriods scores to ensure it does not exceed 100
Project Management: Text Sanitation Changes '&' to '&' (#132912)
Problem
When viewing the Review Setup, the & is showing incorrectly
Solution
Added new sanitation, to show the correct & and not the encoded one.
Path to link Signify to Power BI (#132335)
Problem
An additional api required to export all user contract data for a review year and review setup
Solution
Create a copy of rpc ListReviewYearSetupUserContracts (ListReviewYearSetupUserContractsRequest) returns (ListReviewYearSetupUserContractsResponse); and extend to include all users
Include location in org
Remove image path for performance
People Management
Error shown when user clicks on My Profile (#132878)
Problem
When a user that does not have an admin role tries to view their own profile, the page breaks. Problem is that it tries to fetch the active products for the tenant/ruleset, but the call to get ruleset information is admin authorized only.
Solution
Changed to get the tenant ID from the available anonymous call, which is then used to fetch the tenant subscription information.
Version 9.1.164.3 (Support Release - 12 June 2025)
Ruleset Management | Image Uploader
Unable to upload Banner Image (#133162)
Problem
The wrong directory is being created for the copy of the existing default banner, causing an error on upload
Solution
Changed the directory existence check and creation from sourchPath to copyPath
Imports
Payspace Employee import rejections (#132840)
Problem
When pulling users from Payspace, users without ID numbers, who have no employment statuses, are excluded from mapping without a reason.
Solution
When the user does not have an ID number, fall back to the employee number when grouping the user's appointments to retrieve the latest record
Add error logs for the users who are excluded
Stage the excluded users into user staging for the Payspace import
Ensure the provinces can be created in a case and culture invariant.
Another rule to be aware of is that the Payspace pull only imports terminated users when they already exist on the ruleset with the payroll ID from Payspace. Any user terminated on Payspace before today that does not exist by Payroll ID on the ruleset is excluded and will not be imported.
PaySpace Signify discrepancy script (#129254)
Problem
When data is not staged in the user stagings for an import, then the exported Excel sheet is broken without data.
Data fields are inconsistent in the export
Solution
Add a check to export a default error
Add a cast to shortdatestring for datetime and datetime? fields
PaySpace (#132260)
Problem
When the Payspace client does not grant access to the OrganizationPositionDetail, then the following API call fails as forbidden
string url = $"{connector.BaseUrl}/v1.1/{companyId}/OrganizationPositionDetail?$count=true";
Solution
Add try catches when pulling data for the OFO code to suppress and log the failure should it occur, and then continue with the import
V9: Import Issue (#132815)
Problem
When providing other data in the import for org level 1 than the default IN01 data, the import fails with the error: The org node to link the user's position to could not be found."
Solution
Add org level 1 as received data, and fall back to the default only when no data is provided
Performance Management
Manager rating cannot be saved - error message (#133058)
Problem
When FinalRatingsOnly is enabled and the items are interpolated, it does not save the Manager Score along with the Final score (as it would when not interpolated). This causes the validation to fail when trying to approve the ratings.
Solution
Ensure that the manager score values are also saved when the ratings type is FinalOnly. And correctly updates the SPA after the save.
PM UPLOAD document button missing (#132985)
Problem
When the contract is in the Objective phase but not yet in the Rating phase, users are unable to upload documents. As the Ratings phase where the only phase that where being checked/validated.
Solution
Updated the validation logic to correctly parse and assess the current contract phase, ensuring document uploads are allowed during appropriate phases.
Performance Management: Incorrect Total after 10/10 Self-Rating and Error on Submit Final Rating (#131647)
Problem
Due to the increasing number of KPIs and the distribution of their respective weights, there is a potential for precision-related discrepancies during the selection and calculation of the final rating. As a result, the computed value may appear as 10.001 instead of the expected 10.
The final ratings could not be submitted due to the system not accommodating a score of 100.0000, which resulted in a submission failure
The scores within ContractPeriods do not round correctly when they round to above 100
Solution
New logic was implemented in the score calculation to allow for slight overcalculations, which are then adjusted to the appropriate floor value. The system has been updated to allow for larger max rating scores.
Adjusted the rounding issue for ContractPeriods scores to ensure it does not exceed 100
Path to link Signify to Power BI (#132335)
Problem
An additional api required to export all user contract data for a review year and review setup
Solution
Create a copy of rpc ListReviewYearSetupUserContracts (ListReviewYearSetupUserContractsRequest) returns (ListReviewYearSetupUserContractsResponse); and extend to include all users
Include location in org
Remove image path for performance
Project Management: Text Sanitation Changes '&' to '&' (#132912)
Problem
When viewing the Review Setup, the & is showing incorrectly
Solution
Added new sanitation to show the correct & and not the encoded one.
People Management
[My Profile] Error shown when user clicks on My Profile (#132878)
Problem
When a user who does not have an admin role tries to view their own profile, the page breaks. The problem is that it tries to fetch the active products for the tenant/ruleset, but the call to get ruleset information is admin-authorised only.
Solution
Changed to get the tenant ID from the available anonymous call, which is then used to fetch the tenant subscription information.
Version 9.1.164.2 (Support Release - 5 June 2025)
Performance Management
Performance Management: Incorrect Total after 10/10 Self-Rating and Error on Submit Final Rating (#131647)
Problem:
The scores within ContractPeriods do not round correctly when they round to above 100
Due to the increasing number of KPIs and the distribution of their respective weights, there is a potential for precision-related discrepancies during the selection and calculation of the final rating. As a result, the computed value may appear as 10.001 instead of the expected 10.
The final ratings could not be submitted due to the system not accommodating a score of 100.0000, which resulted in a submission failure
Solution:
Adjusted the rounding issue for ContractPeriods scores to ensure it does not exceed 100
New logic was implemented in the score calculation to allow for slight overcalculations, which are then adjusted to the appropriate floor value.
The system has been updated to allow for larger max rating scores.
Path to link Signify to Power BI (#132335)
Problem
An additional api required to export all user contract data for a review year and review setup
Solution
Create a copy of rpc ListReviewYearSetupUserContracts (ListReviewYearSetupUserContractsRequest) returns (ListReviewYearSetupUserContractsResponse); and extend to include all users
Include location in org
Remove image path for performance
People Management
[My Profile] Error shown when user clicks on My Profile (#132878)
Problem
When a user who does not have an admin role tries to view their profile, the page breaks. The problem is that it tries to fetch the active products for the tenant/ruleset, but the call to get ruleset information is admin-authorised only.
Solution
Changed to get the tenant ID from the available anonymous call, which is then used to fetch the tenant subscription information.
Imports
PaySpace Signify discrepancy script (#129254)
Problem
When data is not staged in the user stagings for an import, then the exported Excel sheet is broken without data. Data fields are inconsistent in the export
Solution
Add a check to export a default error
Add a cast to shortdatestring for datetime and datetime? fields
Person not updating via Import (#132260)
Problem
When the Payspace client does not grant access to the OrganizationPositionDetail, then the following API call fails as forbidden
string url = $"{connector.BaseUrl}/v1.1/{companyId}/OrganizationPositionDetail?$count=true";
Solution
Add try catches when pulling data for the OFO code to suppress and log the failure should it occur, and then continue with the import
V9: Import Issue (#132815)
Problem
When providing other data in the import for org level 1 than the default IN01 data, the import fails with the error: The org node to link the user's position to could not be found."
Solution
Add org level 1 as received data, and fall back to the default only when no data is provided
Version 9.1.164.1 (Support Release - 3 June 2025)
Performance Management
Path to link Signify to Power BI (#132335)
Problem
An additional api required to export all user contract data for a review year and review setup
Solution
Create a copy of rpc ListReviewYearSetupUserContracts (ListReviewYearSetupUserContractsRequest) returns (ListReviewYearSetupUserContractsResponse); and extend to include all users
Include location in org
Remove image path for performance
Imports
PaySpace Signify discrepancy script (#129254)
Problem
When data is not staged in the user stagings for an import, then the exported Excel sheet is broken without data.
Data fields are inconsistent in the export
Solution
Add a check to export a default error
Add a caste to shortdatestring for datetime and datetime? fields
PaySpace (#132260)
Problem
When the Payspace client does not grant access to the OrganizationPositionDetail, then the following API call fails as forbidden
string url = $"{connector.BaseUrl}/v1.1/{companyId}/OrganizationPositionDetail?$count=true";
Solution
Add try catches when pulling data for the OFO code to suppress and log the failure should it occur, and then continue with the import
Imports
Issue when importing data in another root than IN01 (#132815/132240)
Problem
When providing other data in the import for org level 1 than the default IN01 data, the import fails with the error: The org node to link the user's position to could not be found."
Solution
Add org level 1 as received data, and fall back to the default only when no data is provided
Version 9.1.164 (2 June 2025)
Learning Management
LMS Portal: Subject Setup: No Cycle 'Weight in Period' Validation (#132285)
Problem
When saving the weights of a cycle which exceeds 100, it is unclear where the issue is.
Solution
Add validation client-side to indicate the invalid weights in red
LMS Portal: Marksheet: Save does not work when entering and Removing Input in an Empty Row (#132306)
Problem
When adding and removing data on empty columns of a marksheet, it cannot be saved.
Solution
Check that the item for the cells has items; otherwise, skip it
System Access
Allow support user functionality not working (#132363)
Problem
Unable to log in with a support user when disclaimers are active on a ruleset
Solution
Change the authentication process during support to skip the disclaimer acceptance
Ruleset Management
When on the Notification Tab, the Image Resources Tab disappears (#128559)
Problem
The image resources tab disappeared when navigating to the notifications tab in ruleset setup.
Solution
Added a missing navigation tab for image resources when navigating from the notifications tab.
Report Builder
Information for the BOTS (#130430)
TBA
Error when changing condition (#132342)
Problem
An error occurred when trying to preview data when the 'list' operator was selected as a filter condition.
Solution
This was due to a syntax error in the query, which is now resolved.
Performance Management
Add functionality to delete multiple templates at once (#120577)
Problem
Can only remove one template at a time on the PM Review Setup Templates
Modal is very small when a selection is required to select templates for bulk deletion
Translation missing for en-GB
When the modal is displayed to remove multiple templates, you can click on which then navigates you to the template
Solution
Add a new option to remove multiple templates at once.
Show a larger modal for Bulk delete templates
Added Translation for en-GB
Remove the check to be able to navigate to the template
Manager Ratings not updated when Manager and Final Ratings can be completed simultaneously (#127230)
Problem
With the setting to do both final rating and manager rating, the banner scores for Manager Rating is not being updated on the contract
Solution
Add a new check to also update the Manager Rating along with the Final Rating when both are captured
Data Warehouse
I want to have the audit data in the DWH so that I can create a report for the recalculated scores (#130423)
Problem
The new recalculated score fields are not available within the Report Builder
Solution
Added the new recalculated score fields within the Report Builder (DWH)
Adjustments for Term 2 - Phase 1 (#132175)
Problem
The Term 2 and Term 4 EXAM Marks need to be included within the subject list for reports
Solution
Added t he Term 2 and Term 4 EXAM Marks within the subject list
Tenant Usage stats (#131639)
Problem
The Tenant Usage Stats data needs to be available within the Data Warehouse
Solution
Added table TenantUsageStats with the required fields within the Data Warehouse
Notifications
Tooltip when hovering over item on Exports list incorrect (#122691)
Problem
The tooltip for the download icon in the Exports section incorrectly displays "Export" instead of "Download."
Solution
Updated tooltip text to "Download".
People Management
[Appointment History] Reference Name and Surname fields are not marked as required (#131180)
Problem
When adding/editing an employment history record, the save fails if you do not provide the reference name and contract information. This is because it is required/expected on the backend but not on the Modal.
Solution
Make reference name and surname & reference contact required.
Issues on People Management Module (#131783)
Problem
When a user searches on People Management, the search filter persists even when the user logs out and logs back in. This confuses sessions, as some results are not available.
Solution
When the user clicks logout, clear the filterCriteria if it exists from the local storage
HR Processes
Not All Jobs Positions are Available on the Workflow Reporting Lines (#132320)
Problem
When a position has a termination date in the future it cannot be found when setting up an HR process
Solution
Change the filter in the query to include position in the future and only include users
Languages
Add en-ZA as language and set as default (#132295)
Add a new culture for en-ZA on V9.
Ensure that the necessary translation files are added.
Ensure that en-ZA can be selected by the user - if the language is published on the ruleset.
Ensure that translations and date formats still work when en-ZA is used as a language.
Version 9.1.163 (2 June 2025)
Performance Management
Add functionality to delete multiple templates at once (#120577)
Problem
Can only remove one template at a time on the PM Review Setup Templates
Modal is very small when a selection is required to select templates for bulk deletion
Translation missing for en-GB
When the modal is displayed to remove multiple templates, you can click on which then navigates you to the template
Solution
Add a new option to remove multiple templates at once.
Show a larger modal for Bulk delete templates
Added Translation for en-GB
Remove the check to be able to navigate to the template
If moderated, show original score when you hover over the gauge as well (#129852)
Problem
When an agreement is moderated, on the overall score, when hovering over the text, the score is viewed within a tooltip, the hit area is a bit small
Solution
Change the tooltip to be displayed over the entire gauge when moderated.
Able to save the sections on a setup after deleting all Rating Scales (#129104)
Problem
The user could not save the review setup with the changes made to check for rating scales
Users could save a review setup when there was no rating scales defined, for example, all were deleted.
The user could save a review setup without adding a 'Performance' Rating Scale
Solution
Add a check to not validate rating scales for action plan section
Add a new check to ensure that the rating scales are defined for the active sections before saving, or else it results in a detailed error
Add a new check to ensure that there are performance rating scales
Limit item weights to 3 digits with a max value of 100 (#124145)
Problem
Weight input is not limited to correct values, for example can enter 120 in weight, but only errors when trying to submit
Solution
Limit input to the correct min/max values of the weight percentage while the user enters input
Cannot open the Documents page when there are no KPIs (#126063)
Problem
When doing an agreement, and a perspective or KPA is added, when clicking to View Documents, it does nothing and errors as no KPI has been added
Solution
Disable the View Documents button when no KPI has been added when an agreement is being done, and also view a tooltip with a new translation message to first indicate to add a KPI
On the preview, the perspective is shown as unknown even when perspectives are not enabled (#120057)
Problem
Unknown text is shown on templates where perspectives are disabled when previewing a template
Solution :
Add a check to not display the Perspective name ('Unknown') when perspectives are disabled
"Save" and "Save Add New" have the same translation (#124587)
Problem
Translation for save and saveAddNew had the same translation
Solution
Changed to use a different translation for wording, save and saveAddNew
Incorrect error when you submit an agreement containing duplicate items (#124049)
Problem
When adding a duplicate KPI in an agreement, the entire exception is displayed as an error and not a friendly UI error
Solution
Add a new check to show a translation error message
Update text on 'submitting objectives' (#128266)
Problem
When the objective settings are confirmed on the modal, the text reads 'be blocked for editing'
Solution
Change the text on the confirmation modal to read 'be locked for editing'
Indicate that moderation is in progress (#130384)
Problem
When an agreement is being moderated and saved to be completed later, on the user side within the agreement, it is shown as moderated
Solution
Add a new check that if the moderation is in progress, show correct translations, else default to the moderated translation
Performance Management - Keep Action Plan open (#130044)
Problem
Currently, when a period has been approved by the employee and manager, no changes can be made to the Action Plan section
Solution
Change the logic of the Action Plan to allow updates throughout the active Performance Year
If a review period has been approved by either the employee or the manager, allow the following actions on the Action Plan Section
Add
Edit
Delete
Copy from previous
Complete status by the manager
These actions should be applied to
KPI Action Plan items
Ad Hoc Action Plan items
If the Check-ins period has been reached, also allow the Action Plan to be modified
When the Performance Year is locked, the Action Plan will close, and no changes will be made
Radio buttons not behaving correctly (#121338)
Problem
When adding a new KPA/KPI, the radio buttons do not work correctly when navigating between each toggle
Solution
Fixed check to not overwrite the toggle state
Make message more prominent (#129638 & #129639)
Problem
An important message is displayed within the Moderation search function that can be missed by many
Solution
Changed to an alert message, which showcases the message to the user within an info icon
Apply the text-area rule for the Goals on view (#120063)
Problem
The text area within the goals of the Action Plan grows as the text increases
When an action plan is added with a lot of text, the tooltip displays on the left, which makes it difficult to read
Solution
Apply the text-area rule to minimise text with ellipses.
Move the tooltip to the right to show all text and read clearly
Tooltip on Hover for Final Score in English (#124580)
Problem
English text displayed on the tooltip within the dashboard, Final Scores
Solution
Added translation to view
Imports
The system does not use the specified org code when importing a new level 1 node (#119899)
Problem
The system does not use the specified org code when importing a new level 1 node
Solution
Ensure that when importing org nodes, we first check if a code was specified before looking at the auto-generated codes, thereby ensuring that if a code is specified for level 1, it is used.
Default the Import option to Performance Management (#113330)
Problem
The import/export modal doesn't, by default, select the current product's imports; it needs to have the current active product selected and the imports for it displayed, depending on where you are in the system.
Solution
Included the ProductCode to the baselayout and send that through to the importexport modal to ensure it correctly selects the correct product for import options.
Enable Sage Automated employee import (#129939)
Problem
The PowerShell connector indicated an incorrect validation message.
When a user leaves the Signify system open for more than 10 hours and then tries to continue their work, they receive the error
Solution
Add the missing passport number field that caused the import to be incorrectly mapped, and receive invalid validation errors
When the backend services return unauthorised as a status code, redirect the user to the login page rather than giving an infinite error message
Data Warehouse
Send DWH integrity report weekly via DB Mail (#131121)
Problem
The integrity report has been developed and is not used frequently for monitoring purposes
Solution
Send DWH integrity report weekly via DB Mail by creating a new SQL Job
Notifications
Styling on Reason for deletion to be standardised (#122689)
Problem
Styling in the delete modal in Main Banner | Inbox | Notification | Exports did not match other standard modals' styling in the system.
Solution
Updated the delete modal to match the standard styles.
User unable to send a Welcome Notification (#131852)
Problem
When a user who only has People Admin role tries to send a Welcome Notification an error is displayed. This is because to fetch the template it first needs to fetch the active products. The active products fetch can only be done by Ruleset / Tenant admins.
Solution
Allowed for users with the People Admin role to also retrieve Active Products. Confirmed that the user can still only see relevant areas, the fetch can successfully be made by a People admin without a ruleset/tenant admin role.
Report Builder
The order of the sources to be aligned with the database Display Order (#129894)
Problem
The Data Sources are not displayed in the Order which has been set in the database under DisplayOrder
Solution
Make sure the display order in the DB and front-end is the same
Organisational Structure
Errors - & (#131317)
Problem:
When adding an Org Unit, the '&' gets sanitised from the name.
The config map changes do not work correctly yet.
Need to add the excluded object properties directly to AppSettings.
Solution:
Add OrgUnitName and Code for the OrgNodeViewModel to the list of excluded sanitisation properties.
Errors on Org Structure (#131884)
Problem
The org flat structure path is not working correctly on the root node
Solution
Correct the generation of the org flat path on the root node
Create the support user on the node IN01
Add missing org flat path generation for the first user
People Management
Add Role Permission: Manage Own Data (#124043)
Problem
A user is not able to update personal details when the particular feature for that item is not enabled, although the user has the "ManageOwnData" permission.
Solution
If a user has the "ManageOwnData" permission, ensure they can update their profile details, even if, according to the product setup, the item cannot be edited.
Translations
Translations on Learning Management are not updating (#131968)
Problem
Translations are not working on any cshtml pages and only on react pages
Solution
Updated Translator.cs to include "learningManagement" in the services list.
Changed UseExternalTranslations to true in both appsettings.Development.json and appsettings.json to utilise external translations in both development and production environments.
SigniChat
Adding a new group using the people group which was previously used to be handled (#123358)
Problem
You should never have multiple chat groups for the same people group (and product).
When you created a chat group which is linked to a people group, which was previously deactivated, a new chat group was created (for the same people group), instead of activating the existing chat, it created a duplicate chat group linked to the same people group.
You can now activate the disabled chat group, and voila, you have two chat groups for the same people group.
Solution
When creating a chat group for a people group, which was then disabled, activate the existing chat group instead of creating a duplicate.
Version 9.1.162 (2 June 2025)
People Management
Improve People Group Materialisation and management (#130510)
Problem
When a people group has been materialised and a consumer event fails to refresh the people group in a service, there is no way to refresh the users in, for example, Performance Management, without changing the people group.
When a people group is handled by the SyncMaterialisedPeopleGroupUsersCommand command, there is no locking to prevent multiple consumers from processing the same people groups. This can lead to deadlocks, or at least redundant fetches and updates.
There is no way to know when the people group were materialised last.
Suggested Development
Add a button to the people group summary page to manually force a refresh of the open people group on all services
The Materialised people group users in the job profiler service are busted and rematerialised
This should trigger a new event consumed by the job profiler service and then the jp service must trigger the SyncMaterialisedPeopleGroupUsersCommand on all services using gRPC to ensure all services are in sync.
Add a MaterialisedDataLog table to each service
Columns: Id, created date, edited date, tabletype, status, referenceId
tabletype: Enum:
PeopleGroupUsers, Ruleset, Users, Appointments
status: Available, Locked
referenceId: Reference to materialised table e.g. PeopleGroupId
When the people groups sync, add or update the entry in the table with the reference Id being the people group id.
Set the status to "locked" when processing a request.
Other refreshes wait, by checking every 20 seconds and up to 2 minutes, if the people group is Available and then continue refreshing.
Use the log table to find the tables that have been materialised.
Performance Management
Column fields for Evaluations modals not translated (#124581)
Problem
On the agreement, when adding an evaluation, the column headers were not translated into Deutsch.
Solution
Added translation for headings in the Deutsch translation.
Able to save the sections on a review setup after deleting all Rating Scales (# 129104)
Problem
User could not save review setup with change made to check for rating scales.
Users could save a review setup when there were no rating scales defined, for example, all were deleted.
User could save a review setup without adding a 'Performance' Rating Scale.
Solution
Added a check to not validate rating scales for the action plan section.
Add a new check to ensure that the rating scales are defined for the active sections before saving, or else result in a detailed error.
Add a new check to ensure that there are performance rating scales
The circle for the overall Status icon does not turn green (# 129073)
Problem
On the Performance Dashboard, the circle for the Overall Status icon does not turn green after finalising the agreement if the setting to hide all the weights is enabled.
Solution
Added a check for the circle to turn green when the agreement has been finalised.
Only display 20 characters of the review period names and add a tooltip on the Performance Management timeline (#128454)
Problem
Review period names are displayed in full length on the dashboard, causing an overlap with the edge of the card.
Solution
Changed to display only the first 20 characters, with an ellipsis text and a tooltip to display the full period name on the dashboard timeline
Update wording on 'submitting objectives' (# 128266)
Problem
When the objective settings are confirmed on the modal, the text reads 'Please note that the Objective Settings will now blocked for editing'.
Solution
Change the text on the confirmation modal to read 'be locked for editing'.
Instructions overlapping "Continue" button (#121399)
Problem
Instructions text overlapping the "Continue" button on the manager's agreement for Objective Setting within the Performance Management Dashboard.
Solution
Add styling to restrict text from overlapping.
The hover-over item displays twice when hovering over Action Plan items on KPIs (# 120060,120063)
Problem
A duplicate pop-over displays once an Action Plan has been added from a KPI within an agreement.
Solution
Removed duplicate popover and only kept one.
Able to delete an agreement when the phase is no longer active (#121573)
Problem
When a period has ended within a review setup, an agreement which has been started can still be deleted.
Solution
Add a check that if the phase has ended, do not show the option to delete the agreement on both Dual and without Dual agreements.
Manager side shows "Rate" button if submitted before the employee (#115767)
Problem
On the Manager side, the text 'Rate' is displayed even if the Manager has submitted their scores, and the user has not started yet.
Solution
Change to display View instead of Rate within the case that a User has not started and the Manager has submitted their scores.
Recruitment
Error when saving external applicant as employee on Advertisement created directly as an advertised position (#131948)
Problem
When selecting a position during Advertisement creation, the user could select job positions unrelated to any organisational structure, leading to issues later on when appointing an applicant.
Solution
Added a check to only show job positions when they are also found in org positions.
Imports
Add exclude from update functionality (#128857)
Problem
When using Sage and other third-party applications, a client does not utilise all the third-party modules, such as OFO codes.
These codes are maintained directly in Signify via the front-end functionality.
The user import uses the data received as the source of truth.
Should a value be empty in the import received, the value in the system is also updated to empty.
This means that if a field like OFO code has been updated in Signify, it will be cleared with the next import received from the 3rd party.
Solution
Create a master data table for import fields and indicate which fields should be excluded from import, e.g. the system is the source of truth.
Master data ship as empty, add columns to be excluded from the front-end.
Main Dashboard
HR Processes widget not showing even if set to active (# 130867)
Problem
The HR Processes widget did not display when the logged-in user had no actions to perform (in other words, they had none of their own requests or requests to attend to).
Solution
Display an 'empty' widget when there are no actions to perform.
Report Builder
Signing is not going through on assessment acceptance with a moderator (#131820)
Problem
Exceptions are thrown when the same Scoped DbContext is used in multiple threads/tasks, causing the signing to get stuck in "inprogress" status.
Solution
Create a scope for services for each task or thread running when signing documents.
Data Warehouse
Add datasource field description (# 131323)
Problem
From the front-end, it is not known exactly what the purpose of each field in the data dictionary is.
Solution
Add a Description NVARCHAR(MAX) field to reportbuilder.DataSourceFields - Developer on V9 on reportbuilder migrations.
Update fields in the reportbuilder.DataSourceFields with description - only where it is not straightforward.
Create a new report category "System".
Create a report to display Table, Field, Field Description, Type, Length, and Display Order.
Select only tables with fields where the table and the field are not archived and where the field is selectable.
Tenant/Ruleset Management
Make products and system menus active according to subscription (#116680)
Problem
When creating a new Tenant &/or Ruleset, all products and the system menus are inactive.
Suggestion
When creating a Tenant or a new Ruleset from blank, make the products and system menus active according to the Tenant's subscription.
Development
When creating a ruleset, enable the products under ruleset management per the purchased license.
When the ruleset is already in use and a new license is purchased, the corresponding product should not automatically be enabled then, only during creation.
People Management, Job Profiler, Standard Reports:
Extended Core
Add a new product, Mentoring and Coaching, that is active when Extended Core is active.
Report Builder, Insights:
Rename the license to Insights and Report Builder.
eLearning:
Add a new product, PDP, and link the PDP menu to it:
Performance Management:
Leave Management:
Career and Succession Planning:
Recruitment:
Learning Store:
Training Scheduling:
Rename the license and product to Event Scheduling
Salary Review:
360 evaluations:
Add a new product and move the 360 Employee Evaluations Menu to it
Show and hide menus in People Management config based on the active products and licenses.
Always show:
Core
Basic People Management
Profile (excl Extended Profile)
User Permissions
Appointment
Performance Management (if the Product has a subscription)
Training and Development (if PDP or Learning has a subscription)
Labour Relations
Audit Information
Org Structure
Basic Job and Position Library
Hide the Requirements tab on Job Profiling
HR Helpdesk
Standard Reports
Add the menu with its submenus:
Extended
Full People Management
Profile
Extended Profile
User Permissions
Appointment
Performance Management (if the Product has a subscription)
Training and Development (if PDP or Learning has a subscription)
Labour Relations
Audit Information
Mentoring & Coaching
Electronic Document Signing
If the Signify System - Extended Core has not been selected, then disable the Create Document option on the Grid View
Add a tooltip
Only available with Extended Core
Show the menu in the grid view:
Leave Product Enabled - Add leave submenu in profile.
Performance Management Enabled- Add Performance Management.
Ensure all product-specific menus show when the corresponding product is enabled.
Version 9.1.161 (2 June 2025)
HR Processes
Upload file duplicated 115 times on the list of file uploads (#131114)
Problem
Hr process request displays many duplicate file uploads.
Solution
Ensure duplicate file uploads are not displayed by fixing the join on the query which retrieved the files.
Consecutive step approver update (#126525)
Problem
When a user who is the Approver for two consecutive steps clicks to approve the first step, the second step should be automatically approved. Therefore, the button for the second step should be disabled and not show a hand cursor to reflect this behaviour.
Solution
Adding a new list which tracks the usernames of the previous people who have been requested to review an HR Process. If this user is already in the list (They were requested to review multiple times) give the second or third, or nth Approve button for this user a disabled appearance/functionality.
Master Data
Unique constraints on Master Data (#127350)
Problem
Proper(user-friendly) snack message did not appear when trying to save duplicate master data, due to the master data interceptor only being used when master data translations is turned on. I use the interceptor to look for SQL duplicate object errors.
Solution
Ensure that the master data interceptor is always used, but that it only tries to translate the data if the setting is turned on.
People Groups
Learners not in subgroup (#130686)
Problem
The additional services People Group sync from V9 only return active users. Terminated users must also be included in the list.
Solution
Include the isForDisplay property on the PeopleGroupUserFetch to ensure that all users, regardless of status, are returned to the V8 sync.
Data Warehouse
Add a task to add Data Dictionary joins (#131144)
Problem
Data Dictionary joins are added manually with deployments to different environments
Solution
Automate the process by adding a task to add Data Dictionary joins in the DWH packages
Performance Management
Objective Settings Queries (#128628)
Problem
ContractPeriodSection Weight fields are not available within DWH
Solution
Added ContractPeriodSection Weight fields within V9 DWH ( pdmContractPeriods and pdmContractPeriodSectionItems )
Report Builder
Allow report builder admins to set certain filter criteria fields as drop-downs in a report (#129916)
Problem
There are no drop-downs that can be used as filters on end-user reports
Solution
Add a step to the DWH SSIS packages
As a Report Builder Administrator, I want to have a new operator available named is equal to (from list)
As a Report User, I want to select the dropdown with the available values
General
Error screen wording changes (#130575)
Problem
Requested an additional text to be added to the general error page (SVG file).
Solution
Updated text as well as improved formatting to preserve neatness.
People Management
Contact detail wording changes (#127975)
Problem
Request to update the contact text in people management.
Solution
Altered translations for multiple languages to match the request.
Notifications
Notifications email setup configuration error (#131208)
Problem
When toggling the Credentials Required switch on Ruleset Email Setup, when enabled, it shows all the credential fields for both token and basic authentication. This is incorrect, it should only show the fields depending on the selected authentication type.
Solution
Fix the JavaScript to show the correct credential fields depending on which authentication type radio is selected.
Version 9.1.160 (29 April 2025)
Performance Management
PM Error with PERMS system on Print/View report (#131284)
Problem
Contract print preview breaks for unfinalized contracts because it expects there to be a premoderation score.
Solution
Correctly handle the selection of the premoderation score to be null when the contract is not yet finalised.
Version 9.1.159 (29 April 2025)
People Management
ESS issues (#130616)
Problem
When saving user information on People Management, an intermittent "Error occurred" snack is displayed
The problem is that user reporting lines are checked for changes, but all people groups are busted for the ruleset
This means that every time user information is updated for any user (or if nothing is changed and the Admin only clicks on Save), all the people groups are cleared from the cache and deleted from JobProfiler.MaterialisedPeopleGroupUsers
This creates additional race conditions when the PeopleGroupUpdated event is emitted, causing all services to try and refresh the MaterialisedPeopleGroupUsers table on JP, as well as when the page reloads, it needs to refetch the PeopleGroupUsers since the cache is empty
Solution
Changed the User reporting line upsert to only bust the reporting line and people group caches if any changes have occurred, and to only bust for the specifically changed reporting line types
Only bust the relevant PeopleGroupIds for the reporting line managerIds, not all people groups
Performance Management
Performance Management Errors (#131139)
Problem
When doing the initial moderation and directly clicking on approve & recalculate, the moderation scores were not saved first, when you then unapprove the moderations, the moderation state is broken.
On General Comments of a contract, the manager can click and view the person's comment which opens a modal that is editable. Saving then saves the exact comment for the person to the manager's comment. Same happens the other way around.
Solution
Fixed the moderation approve & recalculate to always correctly save the moderation scores since their could also be interim changes. And on unapproval to correctly reset the contract moderation status.
Changed the general comment modal to be not editable when it is the person viewing the manager's comments or vice versa
Job Profiler
Issue on New Appointment (#130526)
Problem
When adding a new (second or next) appointment or doing a transfer, the appointment fails with an invalid appointment start date error.
First issue is that the error is misleading as the problem should reflect that the end date overlaps the start date of the next appointment, secondly the check performed was incorrectly comparing the previous appointment's start date to be less than the next appointment's start date, which should normally always be the case so every appointment fails.
Solution
Changed translation to be more specific to the actual error/check.
Corrected the check to compare the current appointment end date against the new appointment start date.
Notifications
Notfications - Make sending welcome emails more robust and performant (#130837)
Problem
The grpc channel size is too small when the list of users receiving the welcome email is more than 7500
The welcome email fails should any user's reset URL fails to generate
Solution
Add a setting to give the option to increase the size, should it be needed. This is not part of the Helm charts, as it should not be Add tries to send the notification with an empty reset URL rather than failing the entire batch
People Groups
People Groups: Display incorrect number if people on "Custom" (#130594)
Problem
On the People Group list, the Included Users count does not match up with the actual number of users displayed when viewing the PG summary, This is because on the list page, terminated users still included on the PG are taken into account, as well as users that have both been included and excluded. It needs to show the same counts as you would see on the summary view.
Solution
Modify the included users count selection to only check for active appointments and to not include users that have also been excluded.
SigniChat
When first opening a new chat, the collapse button is missing (#130584)
Problem
When opening a new chat, the close button does not show as it formed part of the search section (which should be hidden when opening a new chat).
Solution
Ensure that the close button still displays when opening a new chat.
Version 9.1.158 (29 April 2025)
Imports
Make "Approve Agreements" Label clickable (#128953)
Problem
The label next to the checkbox is not clickable
Solution
Changed label to also trigger the checkbox
Create SQL notification for support (#124083)
Problem
The notification was not working for import errors
Solution
Changed import error notification to enable propagation of master data
People Management
[Roles][Admin]: Prevent user from Deleting the Default (#129276)
Problem
The system allows an Admin to delete a Default People Group Role
Solution
Prevent an Admin from Deleting a Default People Group Role
"Can Manage People" not selected by Default on a Default Role (#129381)
Problem
The system does not tick the "Can Manage People" by default on a default People Group Role.
Solution
Enable the checkbox by default on a default People Group Role
Multiple problems on ESS screens (#130616)
Problem
When saving user information on People Management, there is an intermittent "Error occurred" snack displayed. The problem is that user reporting lines are checked for changes, but then all people groups are busted for the ruleset. This means that every time user information is updated for any user (or if nothing is changed and Admin only clicks on Save) all the people groups are cleared from the cache and deleted from JobProfiler.MaterialisedPeopleGroupUsers. This creates additional race conditions when the PeopleGroupUpdated event is emited, causing all services to try and refresh the MaterialisedPeopleGroupUsers table on JP, as well as when the page reloads it needs to refetch the PepleGroupUsers since the cache is empty.
Solution
Changed the User reporting line upsert to only bust the reporting line and people group caches if any changes have occurred, and to only bust for the specifically changed reporting line types. Only bust the relevant PeopleGroupIds for the reporting line managerIds not all people groups.
Organisational Structure
Org Structure: Store calculated org path per node (#128856)
Problem
Store calculated org path per node as JobProfiler.fncCalculateOrgPath(@orgid INT) is not performant enough for larger datasets
Solution
Store calculated org path in table OrgNodes table and read from this field instead of using fncCalculateOrgPath in queries throughout system
Create migration to add new column FlattenedOrgPath to orgnodes. Run recursive query to update existing data
Create new command to update org path of specific nodeid and its children when creating new or updating entity.
Imports
PaySpace Imports (#129229)
Added OFO codes to Payspace imports
Ruleset Management
Change of preferred People Group on My Profile | My Account not applied immediately (#128855)
Problem
Active people group was not set when updating the default or preferred people group.
Solution
Ensure that the active people group of the user is updated when updating their preferred people group.
Notification
Schedule Setup: User can set a Once-Off custom schedule to time already passed (#96569)
Problem
On the notification schedule setup page, the end date could be in the past or before the start date.
Solution
Ensure that the end date cannot be in the past or before the start date.
Data Warehouse
Review and adjust data sources on Report Builder (#128366)
Problem
Data sources need to be reviewed and improved
Solution
Implemented improvements within Data Dictionary DataSources/DataSourceFields
Salary Review
[Salary Review] Page perpetually loading (#130596)
Problem
The iframe is unable to load on all V8 pages except LMS
Solution
Added Html.Raw function to prevent Razor from splitting the string into multiple attributes
Version 9.1.157 (29 April 2025)
Learning Management
Delete Button for Interventions Only showing on the latest Record (#130180)
ProblemThe
Delete/Trash icon is not shown for all training interventions in a cycle.
Solution
Remove script and markup that only allowed the last training intervention in the list to be removed.
Remove sandbox on V9 (#129502)
Problem
Documents that should be embedded on pathways are not working because of the sandbox rule from V9 Iframe
Solution
Load sandbox rule conditionally for the MENU_PORTAL_USER_LMSPORTAL module
People Management
Managers cannot see their employees in the Performance Management system (#130434)
Problem
The update of the people group query causes deadlocks
Solution
Only update when the status has changed, and add WITH(ROWLOCK, UPDLOCK)
Simplify the distinct for the inserts and remove the CTE
Double Scroll Bar appears after navigating across Tabs (#126461)
Problem
A double scrollbar was displayed on some pages due to overflow on the body.
Solution
Fix the double scroll by hiding the overflow globally on the body.
Country/Province set as "Not Required" but is being displayed as Mandatory (#128735)
Problem
The system currently shows "Country/Province" as a required field, even though it is set to "Not Required."
Solution
We will update the system to ensure that the "Province" field is no longer marked as mandatory. This involves adjusting the underlying data settings and applying an update to reflect the change.
Add Role Permission: Manage Own Data (#124043)
P&S
Report Builder
Ordering to be aligned with the database Display Order (#129894)
P&S
Column order specified on the Preview is not applied to the Full Report or Exported Report (#128854)
Problem
When the user rearranges the column order, especially if the rearranged columns are more than one index away from each other.
The order is inaccurate regarding what is displayed on the frontend.
Each time a column is reordered (Moves an index), an AJAX call is made, and all changes after it are inaccurate.
Solution
Collecting all the requests the user makes by waiting for a timer to finish, each time a reorder happens, the timer is reset (to ensure all changes will be sent).
When the timer runs out, one AJAX call is made as a batch for the Server to handle.
The server receives a list of requests and loops through them to ensure each column reorder is processed.
Please note that after the previous code review changes, only columns which actually moved an index are sent to the server side for processing.
Ordering to be aligned with the database Display Order (#129893)
Problem
When creating a new report, the list of data sources does not appear in the correct order.
It does not display according to the DisplayOrder column inside the DB.
Solution
We made sure the data sources are displayed in the correct order by updating how they are retrieved.
A sorting rule was added to ensure the list follows the intended sequence.
Additionally, we included DisplayOrder in various steps where data is added or retrieved to maintain consistency.
'Is in list' operator shows Values selection across all tenants (#130008)
Problem
When a user creates a new report and adds fields to the filter section, selecting the "is in list" operator returns data across all tenants instead of filtering correctly.
Solution
To ensure that only data from the specified TenantID and RulesetID is retrieved, these values should be added as parameters in the SQL Stored Procedure.
The filtering condition should then be applied within the query to restrict results accordingly.
SigniChat
Datatables warning error when clicking on the <--- back button (#129666)
Problem
The error occurs when viewing your chats, as not all are returned to the user.
Solution
Ensure that an error does not occur and make sure that all the chats for the user are returned.
Ruleset Management
Mentoring and Coaching are not available on the System menu (#129947)
Problem
Mentoring and coaching could not be enabled or disabled because it was linked to its own product code, for which a product does not yet exist.
Solution
I linked the mentoring and coaching URL back to LearningManagement (to which it was previously linked anyway)
Redirect tabs not on the current session's ruleset to the login page (#128356)
Problem
When a tab is open and a user logs into a new ruleset in the same browser on a different tab with the same domain, they receive the following.
When clicking okay, the page is reloaded for the current ruleset's data.
This is confusing for some users as they expect the other ruleset's data here.
Solution
Rather than reloading the page, redirect the page to the login page of the previous ruleset on that theme
e.g Url.ActionLink("Index", "App", new { rulesetCode = ruleset.Code, themeKey });
Change location. Reload the following file to redirect the theme URL of the previous ruleset
Notifications
Changes to the template, not being propagated (#128679)
Problem
New templates and schedules on ruleset 1 are not propagateable.
Solution
Ensure new templates and schedules on ruleset 1 are propagateable.
Imports
As a person with access to Appointment History, I want to see the Start Date in Group and Company fields (#122770)
Business Rules:
The Start Date in Group can be any date in the past - The imports allows this, but the front-end has validation that says that this cannot be earlier than the first appointment date. We can't expect a new client to capture the person's entire work history therefore, they should be allowed to capture a Start Date in Group that is earlier than the Start Date in Position. It cannot be after the first appointment date.
Start Date in Company works correctly, the only validation is that it is not earlier than the Start Date in Group. We are not going to validate it against the appointment date at this time. (Currently, the Start Date in Position can be earlier than the Start Date in Company)
Validation Report not in the same format as the import (#128489)
Problem
The columns on the import validation report did not properly group the columns (as with the import file)
Solution
Properly group the columns.
Tenant Management
Hovering over the Tenant URL and clicking to copy does not copy the URL (#130061)
Problem
In the tenant management system, when users clicked on a URL, it showed a message saying "Click to copy," but it didn’t actually copy the link to the clipboard.
Solution
I fixed the issue by adding a function that properly copies the URL when clicked. Now, when users click the link, it is automatically copied, making it easier to paste elsewhere.
Time to be displayed on the system, Close Date shown on Description tab (#129940)
Problem
There is no expiry time on the System Close Date
Solution
Add the time (11:59 - i.e one second to midnight) on the display of the System Close Date as it does for the Expiry Date .
Licence Expiry Warning contains wrong Licence Type (#129855)
Problem
Previously, all expiring subscriptions were incorrectly labelled as "Fixed/Monthly Subscription" because the text was hardcoded, meaning it didn't change based on the actual subscription type.
Solution
Now, the subscription type is dynamically displayed based on the correct SubscriptionType field in the system, ensuring accuracy for each user.
Login Page Link on the System Setup Complete notification shows 'Page cannot be found' error (#129856)
Problem
When a new tenant was created and an email was sent, the login URL in the email would incorrectly show the path "/app/app/" twice.
Solution
I removed the extra "/app/" part that was being added in the notification system.
Performance Management
As a person viewing the Print View of the Agreement, I want to have the More Information and Moderation sections collapsed (#128404)
Add moderation information to Contract Print Preview, add new, more info and moderation accordions on Print Preview
The & symbol is displayed as "&" throughout the contract (#129768)
Problem
The sanitisation that was added to all PUT | POST | PATCH requests on Webmvc to prevent malicious input values is also stripping out valid values like '&' and '>' and '<', which can be used in comments and on PM section item names.
Solution
Added a list of excluded settings to the SanitizationConfiguration that will look for specific objects and then exclude specific properties from being sanitised.
Organisational Structure
Org Structure: Store calculated org path per node (#128856)
Problem
Store the calculated org path per node as JobProfiler.fncCalculateOrgPath(@orgid INT) is not performant enough for larger datasets
Solution
Store calculated org path in table OrgNodes table and read from this field instead of using fncCalculateOrgPath in queries throughout the system
Create a migration to add a new column, FlattenedOrgPath, to orgnodes. Run the recursive query to update existing data
Create a new command to update the org path of a specific node ID and its children when creating a new entity or updating an entity.
Version 9.1.156 (7 April 2025)
Performance Management
Auto copy error (#129765)
Problem
Auto copy auto approval fails when Action Plans are enabled.
Solution
Exclude the AP section from the validation before the auto-approval happens
Indicate that all fields are mandatory (#129755)
Problem
Required fields for moderation were not displayed making it unclear what is needed.
When only ticking an item as moderated but then having other items which are correctly validated the react validation passes, and an incorrect error is displayed "failed to save"
Solution
Add scss and class handling to indicate which fields are required.
Fix validation not checking that All moderated items must pass.
Original score changes when you save the moderated score (#130375)
Problem
The final rating displays the actual final rating value which gets overwritten when you moderate the item to the moderated value, then making it display the moderated rating as the final rating.
Solution
Changed that the final rating column always displays the pre-moderated final rating
Moderated labels not shown when you impersonate (#130374)
Problem
The employee dashboard is showing calibrated instead of moderated when contract moderations have been approved.
Solution
Fix the employee dashboard to correctly display that contract has been moderated.
The moderator cannot unapprove the agreement after approving it (#130379)
Problem
When QA is not required and the moderator approves the moderation the Change button is disabled, the moderator cannot then change or revert the moderation.
Solution
Do not disable the Change button for moderation when QA is required and a QA score has not been provided.
Organisational Structure
The system is Duplicating Org Name (#129973)
Problem
The Org name is displayed twice on the Org Builder Screen.
Solution
Removed additional div that displays the org name
Tenant Management
Unable to create a new tenant (#130349)
Problem
The permission call added for 129326 - [%V9-Performance Management%] - Changed moderation permissions to be excluded by default (#8599) required an authenticated identity service when creating and updating user roles
The identity service's update's edited users are saved as unknown
Permissions for the first tenant user get updated before the tenant administrator is created
Solution
Add an anonymous endpoint to update user permissions
Send through the edited users from the consumer message
Reorder the initialise command of the tenant to create the user before handling the identity creation
Add AllowAnonymous filter on anonymous methods of the ruleset process
Notifications
Own SMTP sender details being used even though RS1 details are selected for sending emails (#129364)
Problem
When turning off the "Use Own SMTP" setting and saving, then turning it back on, the system would reset the sender email to master@signify.co.za instead of keeping the previously used email.
Solution
A new field was added to store the last sender email used, so when "Use Own SMTP" is re-enabled, it restores the correct email instead of resetting.
HR Processes
Inactive Workflows are Still Seen by the Bot (#130062)
Problem
Cannot change active process code to inactive process code
Can activate a process with the same code as an existing active process
Solution
Correct update check
Add validation when activating a process for a used active code
Version 9.1.155 (7 April 2025)
SigniChat
Datatables warning error when clicking on the <--- back button (#129666)
Learning Management
Inform the user where to find the exported list of recipients (#123803)
Problem
Currently, when you export the list of recipients or people who won't receive notifications, you only get a message "Saved Successfully". User won't know what this means.
Solution
Added the link to the export page on the snack message
When Multiple Comments are added, Save creates formatting issues with large Gaps (#129623)
Problem
When selecting preconfigured comments, the User can add multiple and they appear to be formatted correctly and economically initially. However, after saving the Marksheet, upon reload, many additional empty lines are added which makes the sheet difficult to read.
Solution
Resolve the gap on top of mark sheet comments by resizing rows on load and save
When Marking Learners as Absent, if Send Notifications is clicked but cancelled Endless Load Logo Loops over Interface (#129847)
Problem
The loading screen is shown indefinitely on the attendance register.
Solution
Removed loading variables from the attendance list and attendance modal
Teacher not able to View Marksheet and Attendance (#129069)
Problem
The pathway groups linked to a subject can be used on another subject.
The marks page breaks due to ambiguous start date
Solution
Add usage to query and gRPC to filter on the subject model
Correct query table aliases
The stardate validation is only at the domain level and not on the front end
Could not replicate the editing of the name issue
Imports
No errors exported (#129226)
Problem
When working on a project locally, clicking a link or button correctly takes users to the right page.
However, in the testing environment, the same action leads to an error or a broken page.
This happens because the system doesn’t recognize extra parts in the web address, like /master/ or /herculia/ , which are unique to different environments.
Solution
The redirection logic was updated to recognize and include the correct base address for each environment.
This ensures that users are always directed to the right page, no matter where the system is running.
Translations
Fix the translation of the page heading (#129839)
Problem
The global header displays the translation key on the moderation screen.
I found that the way it calculates the correct translation to use on the SPA pages relies on the 'app' portion of the URL being exact (case-sensitive); otherwise, it does not correctly determine the translated value.
Eg spa/performanceManagement/ resolves translation correctly, but spa/performancemanagement/ does not
Solution
Fixed the case of the redirect on the moderate / qa buttons on the moderation search to match the translation key case.
Performance Management
Comments mandatory on Ratings and Evaluations (#129585) - New functionality
A new column has been added to the Review Setup | Sections | Performance Rating Scale
Required Comments
When a rating scale has been marked as required, the comments on the agreement are also required
This is also the case when evaluations need to be completed
The import will give an error when the rating has been completed and not the comment
Periods are shown in reverse order (#130060)
Problem
On the contract print preview, there is no ordering on the contract periods leading to periods being displayed in the incorrect order.
Solution
Add order by DisplayOrder to the query to have contract periods displayed in same order as on the dashboard
People Management
After saving a Secondary Appointment the system remains on the Appointment page (#129460)
Problem
After adding/editing an appointment on the people profile page, it does not redirect back to the appointment page.
Solution
Ensure it redirects back to the appointment page.
People Group Search does not work as expected (#130069)
Problem
People Group Search does not work as expected
Solution
The search did not always work, because the name was calculated, while the search only worked on the "name" property.
Make sure that the search works on the calculated name.
The ribbon shown behind the Profile icon and the tooltip remains on the page (#129641)
Problem
The "My Manager" Ribbon was hidden behind other elements on the card, making it difficult to see.
Solution
Its display priority was increased slightly so that it appears on top of the other elements.
Prevent the user from Deleting a System Module Role without the Acknowledge toggle being switched On (#129274)
Problem
The system does not prevent a user from deleting a record without the Acknowledge toggle being switched On.
Solution
The system does not prevent a user from deleting a record without the Acknowledge toggle being switched On.
HR Processes
Inactive Workflows are Still Seen by the Bot (#130062)
Problem
When submitting a request for a code that was deleted and then recreated the code is seen as deleted
Solution
When retrieving the active hr process for the code only retrieve the process that has not been deleted
When creating a new HR process command only check the code on none deleted codes
When editing an HR process ensure the same code as an existing process cannot be used
Areas Affected
Submitting a new HR process
Creating a new HR process with the same code as a deleted HR Process
Updating an existing HR process code to another code that is already used
API
API: ListUsersExport not returning all or correct information (#126458)
Problem
The Occupational Category and Job Grade are not available on the API.
Solution
Added the two fields to the API call as requested.
Notifications
Should be allowed to save "From Email Address" as empty (#128633)
Problem
The problem is that when you save a template on Ruleset 1, the field is filled in with the default address configured on Ruleset 1. However, when you create a new ruleset for a client, this email address is copied to the new ruleset, which prevents certain emails, like the subscription emails, from going out.
Solution
Ruleset 1 can now save blank email addresses for templates
Ruleset Management
Unable to create a ruleset using the Copy function (#129692)
Problem
When copying a ruleset the PM template copy fails when trying to insert Review Setup Section items, this happens when there are items with the same name and type used on more than 1 perspective. (It is possible to for example have 2 custom KPAs both called 'Key Area' under the same section, because they are custom they are different). This presented an issue on the copy where it was only creating 1 Section Item and then trying to assign the ID to both KPAs on the template which breaks the foreign key constraint. Similar scenario for KPI (L3) items.
Solution
Had to fix/modify two places, firstly on the template copy within the same ruleset (from the review setup admin screen), this still had an issue where it would like the same custom section items across 2 different templates, resulting in changes on the one affecting the other. Followed the same approach as on contract copy to ALWAYS create custom section items as new.
A similar fix/modification on the ruleset PM copy, with regards to the template section items, changed it to bulk create all the custom items for the section first and then assign the relevant Ids.
Version 9.1.154 (7 April 2025)
Learning Management
When Marking Learners as Absent, if Send Notifications is clicked but cancelled Endless Load Logo Loops over Interface (#129847)
Problem
The loading screen is shown indefinitely on the attendance register.
Solution
Removed loading variables from the attendance list and attendance modal
Confirmation on Send Notification for Absent Learners Modal Status is referencing the incorrect Email Locations (#129608)
Problem
Custom to email recipient data was not applied because the parameter name was incorrect
Solution
Fix parameter name and also handle cases where the custom email field is whitespace
On Save Button, Click Deselect Current Cell to Ensure Field Save (#129363)
Problem
Edits on the mark sheet do not commit when clicking the save button without leaving cell edit mode first
Solution
Commit values to the mark sheet on the save button even when the mark sheet is still in edit mode
Imports
Import from PaySpace (#128700)
Problem
When the end date received from Payspace is equal the the start date which is the case with enrolments the record is rejected.
When the termination reason is not available in the case of the above case the record is rejected.
When an appointment is updated in Payspace the user receives a new position ID which causes a new position to be created in Signify for each update of the appointment.
Solution
Remove the end date >= start date pre-import validation
Remove the termination required when the end date is provided pre-import validation
Change the position code to a concatenation of the organisation title and the employee id. This creates a position with a name per employee rather than per appointment change. This means that positions will not be reused should the employee transfer to a new position in Payspace
Cleanup duplicate records (#128477)
Problem
When an appointment is updated in Payspace the user receives a new position ID which causes a new position to be created in Signify for each update of the appointment.
Solution
Change the position code to a concatenation of the organisation title and the employee id. This creates a position with a name per employee rather than per appointment change. This means that positions will not be reused should the employee transfer to a new position in Payspace
People Groups
Grouped condition for reporting lines not working (#129613)
Problem
When selecting a reporting line for custom grouping an error is given and no reporting lines are displayed.
Solution
Included missing variable in SQL that loads the PeopleGroupReportingLine objects
The summary page is blank after creating a new Custom group and adding an org condition (#129079)
Organisational Structure
When the Org name is too long the (people, Vacancy, Inactive) does not appear (#129186)
Problem
The organisation's name was not being displayed in full and the amount of persons and vacancies were hidden when a name is too long.
Solution
Always displayed the vacancies and persons and showed the organisation's name in full in the tooltip
People Management
Informational displaying incorrectly calculated year/month count (#128994)
Problem
An employee's termination date is not taken into account when calculating how long they've been in a position
Solution
Used employee's termination date to calculate duration in position if employee has been terminated
Notifications
Emails are still being sent after the Tenant has reached expiry and close dates (#129519)
Performance Management
Final Review - Autocopy error (#129765)
Problem
When auto-copy is enabled and the section is set to auto-distribute there is a scenario where the weights are not automatically distributed (the assumption is that it will be distributed during submission). On the auto copy auto approval it checks whether the weights are valid for all items in each section, finds these items that are not auto-distributed and still have a weight of 0% and does not auto approve the contract OS.
Solution
When the auto-copy auto approval happens check if the section needs to be auto-distributed and always redistribute the weights before validating them for that section. This ensures that always on auto copy approval if the section is set to auto distribute it will redistribute the weights for all items according to the relevant L1 & L2s if applicable.
Version 9.1.153 (7 April 2025)
Imports
ADMIN Register (#129238)
Problem
The All People group is synced with an empty name to V8 and created as a subgroup with no name
Solution
Corrected the function that calculated the names of the people group
Learning Management
Teacher not able to View Marksheet and Attendance (#129069)
Problem
The pathway groups linked to a subject can be used on another subject.
The marks page breaks due to ambiguous start date
Solution
Add usage to query and gRPC to filter on the subject model
Correct query table aliases
The stardate validation is only at the domain level and not on the front end
Could not replicate the editing of the name issue
Version 9.1.152 (7 April 2025)
Learning Management
Pathways: Teacher not able to View Marksheet and Attendance (#129069)
Problems
When a class group linked to a subject has comments or attendance records linked to it, the group cannot be removed from the subject
When a subgroup is delinked from a pathway and synced to V9, the deleted pathway groups are not deleted in V9 and can be linked to new subjects.
Pathways groups that were linked with a deleted pathway group still show a link on the subject even though it has been removed from the pathway and no longer exists
When editing a subject and saving from the modal the data does not save
When editing a cycle and saving from the modal the data does not save
A subject's end data can be saved as a date before the start date
A cycle's end data can be saved as a date before the start date
A cycle can start before the subject started
A cycle can end after the subject has ended
The weights of the cycle or the interventions can be set to more than 100%
You cannot delete a training intervention from a cycle where marks have already been assigned
When a user is appointed from the front end or import the user is not materialised in the learning service
Solutions
Add soft deletes to the subject pathway groups to allow deletion when linked to comments or attendance. Should the same pathway group be linked to the subject again where the group was deleted from then the previously removed group will be undeleted and the attendance/comments will be available again.
When syncing the data from V8 and the subgroup is no longer linked to a pathway mark the pathway group as deleted. Should the subgroup be linked to the same pathway again the existing pathway group will be undeleted.
Amend all queries to not display the pathway groups that as been deleted as linked items on the subject.
Correct the form submitted when saving on the subject model
Correct the form submitted when saving on the cycle modal
Add domain exceptions to validate the subject dates
Add domain exceptions to validate the cycle dates
Add domain exceptions to the max weights
Implement the soft delete on training interventions linked to a cycle
Add the missing appointment columns in materialised users and add the consumers to materialise the appointment data also when changed
Import
Users (administrators) have blank subgroups linked to their user profiles which are also set as their preferred subgroup (#129238)
Problem
The All People group is synced with an empty name to V8 and created as a subgroup with no name
Solution
Corrected the function that calculated the names of the people group
HR Processes
The claims are not being processed (#129685)
Problem
When submitting an Hr Process Request the process fails, on the logs, it is indicated unauthenticated.
After investigations it was determined that it fails only when the Position Approval Level type is selected.
When this is the type then the query to fetch the user details for the approval level fails due to a missing column on the dapper query.
This failure bubbles up to the MVC that originally made the call and the MVC then tries to load the error page which fails with unauthenticated when trying to read the RulesetId, masking the original problem.
Solution
Corrected the dapper query to select the additional required column.
Also added additional error logging on the hr process submit to better log on JobProfiler when there is an error that occurs.
Performance Management
Display only the first 2 Decimal Points for Average Rating Score (#126335)
Problem
When viewing the evaluation summary the Max, Min and Avg do not limit the number of decimal places
Solution
Implemented a limit of two decimal places
Enable the editing of an uploaded document (#114656)
Problem
When a document has been uploaded, you cannot edit it.
Solution
Added modal to update file and title
People Management
Add card view counter (#126052)
Problem
The direct subordinate count should show on the people management dashboard on each user card
Solution
Implemented changes to queries as well as dashboard card to show the direct subordinates as well
Rename headings on Reporting Lines (#125944)
On User Permissions, click on the button Reporting Lines, rename headings
Rename 1st column from “People Reporting To” to “People Group Name”
In the 1st column, add the text “People Reporting To” in front of every name (which will be the name of the People Group that is created).
In the Position column, remove the code in brackets, and show it on hover.
To save more space, show the Org path as the last +-30 characters, with on hover the full path.
Revisit the placement of the clear button (#126180)
Problem
The clear button is right on the edge of the search box overlaps the edge.
When the filter option is visible, the left edge of the filter button overlaps the clear button.
This means you need to click the left edge of the clear button else the filter button is triggered.
Solution
Added a margin on the right side of the clear button
The logged-in user shows as 'No location in org' on the Profile login details pane (#124568)
Problem
A user has a current position in the org, however, in the My Profile section it shows No location in org .
Solution
Removing the check for JobPosition Active = 1 is not needed as the person is still in the Org Structure.
Link People: Search: Select heading - update to select all within the list (#84557)
Problem
When you search for multiple users it returns the list of employees but you then need to select each employee one by once.
Solution
When the Select is clicked, all the people in the current list are selected as intended.
Incorrect Tooltip message (#129072)
Problem
Incorrect Tooltip message on the circle badge which displays the count of subordinates (People Management)
Solution
Generated new translations with the correct wording and displayed them on the frontend
Person Photo and Avatar upload issues (#122321)
Problem
The profile preview must stick on top.
The save button must stick to the bottom.
The banner sizes must change like those on the image resources.
The preview profile icon does not show the avatar on hover.
The icons on the profile picture must change to buttons.
When the banner is uploaded, it shows as selected, but is not shown in the preview.
Solution
Made the required styling changes to the styling
Report Builder
Changes to Styling on the Full Report page (#121257)
Problem
When on the Full report page of the report builder and you scroll down the headers are scrolling out of the page thus it is hard to see which column is for what.
Solution
Implemented sticky headers so the headers always show when scrolling
Language
Remove/rename duplicate values (#107495)
Problem
When on the language page there are duplicate translations, but they are different and used in different contexts.
Thus the issue is to be able to see the difference
Solution
The solution for this problem is to add a key field to display the translation key as well.
So that the difference is visible to the user
Incorrect text displayed for Categories.Error (#118172)
Problem
On the language page, there were sections with missing translations
Solution
Added the missing translations
System Access
Add Libraries to the Gear menu to access Training Interventions etc (#128234)
Problem
On the learner record| Add training page, add a spanner icon with learning libraries and system administration in it
Solution
Adding a partial view (_PortalHeader.cshtml) on the Add Learner Record page when viewing an employee in People Management when signed in as a Learning Admin.
Add functionality inside the _AdministrationMenu.cshtml file to determine if the user is on this page and then only display the system admin panel and the learning libraries panel within the Admin Menu.
Add logic inside of the Bootstrap3_PortalHeader.cshtml file to determine if a user is a Learning Admin and also is on this page before showing the wrench icon to the user.
Tenant Management
Styling on expired tenants to be changed (#120195)
Problem
Styling on expired tenants to be changed
Solution
Only use the styling for tenants who expire soon and not if they have already expired.
Notifications
Adding previously uploaded files as Attachments displays an error message (#125776)
Problem
When selecting an existing file as a document for a template, it creates a duplicate, and it is not possible to distinguish between the two.
Solution
Concatenate contentId to the filename to uniquely identify each file on the front end. Even if they are duplicates from another template.
Master Data
Use DapperInBatched instead of IN @{Ids} in system (#128268)
Problem
1. There are areas in V9 that still use IN @{Ids} when querying the database. When there are more than 2100 IDs the query breaks because of a SQL limitation.
2. MaterialisedPeopleGroupUsers used as a list of userids
Solution
1. Replace ALL INSTANCES in the system where IN @{Ids} are used with DapperInBatched
Example where it has been replaced.
The developer assigned should look for all instances where IN @ is used.
And please test all changes made.
Where it is used to filter people by a list of users from a peoplegroup it should be replaced by a direct join on MaterialisedPeopleGroupUsers and the in removed.
Remove all temp tables where an insert is done for user-id and replace with a dapper batch to spare the execution time of thousands of inserts.
SigniChat
Adding a new group using people group which was previously used to be handled (#123358)
Problem
If a user is added or removed from a people group, the chat group recipients are not synced.
If a new chat group is created for a people group that already has a chat group, it only opens the existing chat.
Solution
Added a sync to the chat group recipients.
If a chat group is disabled, a new chat will be created if the same people group is selected.
New Development
Performance Management - Moderation
Administrative Roles
For the Performance Administrator Role, 2 additional permissions have been added:
Moderate Agreements
Quality Assure Agreements
Master Data
Moderation Reasons
Setting
Setting to allow Agreement Moderation
Navigation to the Moderation page
Search according to Review Year, Review Setup and Review Period:
People with Agreements
Select Moderate button
After Moderation, Quality Assure is required (if setting has been enabled)
When Quality Assure is opened, the moderation can be done as well
Performance Management Dashboard
If an agreement has been Moderated, the Overall Final Score will show Moderated and on hover the original score
The Agreement also shows which KPI has been moderated
Version 9.1.151.3 (Support Release - 25 March 2025)
Performance Management
Final Review - Autocopy error (#129765)
Problem
When auto-copy is enabled and the section is set to auto-distribute there is a scenario where the weights are not automatically distributed (the assumption is that they will be distributed during submission).
On the auto copy auto approval it checks whether the weights are valid for all items in each section, finds these items that are not auto-distributed and still have a weight of 0% and does not auto approve the contract OS.
Solution
When the auto-copy auto approval happens check if the section needs to be auto-distributed and always redistribute the weights before validating them for that section.
This ensures that always on auto copy approval if the section is set to auto distribute it will redistribute the weights for all items according to the relevant L1 & L2s if applicable.
Evaluation Summary - Min and Max scores not reflecting correctly (#129365)
Problem
The overall minimum and maximum ratings displayed on the Evaluation Summary was showing the LEAST AND MOST used ratings instead of the highest and lowest ratings used.
Solution
Changed the overall min and max ratings to be the minimum and maximum ratings selected across all KPIs that were rated.
Copy the weights of the contracts instead of the Review Setup when using the Copy from Previous (#126081)
Problem
As a Performance User, I want to copy the weights of the contracts instead of the Review Setup when using the Copy from Previous
Solution
When the auto-copy setting is on, the section weights will copy from the contract, otherwise it will copy from the review
Agreement finalized with empty section when section weight change is not allowed (#129009)
Problem
On the Review Setup, the Primary Goals Setup does not allow the section weight to be changed.
After importing the following error was thrown, but the contract was created and finalized with the Primary goals section left blank.
Solution
The Import will stop if an invalid agreement will be created
Able to import the same file on two different setups in the same year (#129006)
Problem
The user could not import multiple periods at the same time, and the user could create a contract in more than one period item.
Solution
Changed PM Import so you can import multiple periods at the same time, as well as excluding users from creating contracts in more than 1 item per review year
HR Processes
Signify Down (#129685)
Problem
When submitting an Hr Process Request the process fails, on the logs, it is indicated unauthenticated.
After investigations it was determined that it fails only when the Position Approval Level type is selected.
When this is the type then the query to fetch the user details for the approval level fails due to a missing column on the dapper query.
This failure bubbles up to the MVC that originally made the call and MVC then tries to load the error page which fails with unauthenticated when trying to read the RulesetId, masking the original problem.
Solution
Corrected the dapper query to select the additional required column.
Also added additional error logging on the hr process submit to better log on JobProfiler when there is an error that occurs.
Learning Management
Saving Attendance Register and Default Recipient Check on Email Notification (#129038)
Problem
The client requested to save attendance when the notification
The client requested that the parent checkbox be a default recipient when sending absent notifications
Solution
Modified CreateAttendanceNotificationModal to call saveAttendanceRegister before creating notifications.
Changed includeParent state in AttendanceNotificationModal to true by default
Tenant Management
Tenant Status stuck on 'Sending Completion Notification' (#129577)
Problem
Ruleset and Tenant creation is failing to complete because of the recent audit changes, the calls are made anonymously and thus identity is not set, but on the audit service it tries to fetch the ruleset ID from identity, and if not found uses the RulesetId column from the changed entity.
The problem however is that MaterialiedRuleset tables do not have the RulesetId column (It's called just Id).
Solution
Added the INonAuditable interface to the RB and JP materialised ruleset entities. I also added a change on the SqlServerDbContext class to check that when the specific entity is the Ruleset in the Account Domain use the Id column (For audits directly on the Account. Ruleset table).
I also added a fallback to 0 if the entity in question does not have a RulesetId. This way, the audit does not break and at least logs the audit against RulesetId 0.
Version 9.1.151.2 (Support Release - 19 March 2025)
Tenant Management
Tenant Status stuck on 'Sending Completion Notification' (#129577)
Problem
Ruleset and Tenant creation is failing to complete because of the recent audit changes, the calls are made anonymously and thus identity is not set, but on the audit service it tries to fetch the ruleset ID from identity, and if not found uses the RulesetId column from the changed entity.
The problem however is that MaterialiedRuleset tables do not have the RulesetId column (It's called just Id).
Solution
Added the INonAuditable interface to the RB and JP materialised ruleset entities.
Also added a change on the SqlServerDbContext class to check that when the specific entity is the Ruleset in the Account Domain to use the Id column (For audits directly on the Account.Ruleset table).
Added a fallback to 0, for if the entity in question Does not have RulesetId, this way the audit does not break and at least logs the audit against RulesetId 0.
System Close Date shows differently on the list screen than on the Tenant screen (#128903)
Problem
Tenants' close dates would be displayed differently on the Tenant Management and the Tenant Profile page.
Solution
Changed the one date to take the user's time zone into account
Performance Management
Evaluation Summary - Min and Max scores do not reflect correctly (#129365)
Problem
The overall minimum and maximum ratings displayed on the Evaluation Summary showed the LEAST AND MOST used ratings instead of the highest and lowest ratings.
Solution
Changed the overall minimum and maximum ratings to be the minimum and maximum ratings selected across all KPIs that were rated.
Organisational Unit
When the Org name is too long the (people, Vacancy, Inactive) does not appear (#129186)
Problem
Learning Management
Saving Attendance Register and Default Recipient Check on Email Notification (#129038)
Problem
The client requested to save attendance when the notification
The client requested that the parent checkbox be a default recipient when sending absent notifications
Solution
Modified CreateAttendanceNotificationModal to call saveAttendanceRegister before creating notifications.
Changed includeParent state in AttendanceNotificationModal to true by default
Show period dates on the mark sheet (#123699)
Problem
The dates are not showing on the mark sheet
Solution
Add the dates to display on the mark sheet
Data Warehouse
Added additional data (#120152)
Problem
LearningManagement data needed to be added for WFA School reports
Solution
Added Datasource fields lmStudentSubjects and lmTermResults to the V9 DWH with the required fields
Version 9.1.151.1 (Support Release - 18 March 2025)
Performance Management
Copy the weights of the contracts instead of the Review Setup when using the Copy from Previous (#126081)
When only the following setting is enabled:
Then the section weights are copied from the review setup
If both settings are enabled:
Then the section weights are copied from the contract that you are copying from.
Agreement finalized with empty section when section weight change is not allowed (#129009)
Problem
On the Review Setup, the Primary Goals Setup does not allow the section weight to be changed.
After importing the following error was thrown, but the contract was created and finalized with the Primary goals section left blank.
Solution
The Import will stop if an invalid agreement will be created
Able to import the same file on two different setups in the same year (#129006)
Problem
The user could not import multiple periods at the same time, and the user could create a contract in more than one period item.
Solution
Changed PM Import so you can import multiple periods at the same time, as well as excluding users from creating contracts in more than 1 item per review year
Audit
Investigate and implement solutions for better audit data retrieval (#119199)
Problem
Get an error message when trying to get audit data for a specific table
Solution
Corrected mapping of audit log lists to populate the front-end page
Version 9.1.151 (17 March 2025)
Imports
PaySpace Signify discrepancy script (#129254)
Problem
A user cannot validate all the received data from PaySpace or Powershell with the data currently in the system
Solution
Add staging of the received data in the pull processes for Powershell and Payroll
Include the import types on the front end for the allowed types to export the report
Extend the allowed export period to 7 days
Signify Assistance (#128700)
Issue 1
Problem
When dapper batched has more than 2000 entries in the list it Ands multiple in statements together which returns no result
e.g AND( mu.Username in ('U1',....'U2000') AND mu.Username in ('U2001',....'U3000') )
When used like
public async Task> ListUsersIdsAsync(int rulesetId, string[] usernames)
{
using var connection = new SqlConnection(_connectionString);
await connection.OpenAsync();
var sql = $@"
SELECT
muser.[Id] [Id],
muser.[Username] [Username]
FROM
[JobProfiler].[MaterialisedUsers] muser WITH(NOLOCK)
WHERE muser.RulesetId = @rulesetId
AND {usernames.DapperInBatched(GlobalConstants.MaxDapperBatchSize, "muser.Username")}";
Solution
When in is used use the OR when not in is used use the AND
When a string has accents, escape it, e.g. TS'01 will be 'TS''01' within the in statement
Issue 2
Problem
When multiple payroll connectors are set as scheduled imports, the parallel execution causes a DBContext conflict.
Solution
This will need to be resolved, but for now, the parallel execution has been changed to a normal execution method, which should resolve this issue.
Issue 3
Problem
Due to high traffic and/or other issues, the event to update the materialised users table in the job profiler is not always being consumed in time for the appointments to be created.
This then caused the appointment controller to search for the user in the materialized tables that did not exist.
Solution
Create a fall back where when the materialized table has not been updated in time, the relevant appointment controllers fetches the required data and triggers the updates before continuing with the appointment creation.
Main Dashboard
System Error Message (#129232)
Problem
If the fallback path does not exist and an error occurs on the Dashboard page and the Edit banner pages
Solution
Introduce fallbackImagePath for default image handling. Update logic to check for fallback directory when no default background files are found
Performance Management
Unable to import VB items if the section setting is disabled to allow section items to change (#129141)
Problem
The user could not import multiple periods at the same time, and the user could create a contract in more than one period item.
Solution
Changed PM Import so you can import multiple periods at the same time, as well as excluding users from creating contracts in more than 1 item per review year
Issues to access performance module (#129162)
Problem
When a user's position is set as inactive, the user is not seen as part of the people groups used to determine which review years to show on the PM dashboard.
Solution
Replace the active check with not deleted to be part of the dashboard always as long as the position exists
Evaluation Summary not available after Final Approval (#129000)
Problem
When users view their contract and the employee evaluation is on and has a due date, regardless of the phase, the button cannot be seen.
Solution
Added the button to the check for the user approved to always display in the rating phase
Add the button to the default fallback also
Review Period Dates & Review Year Dates - Validation Messages Include Time Erroneously (#125347)
Problem
On the review year setup and review period setup pages, when the End Date is selected as a Date that falls before the Start Date, validation correctly occurs; however, when the message displaying the error is displayed, it includes the time (00:00:00), which should be removed. The date is also in the format YYYY-MM-DD could this be adjusted to reflect the correct Date Format in accordance with the Language Selected?
Solution
Changed the dates of the translations to short date string, with the correct timezone and culture
Unable to include the Value Survey score (#128772)
Problem
Saving a contract survey gave SQL Dapper an error because of new columns added to the query object used on an unrelated query, causing it to break here.
Solution
Made the query model used by the Survey creation distinct from the other usages.
Data Warehouse
PAS report: Overall Final score not correct (#129134)
Problem
The Overall Final Score are not being calculated correctly within the Datawarehouse
Solution
Adjusted the calculation of the Overall Final Score to consider excluded Review Items
Additional fields for the Group / Classes Report (#120152)
Added the additional fields
Subject Setup: Setup and Config > Ruleset Setup > Product Setup > Learning Management > Product Setup > *subject*
Marksheet: LMS > [OPEN] Category > [OPEN] Pathway > Class/Group Step > Marksheet
Attendance History: LMS > [OPEN] Category > [OPEN] Pathway > Class/Group Step > Attendance History
Training Interventions (linked to subject setup): Administration > Training Interventions > Type: Certification Point
Training Interventions (subject assessments): Administration > Training Interventions > Type: Assignment
People Management
Error when deleting a user (#128917)
Problem
The permissions required to terminate an employee was different between the grid view and when editing an employee.
Solution
Ensured both termination methods do the same permission check.
User Error (#128950)
Problem
When multiple processes materialise the same people group at the same time, the people group calculation fails due to duplicate insert The performance management consumer for the reporting line consumes other reporting line types than LM and PM, resulting in unnecessary errors
Solution
When inserting, confirm that the entry is not part of the people group Filter the reporting line types used in the consumer and do not process the other types
Notifications
SMS Notifications Not Being Sent (#128562)
Problem
An SMS cannot be sent by event or process.
Solution
Correct test SMS sending from the template
Correct test SMS sending from the SMS setup
Implement mock sending of SMSs from both the SMS setup and the template
Correct the actual sending of an SMS via Zoom
All Tenant Subscription mails to come from Global Ruleset (#125943)
Problem
The Tenant Subscription process (Fee overdue, system close warnings, etc) must use the Global Ruleset templates.
Solution
The above template is set to be active only on the default ruleset.
Report Builder
Auto scroll when dragging and dropping columns (#123392)
Problem
The first problem is that dragging was registered when dragging in the middle of the table somewhere and also dragging the scrollbar at the bottom. This resulted in some strange behaviour while dragging/scrolling.
The second issue is that I added a timeout previously to try to limit the number of requests while rearranging the headers.
This resulted in the incorrect orders sometimes being saved, especially if you drag very quickly.
Solution
Made sure that you can only re-arrange/drag the columns on the headers of the columns and removed the timeout, ensuring that the correct order is always saved.
Ruleset Management
Uptime Indicator not shown on the Login page when the Uptime URL is empty (#128373)
Problem
When the default ruleset updates the default uptime monitor URL, the cache is not getting cleared for the other rulesets.
Solution
Added a cache implementation to bust the cache of multiple rulesets
Job Profiler
Support user shown on Org when ruleset is copied (#128500)
Problem
Support users included in people groups and org structure
Users linked to inactive or deleted appointments after termination cannot be found on people management
Solution
Add check to only include system users
Removed active and deleted position filter checks for people management queries.
I want to be able to find the terminated person (#122809)
Problem
Support users included in people groups and org structure
Users linked to inactive or deleted appointments after termination cannot be found in people management
Solution
Add check to only include system users
Removed active and deleted position filter checks for people management queries.
Version 9.1.150 (17 March 2025)
Notifications
SMS Notifications Not Being Sent (#128562)
Problem
An SMS cannot be sent by event or process.
Solution
Correct test SMS sending from the template
Correct test SMS sending from the SMS setup
Implement mock sending of SMSs from both the SMS setup and the template
Correct the actual sending of an SMS via Zoom
Changes to template are not being propagated (#128679)
All Tenant Subscription mails to come from Global Ruleset (#125943)
Problem
Tenant Subscription process (Fee overdue, system close warnings, etc) must use the Global Ruleset templates.
Solution
The above template is set to be active only on the default ruleset.
People Management
User error (#128950)
Problem
When multiple processes materialised the same people group at the same time, the people group calculation fails due to duplicate insert
The performance management consumer for the reporting line consumes other reporting line types than LM and PM, resulting in unnecessary errors
Solution
When inserting, confirm that the entry is not part of the people group
Filter the reporting line types used in the consumer and do not process the other types
Report Builder
Auto scroll when dragging and dropping columns (#123392)
Problem
The first problem is that dragging was registered when dragging in the middle of the table somewhere and also dragging the scrollbar at the bottom. This resulted in some strange behaviour while dragging/scrolling.
The second issue is that I added a timeout previously to try to limit the number of requests while re-arranging the headers. This resulted in the incorrect orders sometimes being saved, especially if you drag very quickly.
Solution
Made sure that you can only re-arrange/drag the columns on the headers of the columns and removed the timeout, ensuring that the correct order is always saved.
Ruleset Management
Employee data integration (#119925)
Uptime Indicator not shown on the Login page when the Uptime URL is empty (#128373)
Problem
When the default ruleset updates the default uptime monitor URL, the cache is not getting cleared for the other rulesets.
Solution
Added a cache implementation to bust the cache of multiple rulesets
Uptime Indicator shown on Employee Profile Summary even though ruleset 1 or user's ruleset have no Up-time Monitor URL set (#128374)
Problem
When the default ruleset updates the default uptime monitor URL, the cache is not getting cleared for the other rulesets.
Solution
Added a cache implementation to bust the cache of multiple rulesets
Helper text on Up-time Monitor URL to be adjusted (#128456)
Problem
The uptime monitor URL help text did not show the default URL that is set in ruleset 1.
Solution
Fixed the translations of the URL help text.
Performance Management
Review Period Dates & Review Year Dates - Validation Messages Include Time Erroneously (#125347)
Problem
On the review year setup and review period setup pages, when the End Date is selected as a Date that falls before the Start Date, validation correctly occurs; however, when the message displaying the error is displayed, it includes the time (00:00:00), which should be removed. The date is also in the format YYYY-MM-DD, could this be adjusted to reflect the correct Date Format in accordance with the Language Selected?
Solution
Changed the dates of the translations to short date string, with the correct timezone and culture
Unable to include the Value Survey score (#128772)
Problem
Saving a contract survey gave SQL Dapper an error because of new columns added to the query object used on an unrelated query, causing it to break here.
Solution
Made the query model used by the Survey creation distinct from the other usages.
Organisational Structure
Support user shown on Org when ruleset is copied (#128500)
Problem
Support users included in people groups and org structure
Users linked to inactive or deleted appointments after termination cannot be found in people management
Solution
Add check to only include system users
Removed active and deleted position filter checks for people management queries.
Data Warehouse
Improve performance on full refresh (#128181)
Problem
Data is deleted on a full refresh
Solution
Rather truncate than delete to improve performance
Version 9.1.149 (17 March 2025)
Translation
The last language the user was logged in as is used even though the user has selected another language (#126729)
Problem
When on the log-in page and the user change their language and log in. It does not update the preferred language.
This issue only happens on the deployed versions.
Solution
Implemented a possible fix for the deployed versions to make use of the correct context.
Search results show the accordion which results fall under (collapsed) (#126575)
Problem
When searching for a translation, although the section tables are filtered correctly, the section accordions stay collapsed; this makes it look like there is no match found if the section is collapsed.
Solution
When searching, always expand the section accordions where a match was found and reset accordingly on search clear
Performance Management
I want to import PM Agreements into V9 (#124514)
Replace the three imports with one full performance agreement import that can handle both creating new contracts as well as updating existing contracts. To achieve this, the following has been done:
Combine the Goals, Behaviour and Competency imports into one Full Performance Agreement Import that can handle all sections at once
Modify the current functionality to not only create but also update existing contracts
If the Import defines a section that is not configured on the review setup, those items will be exceptioned
Section Items will be matched by name to allow importing additional items on a contract
Implement the new requirement to import ratings
The import should adhere to all rules that are applied when a contract is created/updated from the Front End (Dual Approve, Final ratings only, etc)
Add checkbox to the import selection to "Approve contracts where completed"
When the above parameter is set, the import should try to approve the Objective Settings, and it should try approve ratings if all ratings are provided. All current Objectives and Ratings Approval rules should be followed.
Test multiple scenarios with new and existing contracts separately and on the same sheet; test with adding new items only to a contract; test Objectives and ratings approvals
Hide Evaluation Summary Button on Ratings Phase (#126277)
Problem
The evaluation summary button shows in the ratings phase for the employee even if the hide evaluation summary setting is on.
Solution
Added setting test on missed Show Evaluation Summary button
Evaluation Summary Button and Modal Available on Employee Self-Rating Modal (#126278)
Problem
Evaluation summary button shows in the ratings model for the employee even if the hide evaluation summary setting is on.
Solution
Added setting test on missed Show Evaluation Summary button
Cannot save a Review Setup once validation has been triggered (#126065)
Problem
The submit button gets disabled when clicked, therefore it cannot be submitted again if the form is invalid.
Solution
The disable is unnecessary because the loader is shown.
Review Period Dates & Review Year Dates - Validation Messages Include Time Erroneously (#125347)
Problem
On the review year setup and review period setup pages, when the End Date is selected as a Date that falls before the Start Date, validation correctly occurs; however, when the message displaying the error is displayed, it includes the time (00:00:00), which should be removed.
The date is also in the format YYYY-MM-DD; could this be adjusted to reflect the correct Date Format in accordance with the Language Selected
Solution
Changed the dates of the translations to short date string, with the correct timezone and culture
People Management
Business Address information contains grammar errors (#127652)
Problem
Business Address Information contains grammar errors
Solution
Using the signify translation tool to correct the grammar issue and update translations.
Error when user tries to reset their own password (#126175)
Problem
When the user tries to reset their own password, the attempt fails because the call is checking whether the user has the People Admin role.
This should not be done when the user is resetting their own password.
Solution
Changed the ResetPassword call to check whether the user has the People Admin role or if the user whose password is being reset and then allow the action. Also changed the message displayed for when the user resets their own password from "A notification has been sent to the Person to reset their password" to "A notification has been sent to you to reset your password."
As a person with access to Appointment History, I want to see the Start Date in Group and Company fields (#122770)
Problem
Cannot update the Start Dates
Solution
Added 2 fields that can be updated
Start Date in Group
Start Date in Company
As a person with access to Appointment History, I want to be able to add a Secondary Position (#122771)
Problem
A secondary position cannot be added
Solution
Add another section to add the secondary positions
Added the Start Date in Group and Company fields to the Employee Data Import (#126716)
Problem
The start date in the group is not on the people data import
Solution
Add the fields to the people data import
Master Data
Seeded data not appearing in drop downs on Employee Profile (#126916)
Problem
Location, country and province master data did not display on the "Address" section due to conflicting component names which also appear on the "Summary" section.
Solution
Give unique names to the component elements, ensuring that the master data correctly displays on both the "Address" and "Summary" sections
Navigating to the requirements tab displays an error (#127019)
Problem
Barched queries failed due to too many of the same foreign keys
Solution
Updated query to use DapperExtension to reduce the amount of parameters and remove batch query functionality
The load indicator is shown indefinitely when clicking on a person's profile (#127605)
Problem
DapperInBatched used incorrectly in translation query, causing an invalid SQL query to be generated.
Solution
Ensure that DapperInBatched is used correctly for the query.
Data Warehouse
Grades Mismatched in Signify & SFTP (#126629)
Problem
Data did not return on ReportBuilder due to PeopleGroups not being refreshed (Performance issues)
Solution
Adjusted PeopleGroupUsers task in DWH so that the table is truncated only between 12 and 1 in the morning and not as well in the afternoons
Date field is not recognised as a date in the report filter (#125626)
Problem
ApproverDate fields within jpHRProcesses are set as NVARCHAR DataType and not DATETIME2
Solution
Set datatype for ApproverDate fields from NVARCHAR to DATETIME2
Job Profiler
ListUsersExport not returning all or correct information (#126458)
Problem
The API call returns the OfoCode ID instead of the Name.
Solution
Corrected the Select statement to return the OfoCode Name.
Inactive Positions (Not Published) are not accounted for correctly by the system. (#126723)
Problem
Inactive Positions are not being accounted for correctly by the system.
Solution
Ensure that inactive positions are counted correctly.
Learning Management
No error detail if absent notification cannot be sent to Parent/Guardian (#123832)
Problem
Add a username column to the exported report to help identify which user needs their contact details updated.
Solution
Added the Username field to the NextOfKinInfo record in UserViewModel.cs .
Updated the NextOfKinInfo record in UsersServiceV1.cs to include the Username field.
Modified the RecipientConfirmationExportInfo message in learning_management.v1.proto to include recipient_username and reordered the fields.
Added the Username field to the NextOfKinInfo message in user_management.v1.proto .
Updated the AbsenteeNotificationsRecord and AbsenteeNotificationExportInfoRecord records in NotificationViewModel.cs to include the LearnerUsername and RecipientUsername fields respectively.
Modified the LearningManagementServiceV1 class to include the Username field in various LINQ queries and response objects.
Updated the AttendanceNotificationExportViewModel class to include the Username field in the NotificationEmailExportDTO .
Added the Username field to the NotificationEmailExportDTO record in AttendanceNotificationDTO.cs .
Modified the LearningManagementExportService class to include the Username field in the data export process.
Updated the learningManagement.json localization file to include the recipientUsername key and its translations in multiple languages.
Ensured consistency in the learningManagement.json file by adding the recipientUsername key and its translations across different locales.
Added the Username field to various classes and methods to ensure that the username is included in the data processing and export functionalities.
Report Builder
Error when saving without specifying a Report Name (#126792)
Problem
When trying to save a report without having specified a name for the report, an unspecified error occurs.
Solution
There is now a validation message when leaving the Report Name empty and clicking on Save
Notifications
Delete button remains disabled; therefore, unable to delete a schedule (#126839)
Problem
The Delete button remains disabled, and therefore, a Schedule cannot be deleted
Solution
Enable the delete button when text is added to the Reason field, and I have accepted the acknowledgement
Schedule Setup: User can set a one-off custom schedule to time already passed (#96569)
Problem
The user is still able to type in a time that has already passed.
Solution
Added validation to test if the time is valid; if not, it will be set to the min time
Changes to templates not saved on the first click (#116472)
Problem
Snack message not properly displayed when saving template.
Solution
Ensure the snack is properly displayed when saving the template
Tenant Management
Unable to copy the link of a newly created Tenant's URL (#125624)
Problem
Unable to copy the link of a newly created Tenant's URL
Solution
Changed the URL to use the Clipboard API, with a fallback for older browsers.
Imports
User Import Validation Report (#124039)
Problem
After a user import has been completed, there is no simple way for an imported user to validate that all data is the same as expected.
Solution
Add a report to be generated for each user import from that compares the data requested for import with the data currently in the system.
On the Notification | Imports page for the user import add an additional action User validation Report
When this button is clicked a report is generated for the list of users imported in the form of the import sheet
The report is a comparison report exporting the field requested for import vs the current system value of the import e.g.
Username, CurrentUsername, Name, CurrentName, Surname, CurrentSurname
Add a new first column ValidationMessage. When any field is not insync between the import and the current value then it lists the column name that is incorrect e.g.
Invalid Data: Name, Surname, StartDate
RULE: only allow for comparison/validation if import ran in the last day
Organisational Structure
Drag and Drop Positions incorrectly increments people count for Org Unit rather than vacancy count (#126413)
Problem
Drag and drop positions incorrectly increment people count for org unit rather than vacancy count.
Solution
Ensure that the people count increments correctly based on if it is a vacant position or not.
Version 9.1.148.2 (Support Release - 8 March 2025)
Imports
Error on Employee Automated import (#128700)
Problem
When the end date received from Payspace is equal to the start date, as is the case with enrolments, the record is rejected.
When the termination reason is not available in the case of the above case the record is rejected.
When an appointment is updated in Payspace the user receives a new position id which causes a new position to be created in Signify for each appointment update.
Solution
Remove the end date >= start date pre-import validation
Remove the termination required when the end date is provided pre-import validation
Change the position code to a concatenation of the organisation title and the employee id. This creates a position with a name per employee rather than per appointment change. This means that positions will not be reused should the employee transfer to a new position in Payspace .
Performance Management
Evaluation Summary not available after Final Approval (#129000)
Problem
When users view their contract and employee evaluation is on and has a due date, regardless of the phase, the button cannot be seen.
Solution
Add the button to the check for the user approved to always display in the rating phase
Add the button to the default fallback also
Unable to include the Value Survey score (#128772)
Problem
Saving a contract survey gave SQL Dapper an error because new columns were added to the query object used on an unrelated query causing it to break here.
Solution
Made the query model used by the Survey creation distinct from the other usages.
People Management
User error (#128950)
Problem
When multiple processes materialised in the same people group at the same time the people group calculation fails due to duplicate insert
The performance management consumer for the reporting line consumes other reporting line types than LM and PM resulting in unnecessary errors
Solution
When inserting confirm that the entry is not part of the people group
Filter the reporting line types used in the consumer and do not process the other types
Error after appointing a new person (#128545)
Problem
When appointing a new user the people groups are not busted in time of the profile page load due to eventual consistency
Solution
Move the busting to the job profiler service to bust the materialised cached in the service first and then all the rest of the services.
Termination reasons (#128535)
Problem
Inactive termination reasons are shown in the dropdown
Solution
Only show active termination reasons. You still cannot delete a termination reason if it has been used, regardless of whether it is active or not.
Version 9.1.148.1 (Support Release - 26 February 2025)
People Management
Error after appointing a new person (#128545)
Problem
When appointing a new user, the people groups are not busted in time of the profile page load due to eventual consistency
Solution
Move the busting to the job profiler service to bust the masterialised cache in the service first and then all the rest of the services.
Termination reasons (#128535)
When terminating an employee, choosing a termination reason and then deactivating that reason in MasterData should no longer be an option when terminating another user.
Only active termination reasons should be available as options
The deactivated reason should still be on the appointment history record.
Performance Management
Additional API End Point (#128359)
Problem
Request to make additional PM endpoint accessible via Api and include review year name on overall scores endpoint
Solution
Added Reviewyear name to ListUsersOverallScores and made ListReviewYears accessible via API.
Learning Management
No error detail if absent notification cannot be sent to Parent/Guardian (#123832)
Problem
No indication anything is wrong, only an empty cell within the columns email, name and surname
Solution
Updated LearningManagementExportService to handle cases where recipient details (email, name, surname) might be missing using localized strings.
Training Interventions Duplicating on Marksheet (#128548)
Problem
When viewing the mark sheet, duplicate training interventions and mark setups are shown when only 1 subject and training intervention have been linked.
The problem is that when a class subject or class training intervention is deleted, the query does not filter out the deleted records.
Solution
Change the select mark sheet setup query to exclude deleted class training interventions and class subjects.
Nextcloud error is displayed when you open the Marksheet link on an email (#124536)
Problem
URL is incorrect on Angelo's Sites
Solution
Added import for generateUrl from ../../helpers/generateUrl . Updated axios.get call to use generateUrl
Attendance and Marksheet not working anymore for Teachers (#128087)
Problem
The teacher can't view the Attendance list since the GPRC call doesn't allow LearningAdmins
Solution
Updated the [Authorize] attribute on the ListUsersLinkedToRoles method in the IdentityService class to allow access for users with either the PeopleManagementAdministrator or LearningAdministrator roles. Previously, only users with the PeopleManagementAdministrator role could access this method
Identity and Authorisation
People Connect Slowness in APAC (#128284)
Problem
For the SSO from V8 to V9, when the identity cookie has expired, a "Too_Many_Redirects" error is shown, and the browser session is terminated. Users are then unable to continue to V9 until they delete their cookies.
There are 2 problems here:
This is the iterative error that happens on the error page. When the 1st failure happens, the error page is loaded. The error page uses the same base layout as other pages. It tries to access resources/information that requires an authenticated user, but since that was the initial cause of failure, the error page breaks and gets redirected to the error page from start again, which continues to fail until the browser forces a discontinuation.
This is the initial failure, which is that the SSO redirect fails because MVC sees the user identity (from the webmvc) token as authenticated / still valid, but according to Identity. Api itself The user token has expired. The identity is never recreated until the cookies are physically deleted.
Solution:
Added unauthenticated try catches to the base layout to handle situations where the error page is loaded without a user being authenticated. This at least prevents the browser discontinuation and displays the error page, we will need to look at improving this handling in future.
Made modifications to how the SingleSignOn token is handled by always expiring and then deleting the MVC cookies and forcing the re-authentication with Identity through use of an additional ChallengeCompleted flag. This then checks whether it is a new SSO request and re-initializes the identity auth-flow regardless of whether the Identity User is seen as authenticated or not.
Imports
There is an overlapping position error when terminating one employee and appointing another in the position in the same file (#126495)
Problem
When importing for a position that does not exist in the system, the terminated record and transfer of the terminated record are handled as new appointments. When comparing the overlap, the terminated appointment's end date was not considered, thus causing the transfer to overlap the terminated record.
Solution
Change the overlap check
Add a unit test for the scenario
Notifications
Zoom Connect Credentials not persisting (#128180)
Problem
Was calling an async method while not awaiting
Solution
Added await to the call
Version 9.1.148 (24 February 2025)
Notifications
Notification sent out based on historical dates (#120742)
Problem
Licence expiry notifications are sent for inactive subscriptions.
Solution
Changed query to select only the latest subscription of the tenant
Zoom Connect Credentials not persisting (#128180)
Problem
Was calling an async method while not awaiting
Solution
Added await to the call
Add time to Welcome email (#124699)
Problem
An error is given when the Welcome Notification button on a user profile is clicked.
Solution
Fixed issue with getTemplates query
Ruleset Management
The payroll name is not saving and PowerShell cannot be null (#128236)
Problem
The payroll connector was not saving due to a prototype not being nullable, and the name field was not saving due to multiple name fields with the same ID
Solution
Made prototype nullable and chose name field based on visible container.
Performance Management
Copy Over Scorecard (#128182)
Problem
When creating a new contract and selecting Copy From Another, only subordinate contracts for the current Review Year were returned, you then cannot create a contract for someone in the current year from a colleague on a previous year.
Solution
Fix the query that returns the list of contracts to pull for all previous years, also remove the subordinate ID fetch from JobProfiler and instead rely directly on the materialized table PerformanceManagerUserIds. Made the selection modal scrollable.
Inactive Rating Scale item still taken into account (#127347)
The following changes were made:
Disable the Active toggles when anyone has started rating - same as the delete rule
Add a tooltip on the disabled Active
This rating value is already in use by some agreements
Also, disable the Click to add another item
When a rating value has not yet been used and you make the item inactive, then this should not reflect as an option on the agreement when rating
Hide Evaluation Summary Button on Rating Phase (#126277)
Problem
Evaluation summary button shows in the rating phase for the employee even if the hide evaluation summary setting is on.
Solution
Added setting test on missed Show Evaluation Summary button
Evaluation Summary Button and Modal Available on Employee Self-Rating Modal (#126278)
Problem
Evaluation summary button shows in the rating model for the employee even if the hide evaluation summary setting is on.
Solution
Added setting test on missed Show Evaluation Summary button
PM Module Not Working (#126464)
1) 2 offline refresh jobs were still running that I stopped I believe they were holding onto resources
2) At the same time 3 update processes were running that were blocking one another, I think the offline refresh jobs may have affected these, once the jobs stopped the processes were completed.
3) One of the queries pulling PG info is intermittently slow, although it seems to be fine now. There may be PG changes happening which is requiring refreshes on the PG and affecting the speed of the call. We will have to keep monitoring this, if we do experience significant performance problems again we can investigate further to try and see if we can identify something.
Job Profiler
List pages reverting to page 1 (#126261)
Problem
When on the job profiler page and I go to page 2 and edit a record and navigate back it redirects to page 1. I want it to remember that I was initially on page 2
Solution
Implemented a solution to remember the page, save it in local storage and when on the edit page I add the page to the query params of all back buttons and remove it from local storage. Thus it remembers the page but also forgets it when navigating completely away
Data Warehouse
Update Start Date in Group & Company; Add Secondary Positions (#121328)
Added the following fields:
Role Allocation Percentage
Start Date in Group
Start Date in Company
Add 2 new interpolation fields (#127243)
Two additional Interpolation actual value fields have been added, one for the Employee's Actual Value and another for the Manager's Actual Value.
The previous Interpolation Actual Value field now serves as the Final Actual Value. The following 2 fields were added:
InterpolatedManagerValue
InterpolatedUserValue
Adjust DWH deployment workflow for V8 DWH packages (#126906)
Problem
Workflow can only deploy V9 DWH packages
Solution
Adjust workflow (by adding a dropdown for V8 database names) to deploy V8 DWH package.
Employee Import
Error on People Group Import Request under Integrations (#127998)
Problem
The prevented import translation is not shown when requesting bulk imports within 5mins from each other
Solution
Add logic to show the message when forbidden
Learning Management
No error detail if absent notification cannot be sent to Parent/Guardian (#123832)
Problem
No indication anything is wrong only an empty cell within the columns email, name and surname
Solution
Updated LearningManagementExportService to handle cases where recipient details (email, name, surname) might be missing by using localized strings.
Version 9.1.147 (24 February 2025)
Performance Management
The evaluation Period drop down is emptied when you save/reload (#124214)
Problem
The new Evaluation Period field is cleared every time the page reloads, even after saving
Solution
Ensure the values are saved correctly even when reloading the screen
Inactive Rating Scale item still taken into account (#127347)
Problem
When you configure the PM module with a rating scale of 5, for example, and the 5th rating is disabled, the PM calculation still includes the disabled rating.
Solution
Disable the Active toggles when anyone has started rating - same as the delete rule
Add a tooltip on the disabled Active
This rating value is already in use by some agreements
Also, disable the Click to add another item
When a rating value has not yet been used and you make the item inactive, then this should not reflect as an option on the agreement when rating
Notifications
Schedule Setup: Able to save monthly (days of the week schedule) without specifying Weeks and Days (#86006)
Problem
When selecting monthly as a schedule type the "Choose Weeks" and "Choose days" dropdowns did not show. Also validation issues
Solution
Issue in the code that did not call correctly on the change event, so a fix for that has been implemented.
Also added the requested validation styling on dropdowns
Email sent when new ruleset is created contains Reset OTP placeholder instead of actual OTP (#128113)
Problem
User authentication and user forgot password used the incorrect placeholder's name for "ResetOTP"
Solution
Ensure that those events use the correct placeholder's name.
Version 9.1.146 (24 February 2025)
Notifications
The user who registers does not receive their email (#126173)
Problem: When a new user registers on the system using the Identity auto registration functionality:
The default appointment record did not get created leading to the user being seen as inactive due to not having an appointment.
The email confirmation email did not get sent out and the user could never continue with the registration
Solution:
Ensure that when registering the default appointment gets created.
Resolve the issue where the confirmation email was not getting sent out after the user registers.
Add time to Welcome email (#124699)
Problem
When the Welcome Notification button on a user profile to is clicked, an error is given.
Solution
Fixed issue with getTemplates query
Data Warehouse
Add 2 new interpolation fields (#127243)
Two additional Interpolation actual value fields have been added, one for the Employee's Actual Value and another for the Manager's Actual Value.
The previous Interpolation Actual Value field now serves as the Final Actual Value.
Please add the following 2 fields from ContractPeriodSectionItems to the DWH & DD:
InterpolatedManagerValue
InterpolatedUserValue
Rename the InterpolatedActualValue on the DWH to "InterpolatedFinalValue" (only change on DD and DWH for the client's benefit)
Adjust DWH deployment workflow for V8 DWH packages (#126906)
Problem
Workflow can only deploy V9 DWH packages
Solution
Adjust workflow (by adding a dropdown for V8 database names) to deploy the V8 DWH package.
Grades Mismatched in Signify & SFTP (#126629)
Problem
Data did not return on ReportBuilder due to PeopleGroups not being refreshed (Performance issues)
Solution
Adjusted PeopleGroupUsers task in DWH so that the table is truncated only between 12 and 1 in the morning and not as well in the afternoons
The date field is not recognised as a date in the report filter (#125626)
Problem
ApproverDate fields within jpHRProcesses are set as NVARCHAR DataType and not DATETIME2
Solution
Set datatype for ApproverDate fields from NVARCHAR to DATETIME2
Import
Error on People Group Import Request under Integrations (#127998)
Problem
The prevented import translation is not shown when requesting bulk imports within 5mins from each other
Solution
Add logic to show the message when forbidden
Correct the domain errors for the job profiler and report builder that show only the translation key
Learning Management
No error detail if absent notification cannot be sent to Parent/Guardian (#123832)
Problem
No indication anything is wrong only an empty cell within the columns email, name and surname
Solution
Updated LearningManagementExportService to handle cases where recipient details (email, name, surname) might be missing by using localized strings.
People Management
Error when a user tries to reset their password (#126175)
Problem
When the user tries to reset their password the attempt fails because the call is checking whether the user has the People Admin role. This should not be done when the user is resetting their password.
Solution
Changed the ResetPassword call to check whether the user has the People Admin role or is the user whose password is being reset and then allowed the action. Also, change the message displayed when the user resets their password from "A notification has been sent to the Person to reset their password." to "A notification has been sent to you to reset your password."
Learning Store
Learning Store Description on the deactivated product does not contain any information (#125890)
Problem
There is no description when the product is deactivated
Solution
Add the description
The Learning Store module enables organizations to showcase their eLearning library to external users. It also integrates eCommerce, allowing the library to be made available for purchase.
Master Data
Load indicator shown indefinitely when clicking on person's profile (#127605)
Problem
DapperInBatched was misused in the translation query, causing an invalid SQL query to be generated.
Solution
Ensure that DapperInBatched is used correctly for the query.
Navigating to the requirements tab displays an error (#127019)
Problem
Barched queries failed due to too many of the same foreign keys
Solution
Updated query to use DapperExtension to reduce the number of parameters and remove batch query functionality
Seeded data not appearing in drop downs on Employee Profile (#126916)
Problem
Location, country and provided master data did not displayed in the "Address" section due to conflicting component names which also appear in the "Summary" section.
Solution
Give unique names to the component elements, ensuring that the master data correctly displays on both "Address" and "Summary" sections
Ruleset Management
Able to log into a deactivated ruleset (#126304)
Problem
User could not log in immediately after a ruleset was activated / User could log in after a ruleset was de-activated.
Solution
Bust the cache when activating/deactivating ruleset
Performance Management
Interpolation to allow decimal actual values (#126547)
Problem
The interpolated ratings only allow capturing whole number actual values, the request is to allow to capture decimals.
Solution
Make the interpolation ratings value column decimal and apply type changes accordingly.
Version 9.1.145 (24 February 2025)
Ruleset Management
Able to log into a deactivated ruleset (#126304)
Problem
The user could not log in immediately after a ruleset was activated / User could log in after a ruleset was de-activated.
Solution
Bust the cache when activating/deactivating the ruleset
Performance Management
Interpolation to allow decimal actual values (#126547)
Problem
Cannot add decimal actual values
Solution
Change the functionality to allow for decimals
Action plan copy from previous does not work as expected (#124270)
Problem 4 Action plan-related fixes on this PR.
This label was updated, it does not reflect Review Periods but rather the Review Setups
There was some confusion as to how the Copy Action Plans From Previous should work, the consensus between me, Bertie and Lee-Ann is that you can only copy from your previous review years. You cannot use this to copy APs from an earlier Review Period within the same setup (This should happen with the CreateContractFromPrevious fix 4) Changed the query for the review years to exclude the year for the current contract.
The Copy Action Plans From Previous was not copying all the information, only Name and Description. Including now all AP fields on the copy.
When doing CreateContractPeriodFromPrevious it must also copy any Action Plans that exist on that contract period. (which it did not do)
Solution
Updated the translation to correct the label to show Review Setup
Changed the query for the review years to exclude the year for the current contract.
Modified the Action Plan handlers and queries to select all the additional information and to also copy that when creating the item. Had to fix an update here and there
Added a new portion to the CreateContractPeriodFromPrevious handler to check if there are any action plans on the source and then copy that to the new contract. Tries to copy the Ad-hoc items as well as those assigned to specific KPIs.
As a Performance User, I want to have a button that will open the evaluation raters page (#123615)
Problem
As a Performance User, I want to have a button that will open the evaluation raters page
Solution
Added a button on the PM dashboard to go to the evaluation page.
As a Performance Management Administrator, I want to have an additional setting that hides the Evaluation Summary page from employees (#123617)
Problem
As a Performance Management Administrator, I want to have an additional setting that hides the Evaluation Summary page from employees.
Solution
Added a setting on the Review Setup page under " Allow Anonymous Evaluations" to hide the Evaluation Summary page from Employees. When this setting is enabled, the Evaluation Summary page can only be accessed by the Manager.
PM Error with Review Years (#126058)
Problem
PM Dashboard is not loading.
Solution
Fixed issue with urlHelper not resolving.
As a Manager, I want to see the Ratings per KPI on the Summary page (#123611)
Problem
As a Manager, I want to see the Ratings per KPI on the Summary page
Solution
Implemented, minimum maximum and average ratings per KPI and overall ratings
"Allow Interpolation" does not enable the switch on templates (#126195)
Problem
The "Allow Interpolation" does not enable the switch on templates
Solution
Added the AllowInterpolation to the view modal return.
As a Performance User, I want to copy the weights of the contracts instead of the Review Setup when using the Copy from Previous (#126081)
Problem
As a Performance User, I want to copy the weights of the contracts instead of the Review Setup when using the Copy from Previous
Solution
When the auto-copy setting is on, the section weights will copy from the contract, otherwise it will copy from the review
As a Manager, I want to print the Evaluation Summary (#123613)
Problem
As a Manager, I want to print the Evaluation Summary
Solution
Added a print preview page to show all details of the evaluation summary modal
Import the 360 score to PM (#112612)
In V8
Add an Endpoint to return all Evaluation periods that are active from
Add an Endpoint to pull the 360 scores based on a DateTime
In V9
Add a Master Data Table in Performance Management called EvaluationPeriods
Add a Job that pulls master data from V8 daily
Create a reusable job that can be used for multiple daily tasks in the PM service
Add two drop downs on value surveys on the Review Year, review setup
List of Evaluation Periods
The import options, option two is hidden when the setting: All manager to change value survey score, is off on the review setup
Store the data in the DB for the review year
Add a Command that pulls the approved 360 scores from V8 via users
The command should only pull the data from the last successful import of data
The command should adhere to the import type of the review year item
Create a query to fetch the review year for the linked evaluation period, match the linked period by name to the linked evaluation period and user name received from V8
Use the query to map the data that should be changed for new scores and overriding current scores
Create a new bulk command based on UpdateContractSurveyCommand to update the value score recursively and save entities once
Use the import service to store the run dates of the import
Automate the import with a quartz job in the Import service
The import service should call the PM service to perform the action
The import service is responsible for the external fetch of data
Add a button to the integration tab to import the data from V8 to V9 on demand
Incorrect message when setting up Interpolation (#126467)
Problem
An incorrect message is displayed when you set up interpolation mapping but start with the mapping at the bottom.
Solution
Fixed the issue where the translation is broken when starting at the bottom rating first
Translations
Themes translation not showing on Login (#126618)
Problem
Translations not pulling through to the login page
Solution
Resolve the issue and make sure that the translations are displayed
Master Data
Seeded data not appearing in drop downs on Employee Profile (#126916)
Problem
Duplicate master data is causing issues in the system.
Solution
Add unique constraints on the master data name per ruleset on the simple master data tables that make sense e.g.
Data in select * from v9_master_core.masterdata.Tables
Simple MasterData - should only consider name and ruleset id
Add unique constraints on the database for tables
In the MasterData engine catch translatable exceptions to display on front end if the unique constraint is violated
Job Profiler
ListUsersExport not returning all or correct information (#126458)
Problem
The API call returns the OfoCode ID instead of the Name.
Solution
Corrected the Select statement to return the OfoCode Name
Notifications
Add time to Welcome email (#124699)
Problem
When the Welcome Notification button on a user profile to is clicked, an error is given.
Solution
Fixed issue with getTemplates query
Copy template does not copy the attached files on the Email panel (#101268)
Problem
When the template is copied, the attachments are missing from the newly copied template.
Solution
When copying a template, the original template's attachments will also be copied.
Fixed next cloud copy
Schedule Setup: Able to save weekly schedule without specifying days of the week (#85993)
Problem
When on the notification schedular setup form, the validation styling does not work.
Solution
Implemented a workaround fix to add the styling to a multi-select Select2
Indicate customised templates (#126054)
Problem
Indicate for each email template whether the template has been customized.
The Restore To Default button should only be clickable for customized templates and added tooltip to the button.
Move the Dashboard tab at the bottom and rename it to Statistics.
The back button on the template view page must keep the search results and the opened tab.
Solution
When a template is customized, a checkmark is shown on the custom column and a tooltip is added: "This template has been customized.". If a template is restored, the checkmark is removed.
Restore to default will be disabled if the template is not customized.
The search results of the templates table persist if the template is edited and the back button is used.
The dashboard tab is renamed to Statistics and moved to the bottom of the tabs.
Extra detail to be added to all templates (#126050)
Problem
For all emails that are sent, add Tenant ID, Ruleset ID and template ID (And a C if the template is customized) at the bottom of emails. Also, show the codes on the template list.
Solution
All emails that are sent have a light grey code at the bottom with the format: [T{TemplateId}R{RulesetId}-{TemplateId] - [T17R2-44] or [T17R2-44 C] for customized templates. The code is also added to the template list
Data Warehouse
Grades Mismatched in Signify & SFTP (#126629)
Problem
Data did not return on ReportBuilder due to PeopleGroups not being refreshed (Performance issues)
Solution
Adjusted PeopleGroupUsers task in DWH so that the table is truncated only between 12 and 1 in the morning and not as well in the afternoons
Organisational Structure
As a person with access to the Organisational Structure, I want to see the linked positions on the same page (#124045)
Business Rules
Hide the Search option in the Header of the page
When clicking on the Organisational Structure menu under the gear, the landing page should include the linked positions - the page is split into two
The first time the page is accessed, only the Organisational Units are shown on the left
Expand the first 3 levels of the org chart when opening
Suggestion: Add buttons to open the levels
The drag & drop functionality of org units should still apply
The Add, Edit and Delete functionality should still be available ( )
Add a tooltip on the ([nr] People, [nr] Vacancies, [nr] Inactive)
Underline the text
When clicking on this text, load the positions on the right
When clicking on an Org Unit, show the linked positions on the right
When clicking on the arrow to the left of the org node ( ), expand the org node but don’t load the positions. It would be great if clicking on it could also expand (without loading the positions).
Only load the positions when clicking on the part ( [nr] People, [nr] Vacancies, [nr] Inactive )
The ability to drag & drop positions to other org units should still be available
The filters should be:
Filled Positions (Default)
Vacant Positions
Inactive Positions
All
When no positions are linked to an Org Unit, show a placeholder
Text (Add translations for the text)
There are no positions in this organisational unit.
There could be positions in subordinate organisational units.
Add a + Position button on the right
This will work the same as when appointing a person
Job Title field should be blank
When selecting a job title from the drop-down, change the position title to the same value, after which the user can update the position title. Do this on every Job Title change, even if the position title is populated.
Location in organisation to be auto-completed
Open in a new tab, but hide the menu
Add an anchor tag when the person is a Job Profiler Admin
When clicking on the job, open the job details in a new tab
Tenant Management
Unable to copy the link of a newly created Tenant's URL (#125624)
Problem
Unable to copy the link of a newly created Tenant's URL
Solution
Changed the URL to use the Clipboard API, with a fallback for older browsers.
Access Management
Change the System Access page to ensure there is no scroll bar at the bottom (#124625)
Problem
When on the access management page the page overflows and pushes everything of the screen, no matter what you zoom size is.
Solution
Found that the problem is the initialisation of the text areas, when one is initiated it creates a container and when the second is also initialised it creates another container that is exactly the same. Added a check to not add a second container on both.
Add uptime indicator (#125149)
Problem
The system does not allow users to indicate the uptime of the services
Solution
Added a setting “Up-time URL” on the Ruleset | System Access tab
Added icons to the login page and the user profile to navigate to the up-time monitor page. If no URL is specified, the default will be used.
Fixed the default URL of the privacy policy.
Import
As a person with access to a person's profile, I want to have the Location field synced to v8 (#122839)
Problem
The location field not syncing to V8
Solution
Add location to the user export on V9
Map the location on V8 to the bulk employee import
Implement location in the menu import
The validation message is incorrect when there is an issue with a position end date (#120182)
Problem
Incorrect error validation message
Solution
Corrected error validation message
People Management
Change search text (#126051)
Problem
When filtering with either the search or the surname picker or both the search text should display accordingly
Solution
Implemented the changes to show the correct text as requested
Kudo Widget
Send Kudo notification (#122323)
Problem
An email should be sent when the Kudo has been saved by the person sending it.
Solution
Added notification for the person receiving the Kudo
People Groups
People groups - automatically create a people group when a manager opens system menus (#124188)
Problem
Manager people groups are not created automatically on V9 for all managers. This creates a lot of unnecessary data that is not always used.
Solution
The error displayed when viewing a list of employees on a people group (#125951)
Problem
The error displayed when viewing a list of employees on a people group
Solution
Saw that there were changes made to the query and the query broke, thus the reason for the error
Report Builder
Create a log entry when NextCloud credentials are invalid (#126158)
Problem
When a file upload fails because of invalid Nextcloud credentials, it is not clear from the error log
Solution
Improve the error logged to indicate a problem with the credentials
Version 9.1.144.3 (Support Release - 18 February 2025)
Performance Management
Copy Over Scorecard (#128182)
Problem
When creating a new contract and selecting Copy From Another, only subordinate contracts for the current Review Year were returned, you then cannot create a contract for someone in the current year from a colleague on a previous year.
Solution
Fix the query that returns the list of contracts to pull for all previous years, also remove the subordinate ID fetch from JobProfiler and instead rely directly on the materialized table PerformanceManagerUserIds.
Made the selection modal scrollable.
Version 9.1.144.2 (Support Release - 14 February 2025)
Translations
Themes translation not showing on Login (#126618)
Problem
Translation is not pulling through to the login page
Solution
Implement the translations on the login page
Ruleset Management
Able to log into a deactivated ruleset (#126304)
Problem
User could not log in immediately after a ruleset was activated / User could log in after a ruleset was de-activated.
Solution
Bust the cache when activating/deactivating the ruleset
Master Data
Seeded data not appearing in drop downs on Employee Profile (#126916)
Problem
Location, country and province master data are not displayed in the "Address" section due to conflicting component names which also appear in the "Summary" section.
Solution
Give unique names to the component elements, ensuring that the master data correctly displays on both "Address" and "Summary" sections
Job Profiler: Navigating to the requirements tab displays an error (#127019)
Problem
Barched queries failed due to too many of the same foreign keys
Solution
Updated query to use DapperExtension to reduce the number of parameters and remove batch query functionality
Load indicator shown indefinitely when clicking on person's profile (#127605)
Problem
DapperInBatched was used incorrectly in the translation query, causing an invalid SQL query to be generated.
Solution
Ensure that DapperInBatched is used correctly for the query.
People Management
Error when the user tries to reset their password (#126175)
Problem
When the user tries to reset their password the attempt fails because the call is checking whether the user has the People Admin role.
This should not be done when the user is resetting their password.
Solution
Changed the ResetPassword call to check whether the user has the People Admin role or is the user whose password is being reset and then allowed the action.
Also, change the message displayed when the user resets their password from "A notification has been sent to the Person to reset their password." to "A notification has been sent to you to reset your password."
Notifications
The user who registers does not receive their email (#126173)
Problem
When a new user registers on the system using the Identity auto registration functionality:
The default appointment record did not get created leading to the user being seen as inactive due to not having an appointment.
The email confirmation email did not get sent out and the user could never continue with the registration
Solution
Ensure that when registering the default appointment gets created.
Resolve the issue where the confirmation email was not getting sent out after the user registers.
Email sent when new ruleset is created contains Reset OTP placeholder instead of actual OTP (#128113)
Problem
User authentication and user forgot password used the incorrect placeholder's name for "ResetOTP"
Solution
Ensure that those events use the correct placeholder's name.
Performance Management
Unable to Link Scorecards to Users (#127841)
The following changes were made to the bulk create and delete pages to allow it to work for small and large datasets
The dropdown that searches on a user has been replaced with a list textarea where you can paste a list of usernames to search for. The load of all users to filter appropriately here was too much, and there was not enough time to implement proper async loading in the dropdown.
The load all option will only load the first 1000 records that match your search criteria, the browser cannot handle the load of any more data than that without hanging
The people groups filter is now applied using the materialised people group data
When load all is done only the last part of the org path is displayed e.g. ...Parent Node Name | Position Node Name
The existing performance contract filter was removed as it caused performance issues as how the data is loaded from different contexts
Problem
When loading large people groups the select lists fail to load, the search does not work, the job grade and job profiles do not include all the options
Solution
Add a new list search and replace select 2
Implement and refactor appointment and performance queries to user-materialised people group users
Change load all to be limited to 1000 records
Remove the filter on existing performance contracts
Version 9.1.144.1 (Support Release - 13 February 2025)
Translations
Themes translation not showing on Login (#126618)
Problem
The translations on the login page are not working
Solution
Ensure the translations pull through to the login page
Ruleset Management
Able to log into a deactivated ruleset (#126304)
Problem
The user could not log in immediately after a ruleset was activated / User could log in after a ruleset was de-activated.
Solution
Bust the cache when activating/deactivating the ruleset
People Management
Error when a user tries to reset their password (#126175)
Problem
When the user tries to reset their password the attempt fails because the call is checking whether the user has the People Admin role. This should not be done when the user is resetting their password.
Solution
Changed the ResetPassword call to check whether the user has the People Admin role or is the user whose password is being reset and then allowed the action.
Also, change the message displayed when the user reset their password from "A notification has been sent to the Person to reset their password." to "A notification has been sent to you to reset your password."
Master Data
Navigating to the requirements tab displays an error (#127019)
Problem
Barched queries failed due to too many of the same foreign keys
Solution
Updated query to use DapperExtension to reduce the number of parameters and remove batch query functionality
Load indicator shown indefinitely when clicking on person's profile (#127605)
Problem
DapperInBatched was misused in the translation query, causing an invalid SQL query to be generated.
Solution
Ensure that DapperInBatched is used correctly for the query.
Notifications
The user who registers does not receive their email (#126173)
Problem
When a new user registers on the system using the Identity auto registration functionality:
The default appointment record did not get created leading to the user being seen as inactive due to not having an appointment.
The email confirmation email did not get sent out and the user could never continue with the registration
Solution
Ensure that when registering the default appointment gets created.
Resolve the issue where the confirmation email was not getting sent out after the user registers.
Version 9.1.144 (3 February 2025)
People Groups
The error displayed when viewing a list of employees on a people group (#125951)
Problem
The error displayed when viewing a list of employees on a people group
Solution
I saw that there were changes made to the query and the query broke, thus the reason for the error
Version 9.1.143 (3 February 2025)
Tenant Management
Able to log into a deactivated ruleset (#126304)
P&S
Import
Employee Data Import error (#126586)
Problem
The pre-import does not validate duplicates correctly when the strings have different cases
The staging translation does not display correctly
Solution
Add case-insensitive checks in the pre-import validation for
Duplicate usernames
Job with code ({item.JobCode}) has differing data: {jobProfilerValidation} for fields Job code, Occupational Categories, OFO code, job grade
Position {item.PositionTitle}({item.PositionCode}) has different position titles for fields Position Code
More than one active appointment for a position. on position code
Corrected and added missing translations
Version 9.1.142 (3 February 2025)
Imports
[Imports] [Auditing] ValueObjects in tables are not audited (#116420)
Problem
When only a Value Object has changed on an Entity (as opposed to a normal property) the auditing does not pick up that the entity should be audited because it does not evaluate the Value Object properties of the Entity.
Solution
Unfortunately, there is no easy way to directly check the previous vs current values of Value Object properties as you would do with a normal entity property change.
Value Objects are essentially immutable and any 'change' deletes the previous entity reference and adds a new one.
To still be able to pick up changes, however, you can access all the 'Added' reference entities of an entity (the value objects essentially) and then compare that to the list of deleted entities from the Change Tracking.
If it is the same type and has the same FK then assume that this Deleted entity is the pre-change version of the Added entity.
Once the deleted entity is retrieved compare Added against Deleted properties and return true if any changes.
Employee data import error (#125558)
Problem
The org nodes are duplicated when no org structure exists and multiple users are linked to the node
When importing nodes with accents in the name the import fails
The bulk import to V8 for the job structure is blocked by the full org structure import when errors occur
Solution
Remove unused caching check between node creation and replace with existence check on the newly created nodes
Add accent escapes when querying the existing org nodes.
Reorder the bulk import types
Import error on click of Recruitment Requisition (#125962)
Problem
Cannot import employee number with a plus into V8 from V9 e.g. LM+2
Solution
URL encode the query string params to ensure when decoded in V8 chars like + is not replaced by a space
Report Builder
Report Builder: Add Improvement Strategy Field (#125557)
Problem
Add the "Improvement Strategy" Field to the report builder
Solution
Added Data Source "Competency Proficiency Level" to the report builder that also contains the field "Improvement Strategy"
Auto-scroll when dragging and dropping columns (#123392)
Problem
Dragging columns did not result in the table scrolling as you drag.
Solution
Ensure that the table scrolls as you drag the columns.
Header
Search and bulleting icon needs more padding between them (#113538)
Problem
Search and bulleting icon needs more padding between them
Solution
Using bootstrap classes to space elements evenly.
Notifications
Fix Email template (#125873)
Problem
HrProcessRequestMoreInfo has an incorrect event and recipient attached.
Solution
Fix foreign keys on Templates and Recipients tables for the HrProcessRequestMoreInfo template
People Management
Login Details (#126207)
#1 Problem
Contact numbers can have special characters included that is not cached by the int tel input IsValidNumber validation.
For example '575-12345' is allowed, however, this breaks the V8 import which is not allowing the numeric values.
Solution
Strip any special characters from the input, only allow numeric 0 - 9, spaces and '+'
#2 Problem
The en-GB product unavailable translation still has the contact support@signify.co.za . Was requested to change to contact your administrator
Solution
Change the translation to "contact your administrator"
Reduce unnecessary page load on edit page (#124704)
Problem
Inconsistent cursor on user profile's nav tabs
Solution
Changed the cursor to hand on the tab headings.
Disabled user (#126341)
Problem
When a user is imported the materialised people group users cache is not busted
Solution
Consolidate the materialised people group users busting using events within the cache implementation service to ensure when Bust the Redis people group then the DB will also be busted.
Simplified the code in the services to only use the cache implementation service to bust the people group cache.
Performance management
PM Interpolation should allow 0 value (#126280)
Problem
Currently, when rating on Interpolated items, an actual value of 0 (zero) is not allowed, this should however be an option as you might want to have an actual value of 0 tied to the lowest rating
Solution
Change the interpolation actual value validation to allow capturing of zero as a value. Note that negative values are still blocked.
Allow Employee and Manager ratings on interpolation (#126340)
Problem
Interpolation was based on having a single Actual Value, however client requested that we allow for the manager & person to capture individual actuals as there are scenarios where the actuals might be disputed.
Solution
Added actual value columns for person and manager, saved relevant actual value according to which person is rating modified queries and react state assignment to set relevant fields correctly.
Fix the issue on the Dashboard where the contract is not moved to the overall section if all items are interpolated
Data Warehouse
V8 - Add package set to do a full refresh of data (#126236)
Problem
Full refreshes of DWH tables are required on an ad-hoc basis
Solution
Add a package setting called DoFullRefresh and default it to 0
When it is 1 change the reference date for refreshes to 1900/01/01, which will force a full refresh
Translations
Language Translation not saving (#126551)
Problem
The save button does not enable when going to a different tab than 'global' and also not when searching. The issue is that the 'active culture' gets overwritten because of incorrect lookup to the wrong nav-tabs which resulted in it not picking up the correct stored translation mapping and not determining any changes.
The second problem is when searching or reloading the page on the current sub-tab, the Save button does not work, this was because the form to post is defaulted to {culture}-global and not to whatever tab you are currently on.
Solution
Correct the determination to get the active culture by not looking at subTabs.
Change the submit buttons related to form ID to post to on page load
Master Data
Change Activities field length on master data (#126538)
Problem
The PM Master data text areas are limited to 2000 and not the standard text area max input. Activities however allow for this on Template and Contract levels.
Solution
Allow a 4000-character limit when the field is Activities.
Version 9.1.141 (3 February 2025)
Imports
Employee data import error (#125558)
Problem
The org nodes are duplicated when no org structure exists and multiple users are linked to the node
When importing nodes with accents in the name the import fails
The bulk import to V8 for the job structure is blocked by the full org structure import when errors occur
Solution
Remove unused caching check between node creation and replace with existence check on the newly created nodes
Add accent escapes when querying the existing org nodes.
Reorder the bulk import types
User Import: Change appointment import to import by action type (#121473)
Problem
When a user is terminated or transferred in the same file the user conflicts with a new user taking the same position
The old User was terminated and the New user was appointed in the same position within the same import after the termination
The old user transfers to a new position and the new user receives the old user's position after the transfer
When the position is changed but the start date of the appointment remains the same the user appointment is not corrected
Appointment Import Rules
Terminations
When an end date is provided for the active position
With a termination reason, end on the imported date with the reason provided
Without a termination reason, end the active appointment with the date
Clear the current termination reasons if they exist
When the terminated record imported's position is different from the latest appointment position the system handles the record as a transfer to a terminated position
When the terminated record imported is on the same position but the start date, termination date, appointment type, and termination reason differ handle it as an appointment correction
When no appointment exists and the user is imported with an end date handle as a new appointment
New Appointments
When a user has no appointments in the system
Check for overlapping appointments for the position
The start and end date of the imported position must not overlap any existing appointment for the position
The appointment type must exist as master data
Transfers
When the user has current appointments in the system, terminated or active
The user's latest appointment is active
Check for overlapping appointments for the position
The start and end date of the imported position must not overlap any existing appointment for the position
Check for overlapping appointments with the current user's appointments and other than active
The appointment type must exist as master data
End the current active appointment with end date = new appointment start date -1
The user's latest appointment is terminated
Check for overlapping appointments for the position
The start and end date of the imported position must not overlap any existing appointment for the position
Check for overlapping appointments with the current user's appointments
The appointment type must exist as master data
Appointment Corrections
The user has an appointment
The latest appointment position matches the import position appointment
The start date, end date, appointment type, and termination reason differ from the latest appointment for the user
Check for overlapping appointments for the position
The start and end date of the imported position must not overlap any existing appointment for the position
Check for overlapping appointments with the current user's appointments
The appointment type must exist as master data
Report Builder
Auto-scroll when dragging and dropping columns (#123392)
Problem
When dragging and dropping a column to another position, you can only drag to the field that is left on the screen, even if there are other fields to the left of the list.
This means that you must drop the field where you can, wait for the page to reload, scroll to the field again and drag it further left.
Solution
While dragging it “past the left”, the result set must scroll to the right until you get to the preferred fields and then drop the column
Version 9.1.140 (3 February 2025)
Performance Management
Add setting to switch interpolation ON and OFF - default should be OFF (#123353)
Problem
Interpolation is ON by default and causes unnecessary confusion
Solution
Added a "Allow Interpolation" setting to the review setup
Adjust the weight of the existing period when adding a new Review Period (#87333)
Problem
When adding a new Review Period you are only asked to provide a description.
After saving, the item will be added with a weight of 0.
This means that you need to edit that item again to change the weight.
In addition, the first period is automatically added with a weight of 100, meaning that you will need to edit that item first before you will be able to set the weight of the new item.
Solution
Add a weight field to the "+ Review Period" modal, so that you can set the weight of the new item.
Consider adding a method to automatically adjust the weights of existing sections when a new period is added.
Example: 100 - the weight of the new item divided by the number of existing items. This should only happen when a new item is added not when you edit existing items
When the Employee or Manager scores are approved, change the dial colour to green (#123492)
Problem
When the Employee or Manager scores are approved, change the dial colour to green
Solution
Implemented check to check if ratings are approved to change the dials to green
Dock the preliminary scores while scrolling (#123490)
Problem
When the top section of the performance management contract collapses, then display the employee, manager and final ratings.
This will allow the users to keep seeing these scores while scrolling.
Solution
Implemented changes to show score dials on a collapsed user banner as well
People Management
Saving phone numbers under a different country flag icon reverts to the South African flag (#124046)
Problem
When selecting a country code and entering a number the number is saved with a code and in the correct format but when doing a get to patch the value it does not convert it correctly and from there on the format is wrong
Solution
Fixed the issue by converting the number to the correct format each time before it was saved
[My Profile] Update sign-in page layout (#124698)
Problem
The width of the rows is too large.
Solution
Truncated the platform column and added a tooltip to show the entire platform value.
Reporting line fixes (#124701)
Problem
On the modal when selecting a person on a reporting line:
A pointer is not shown when hovering over the items.
The search bar is not focused
Solution
Changes the cursor to a pointer when hovering over the items, and autofocus the search bar when the modal opens.
Add the ability to remove all roles (#124697)
Problem
No functionality to unlink all roles of a user.
Solution
Added a button that will unlink all the roles of the user.
Reduce unnecessary page load on edit page (#124704)
Problem
Inconsistent cursor on user profile's nav tabs
On the user profile page, when clicking on a parent tab, it unnecessarily loads the first child tab
Solution
Changed the cursor to hand on the tab headings.
Changed the user profile navigation to not load the first child tab if a parent is selected. A child tab must be selected to load the content. Also added functionality to reload tab content if an already active tab is selected again
Display the full "Vacant From" date when changing a person's position (#124062)
Problem
When changing a person’s position, On the modal where you select the Org and vacant Position, the "Positions Vacant From" date is cut off on certain screens. Please ensure that the whole date is displayed. On some screens, the last digit is completely hidden.
Solution
Increased the width of the date input.
Appointment date verification (#124702)
Problem
A termination date before the start date can be selected
Solution
Added a minimum to the termination date, which is the start date of the active appointment
Main Dashboard
Capitalise "All Company Values" (#121397)
Problem
The heading should be uppercase and the Values should be normal Caps.
Solution
Changed the modal heading to uppercase and the accordion headings to capitalize
Learning Store
Add product and menu for the learning store (#124712)
Business Rules
Add a new product learning store that can be activated
Add menu in product learning store
When the menu is clicked the learning store page must be loaded for the active theme and ruleset's schema in a frame
When the learning store page is loaded for V10 with an active session
Remove the header and replace the nav bar buttons with standard buttons- Browse Courses, Currency, Basket
Remove the login options drop-down
Add a spanner icon to navigate quickly to the learning store settings
When clicked load the panel
The learning store panel shows the quick link options of the learning store depending on whether e-commerce is on
Learning Management
[Pathways] [Marksheet] [Notifications] The variable for the class name is not replaced in the subject (#124534)
Problem
The Class placeholder still showed in the marksheet notification subject.
Solution
Added the class name to the notification query.
[Pathways] [Class/Group] [Marksheet] Show loading indicator when you click save on a mark sheet (#124280)
Problem
The loading indicator is not showing when saving a marksheet.
Solution
Added a loading indicator when saving a mark sheet.
Kudos
Send Kudo notification (#122323)
Problem
An email should be sent when the Kudo has been saved by the person sending it.
Solution
Added notification for the person receiving the Kudo
SigniChat
Load More shown when only 1 search result is returned (#121539)
Problem
On the direct chat recipient list, if only only one search result is returned, the Load More button icon is shown at the bottom of the Chat panel.
Solution
Added fix to hide load more button if the search is being used
Layout
Move banner items to have the same space everywhere (#124619)
Problem
The bulletin message button is too close to the search bar.
Solution
Added space between the button and the search bar.
HR Processes
Unable to see who is set on a position when clicking on the populated drop-down (#123366)
Problem
The fallback configuration position drop-downs display only the top 50 records. When you select someone not part of the initial list of 50 people, the selected person will not be automatically selected in the drop-down, when you open the drop-down.
Solution
Always add the selected person to the list, even if not initially part of the list, so that it will be selected when opening the drop-down.
Create a job to substitute a terminated person with a Fallback approver (#123554)
Business Rules
Create a job that substitutes a terminated person with a Fallback approver
As a Fallback Approver, I want to receive a notification (#123552)
Create a specific email for the Fallback approver:
Dear [***ApproverName***] [***ApproverSurname***]
You have been identified as a fallback approver for [***ProcessName***] submitted by [***SubmittedByName***] [***SubmittedBySurname***].
Click on the link below to review this request.
[***UserInboxLink***]
Please contact HR for additional assistance.
Kind regards,
HR Team
As a Fallback Approver, I want to have a section to view all open requests where I can be an approver as a Fallback (#123555)
Business Rules
Create a section for “OPEN REQUESTS AS FALLBACK APPROVER”
This section should show all open requests where this (fallback approver) could potentially have been a fallback approver.
When clicking on the tab:
Determine all the org units for which the user is a fallback approver
Get all the employees in the selected orgs, and sub orgs
List all the open requests for the abovementioned employees
On all the cards that are “in progress”:
Show the APPROVE / DECLINE button – similar to what we do now for the Fallback approver, but on the “next card”
When opening it, at the bottom of the screen, show an “ESCALATE” button:
This button should request a reason, and then mark this card as “Escalated” and pass it to the next person in the approval line
The last card cannot have an “ESCALATE” button.
Perhaps the escalation can be combined with the existing option that the fallback approver has
Organisational Structure
Incorrect counts displayed (#121311)
Problem
The number of users shown on the org structure did not match with the number of users on the org unit people groups.
Solution
Added condition to get users for the org unit people groups only where the job profile is published.
Change hover text for 'Move Position' (#124737)
Problem
Renaming of tooltip
Solution
Rename the tooltip from "Move Positions" to "Postitions"
Tenant Management
Styling on expired tenants to be changed (#120195)
Problem
The tenants expiring soon as well as expired tenants have the orange label
Solution
Only show the orange label for tenants who will be expiring soon. Show normal text for the expired tenants
Add name and code to modal header (#124740)
Problem
The Update Subscription modal does not show the Tenant Name.
Solution
Added new translation and added Name and Code for tenant to the update modal header
Ruleset Management
Ensure all languages start with a capital letter (#124736)
Problem
Not all languages in the ruleset setup dropdowns are capitalized.
Solution
Capitalize the languages in the dropdowns
Indicate 'Not Published' Languages (#124741)
Problem
Show a “Not Published” orange pill next to the languages that are enabled, but that are not published.
Solution
In the available languages dropdown, added an orange "Not Published" pill for enabled but not published languages.
Master Data
Rename fields (#124738)
Problem
Rename fields - User File Categories to People Document Categories and fix PermitTypes not having a space
Solution
Added necessary translations to fix the issues with field names.
Company Values display (#124739)
Problem
When adding a list of items underneath each other in the field “How do we live it out” on the Master Data, it shows as a wrapped paragraph.
Do not strip out the HTML.
Solution
Changed the company values to keep the whitespace for the “How do we live it out” field.
Notifications
Add time to Welcome email (#124699)
Problem
The time the welcome notification was sent is not showing.
Solution
Display the time the notification was sent.
Implement Priority Emails (#124030)
Problem
OTP, Forgot Password and Tenant creation emails take up to 5 minutes to arrive at the user.
This causes frustration and doubt that the system is working in these highly sensitive areas.
Solution
Implement priority emails that will be processed immediately rather than queued and then sent. The current flag on the email template must be used to determine if an email should be processed as a priority email as soon as possible
Dates on Schedule Setup are not shown in the preferred language set by the user (#124706)
Problem
The date fields are shown in the American date format, even though the preferred language is set to English (UK).
Solution
Replace jQuery date pickers with MDB and fix saving of UTC dates on schedules
Notification - create a standard e-mail template for errors on web MVC for the last 24 hours (#123354)
Problem
There is currently no visibility of the exceptions that are experienced daily by end users
Solution
Create a standard e-mail template to send daily for errors on webmvc.
Restoring to Default does not remove documents attached to Template (#101344)
Problem
When an email template is restored to default, the old attachments are still on the template.
Solution
The attachments are now deleted if a template is restored to default.
Language
Capitalize the first letter of the other languages (#121390)
Problem
When a user selects their preferred language All the languages are capitalised except Portuguese and French. This is because of the method use to get name makes use of those languages' capitalisation norms. This does not look right on the system
Solution
Implemented a workaround to not make use of the capitalisation norms so that everything is standardized across the entire system
Page reloads when searching in a module (#103759)
Problem
When making use of the global search on the language page the entire page reloads and reverts to the "global" subtab. No implementation was done to keep track of the active tab
Solution
Implemented a fix to not reload the page and keep track of the active sub-tab.
People Groups
Incorrect heading for the Org path column (#124530)
Problem
Incorrect heading for the Org path column
Solution
Ensure the correct heading is displayed on the table for the org path column
Audit
ValueObjects in tables are not audited (#116420)
Problem
When only a Value Object has changed on an Entity (as opposed to a normal property) the auditing does not pick up that the entity should be audited because it does not evaluate the Value Object properties of the Entity.
Solution
Unfortunately, there is no easy way to directly check the previous vs current values of Value Object properties as you would with a normal entity property change. Value Objects are immutable; any 'change' deletes the previous entity reference and adds a new one.
To still be able to pick up changes, however, you can access all the 'Added' reference entities of an entity (the value objects essentially) and then compare that to the list of deleted entities from the Change Tracking.
If it is the same type and has the same FK then assume that this Deleted entity is the pre-change version of the Added entity.
Once the deleted entity is retrieved compare Added against Deleted properties and return true if any changes.
Imports
Employee data import error (#125558)
Problem
The org nodes are duplicated when no org structure exists and multiple users are linked to the node
When importing nodes with accents in the name the import fails
The bulk import to V8 for the job structure is blocked by the full org structure import when errors occur
Solution
Remove unused caching check between node creation and replace with existence check on the newly created nodes
Add accent escapes when querying the existing org nodes.
Reorder the bulk import types
Correct 1000 appointment recursion error
Signify Employee data import API (#122932)
Add the option on the payroll connector to save and validate a PowerShell script used for import
When adding a payroll connector
Move the payroll connector provider to the top of the modal
Add a new provider Powershell
When the provider type is Powershell
Change the display of the screen and show the following fields
Name - Textbox
Powershell Script- Text Area
The text area is pre-populated with a PowerShell script for import from Signify's own APIs. This script servers as the base to be customised from
Import Enabled- Toggle
When the user saves the page the script is run without staging the data
When the PowerShell script can run through and return data in the format to be stagged the script is valid
Otherwise through an error
When the manual processing button is clicked then the Powershell script will run and stage
When more than one PowerShell script is added then all the data will be stagged and processed as a single import only keeping the latest record per user should a user be returned in multiple Powershell scripts
Each provider's connectors will be processed together and will not include other providers
This means Payspace connectors will be grouped and Powershell connectors will be grouped and processed as a batch separately.
Create a PowerShell connector command to process connectors of this type per the ruleset
Create a new command and handler- PowershellImportCommand
The handler retrieves all the PowerShell connectors for active rulesets
All the connectors for a specific ruleset must be processed as a batch
The users from multiple connectors will be stagged and imported as a single import
Should a user be returned by multiple connectors only the latest user according to appointment data should be imported
Log all steps in the handler as an import occurring and display the status on Notifications| Imports
Security when running a PowerShell script
Consider the implementation of custom run space when running the import
The handler should be able to be run manually for a single ruleset or per schedule for all rulesets
Reuse the current payroll connector job to also process powershell connectors
Create SQL notification for support
Problem:
When an import runs in the background no notification informs the client if a failure has occurred during the import. The user currently needs to go to the Notifications | Imports tab in the system to access this information.
Solution:
When an import completes and any failures occurred during the import trigger a standard system notification.
Recipient: Front End Import- Person who started the import
Backend Import- Send to admins of product linked to import type
CC:
Email Body:
Dear [RecipientName] [RecipientSurname],
The [ImportType] import is completed with [ErrorCount] errors.
Please follow the below link for more information
[Link To Notification | Import]
Kind Regards
HR Team
Create a PowerShell script to pull data
Create a PowerShell script to pull data from a client's API and stage the data in Signify
Report Builder
Changes to Styling on Full Report page (#121257)
Problem
When on the Full report page of the report builder and you scroll down the headers are scrolling out of the page thus it is hard to see which column is for what.
Solution
Implemented sticky headers so the headers always show when scrolling
Scrollbars to be implemented (#120403)
Problem
Headers were not sticky and the user needed to scroll up every time to see headers.
Solution
The preview headers were made sticky
Data Warehouse
Add Improvement Strategy Field (#125557)
Problem
The Improvement Strategy field is not available when creating a report
Solution
Added the field in the Data Warehouse for selection
Version 9.1.139.2 (Support Release - 27 January 2025)
Performance Management
PM Allow Employee and Manager ratings on interpolation (#126340)
Problem
Interpolation was based on having a single Actual Value, however, a client requested that we allow for the manager & person to capture individual actuals as there are scenarios where the actuals might be disputed.
Solution
Added actual value columns for person and manager, saved relevant actual value according to which person is rating, modified queries and react state assignment to set relevant fields correctly.
Imports
User Import: Change appointment import to import by action type (#121473)
Problem When a user is terminated or transferred in the same file the user conflicts with a new user taking the same position
The old User was terminated and the New user was appointed in the same position within the same import after the termination
The old user transfers to a new position and the new user receives the old user's position after the transfer
When the position is changed but the start date of the appointment remains the same the user appointment is not corrected
Solution
Split the processing of appointments by action type and process in order
Terminations
Transfers
Corrections
New appointments
Employee data import error (#125558)
Problem
The org nodes are duplicated when no org structure exists and multiple users are linked to the node When importing nodes with accents in the name the import fails The bulk import to V8 for the job structure is blocked by the full org structure import when errors occur
Solution
Remove unused caching check between node creation and replace with existence check on the newly created nodes
Add accent escapes when querying the existing org nodes.
Reorder the bulk import types
Corrected org node duplication within the same sheet. Corrected accents issue when constructing the org page.
Reordered org import to V8 from V9
Correct staging translation error message
Correct duplicate org nodes when importing with an org code that exists on the DB
Correct 1000 appointment recursion error
Version 9.1.139.1 (Support Release - 24 January 2025)
Performance Management
PM Interpolation should allow 0 value (#126280)
Problem
Currently, when rating on Interpolated items, an actual value of 0 (zero) is not allowed, this should however be an option as you might want to have an actual value of 0 tied to the lowest rating
Solution
Change the interpolation actual value validation to allow zero to be captured as a value. Note that negative values are still blocked.
People Management
Special Characters on Contact Numbers (#126207)
#1 Problem
Contact numbers can include special characters not caught by the int tel input IsValidNumber validation.
For example '575-12345' is allowed, however, this breaks the V8 import which is not allowing the numeric values.
Solution
Strip any special characters from the input, only allow numeric 0 - 9, spaces and '+'
#2 Problem
The en-GB product unavailable translation still has the contact support@signify.co.za . I was requested to change to contact your administrator
Solution
Change the translation to "contact your administrator"
Data Warehouse
Report Builder: Add Improvement Strategy Field (#125557)
Problem
Add the "Improvement Strategy" Field to the report builder
Solution
Added Data Source "Competency Proficiency Level" to the report builder that also contains the field "Improvement Strategy"
Final Score calibration (#126258)
Problem
The below fields do not exist in the report builder:
Review Year Setup Id
Review Item Id
Solution
Make the Review Year Setup ID and Review Item ID available in the Data Warehouse
Version 9.1.139 (14 January 2025)
Performance Management
Rate Button not displaying (#125563)
Problem
Rate button not shown to either party when both have submitted but one or the other has rated but not yet submitted ratings
Solution
Fix contract state calculation to correctly determine when ratings are in progress when Objectives are completed and when ratings are partially done.
Dashboard screen (#125269)
Problem
The contract details do not show when the review year if the current date is not within the period.
Error translation not shown correctly
Solution
Remove the filter and add ordering on the review year start
Correct translation key
People Management
Employees Org Structure not syncing correctly from V9 to V8 (#125562)
Problem
Duplicate positions were created with the same position code when doing a bulk job structure import
Solution
Corrected the external position ID check to ensure the existing position created by the employee import is mapped to the V9 position
People Management: Go to another does not work (#125569)
Problem
When the summary tab is active on the people management edit, then go-to another does not work
Solution
Change the selector to fall back to the default summary tab when no subtab is found that is active
Tenant Management
Tenant creation not completed (#124774)
Problem
When creating a tenant and the logged-in user's username is the same as the tenant administrator's email address, the tenant creation fails.
Solution
Remove the copy of the logged-in user when creating a new ruleset for the new tenant
Version 9.1.138 (13 January 2025)
People Management
Add Person AppointmentEndDate to MaterialisedUsers tables (#121349)
Problem
Report builder materialised users fails
When importing
Notification users are not created
Performance reporting lines are not updated
Appointments are not updated for materialised users
User data is lost when updating appointments or reporting line data
Solution
The notification did not implement batch user materialisation and appointments
Performance management implements batch reporting line materialisation
Report builder correct code
Implement updates of materialised data only if changes
Add migrations to update data across services for report builder and notifications
The page is shown as blank after Saving on editing details (#124445)
Problem
When saving or refreshing some subtabs on the people management profile, the tab content shows blank.
Solution
Fixed the issue where only the parent tab, instead of the sub-tab, was always loaded when reloading the page.
Content Management
Confirm the content server setting error (#125366)
Problem
Cannot upload the employee data file
Solution
Corrected the password of the production next cloud setup
Data Warehouse
Create a report to show the Tenant details (#116757)
A new report has been created to show the Tenant details
Tenant Name
Ruleset Name
Ruleset Active
Number of People - All
Number of People - Active
Module Name
People Management
Performance Management
eLearning
Career and Succession Planning
The value in each of the module’s columns can reflect the licenced employees for the module
Data Source items to be added to the Data Source list (#124057)
Add fields to HR Processes:
Request Reference number
Comment for each approver (currently, there is only one 'Comments' field)
Request for more information Comments per approver
Uploaded Files per request
Requester details
Add fields to the DWH for the PowerBI reports (#124564)
Problem
Required fields for a client's dashboard needs to be added to the V8 and V9 Data warehouse
Solution
Added required fields for Netcampus within V8 and V9 Data warehouse
Main Dashboard
Dashboard screen (#125269)
Problem
The incorrect contact details are displayed on the main dashboard when a user has multiple contracts in the last year where the review years have the same start date.
When the conversion of the work anniversary fails the people dashboard does not load.
Solution
When a review year is not active or deleted exclude it, order the results by the period start, review year start and the display order of the review years.
Simplify query with inner selects to avoid unnecessary duplication of data
Add a try-catch to return an empty string when the conversion fails rather than breaking the whole page and preventing the user from continuing
Version 9.1.137 (13 January 2025)
Performance Management
Set Value Survey score to be included when importing (#119743)
Problem
When calibrating value surveys, if the value survey has been excluded the calibrated score is not included in the calculation because of the survey being excluded.
Can then only be set from the front end.
Solution
Ensure when calibrating value surveys that it is included (Excluded = false).
[Interpolation] Reset the modal after entering the actual value (#121040)
Problem
The rating modal was not reset after entering the actual value.
Solution
Ensure modal is reset after entering value and opening modal again.
Nextcloud error pages is displayed when I click the Subordinates button (#124594)
Problem
On environments where there are separate path bases the subordinate view URL is incorrectly calculated as " https://kubernetesdev.signifyhr.co.za/Spa/master/performanceManagement/Dashboard " instead of " https://kubernetesdev.signifyhr.co.za/master/Spa/performanceManagement/Dashboard "
It works if there is no pathbase eg local and uat and live " https://live.signifyhr.co.za/Spa/performanceManagement/Dashboard "
Solution
Changed the URL generation so it correctly prepends the path base Eg 'master' before the entirety of the generated URL.
People Management
Person who is terminated on today's date should still be able to log in until midnight (#124279)
Problem
A person who has been terminated, cannot log in on the termination date
Solution
Change the log-out date to midnight
[Profile Summary]: Only underline on Hover (#124268)
Problem
Only underline on Hover
Solution
Add underline on hover.
[Profile Summary]: The Summary section does not get Docked/Pinned to the top (#124385)
Problem
The Summary section does not get Docked/Pinned to the top
Solution
Dock the Summary section when a user scrolls on the page
Issues with mobile phone numbers (#124248)
Problem
There should not be a space between the numbers.
Solution
Trim the contact numbers on the ListUsersExport call
Ruleset Management
Error on creation of ruleset (#124289)
Problem
The support user is created before the ruleset creation completes on account and the ruleset created is consumed on the job profiler service.
This causes the ruleset creation process to fail.
The ruleset-created email is sent even when the ruleset fails to create
Solution
Remove all the event consumers RulesetCreated
Move work done by the consumers to a gRPC endpoint per service
Create a new event CreateRulesetEvent with consumer CreateRulesetEventConsumer that is published after the ruleset has been created on the account service
The new consumer calls each service to use gRPC to create the ruleset on the service
Only once all the services have been created in the system and support users have been created
As a final step, the notification is sent that the ruleset has been created
The consumer has been constructed for retry only running the request that has not been completed again
Add functionality to retry the creation process of a ruleset which failed to create (#110754)
Problem
Currently, if a ruleset fails to create, you are stuck, there is no way for you to retry it.
This applies only to failed rulesets, and not rulesets still in the process of creating/copying.
Solution
Add an option to retry the creation/copy process. When clicked, send the RulesetCreatedEventConsumer message to the failed services.
Tenant creation not completed (#124774)
Problem
When creating a tenant and the logged-in user's username is the same as the tenant administrator's email address, the tenant creation fails.
Solution
Remove the copy of the logged-in user when creating a new ruleset for the new tenant
Imports
Signify Employee data import API (#122932)
Add the option on the payroll connector to save and validate a Powershell script used for import
When adding a payroll connector
Move the payroll connector provider to the top of the modal
Add a new provider Powershell
When the provider type is Powershell
Change the display of the screen and show the following fields
Name - Textbox
Powershell Script- Text Area
The text area is pre-populated with a PowerShell script for import from Signify's APIs. This script servers as the base to be customised from
Import Enabled- Toggle
When the user saves the page the script is run without staging the data
When the PowerShell script can run through and return data in the format to be stagged the script is valid
Otherwise through an error
When the manual processing button is clicked then the Powershell script will run and stage
When more than one Powershell script is added then all the data will be stagged and processed as a single import only keeping the latest record per user should a user be returned in multiple Powershell scripts
Each provider's connectors will be processed together and will not include other providers
This means Payspace connectors will be grouped and Powershell connectors will be grouped and processed as a batch separately.
Create a PowerShell connector command to process connectors of this type per the ruleset
Create a new command and handler- PowershellImportCommand
The handler retrieves all the PowerShell connectors for active rulesets
All the connectors for a specific ruleset must be processed as a batch
The users from multiple connectors will be stagged and imported as a single import
Should a user be returned by multiple connectors only the latest user according to appointment data should be imported
Log all steps in the handler as an import occurring and display the status on Notifications| Imports
Security when running a PowerShell script
Consider the implementation of custom run space when running the import
The handler should be able to be run manually for a single ruleset or per schedule for all rulesets
Reuse the current payroll connector job to also process PowerShell connectors
Create SQL notification for support
When an import runs in the background no notification informs the client if a failure has occurred during the import.
The user currently needs to go to the Notifications | Imports tab in the system to access this information.
Solution
When an import completes and any failures occur during the import trigger a standard system notification.
Recipient: Front End Import- Person who started the import
Backend Import- Send to admins of product linked to import type
CC:
Email Body:
Dear [RecipientName] [RecipientSurname],
The [ImportType] import is completed with [ErrorCount] errors.
Please follow the below link for more information
[Link To Notification | Import]
Kind Regards
HR Team
Notifications
Schedule Setup: The user can set the Once-Off custom schedule to time already passed (#96569)
Problem
The user is still able to type in a time that has already passed.
Solution
Added validation to test if the time is valid, if not it will be set to the minimum time
Report Builder
Date fields not shown in preferred language user is set at (#122731)
Problem
Date fields not converted to user culture and language.
Solution
Ensure date fields are converted to user culture and language.
Add different font sizes (#123391)
Have three options for font size: Normal, Small, Extra Small.
This must just be in the result set panel, including the headings
It looks like the standard font size is:
Make the Small size:
Make the Extra Small size:
Add 'Show Condensed Results' (#123390)
Have an option to “ Show condensed results ”.
By default, it must be selected.
When selected, all fields and values must show the first 15 characters with a … (if it is longer than 15 characters).
When hovering over the value, it must show the complete text/field name.
This must preferably be done through a JavaScript function that will not cause a reload of the page, but rather change it immediately.
Error when clicking View Full Report button (#124518)
Problem
An error occurs when clicking the View Full Report button
Solution
Fixed the issue causing the crash
Data Warehouse
V10 PM Dashboards add Not Started value to the graphs (#123886)
Add the “Not Started” value to the following two graphs:
Note: Not Started means the person do not have a contract created for the Review period.
People Groups
Tooltip on Org path displays "Undefined" (#124529)
Problem
Tooltip on the org path displayed 'Undefined'
Solution
Ensure that the tooltip displays the full org path correctly.
Incorrect heading for the Org path column (#124530)
Problem
Incorrect heading for the Org path column
Solution
Ensure the correct heading is displayed on the table for the org path column
Group cache not being busted when new employees are appointed/imported (#124457)
Problem
It appears that the People Groups cache is not being busted when you have appointed or imported new employees.
This means that you cannot see these new employees on the People Management dashboard.
Solution
Properly clear people group cache and materialised people groups
The active people group set by the user on V9 is not activated as an active subgroup on V8 when clicking on the V8 module menu item (#124215)
Problem
The active people group is not set as the active subgroup when opening the V8 page in V9
Solution
Retrieve the active people group ID from the query string
Select the people group from the user's assigned subgroups
If not available then the preferred subgroup should be loaded
Main Dashboard
Performance Management Dashboard Widget not showing correct data (#125269)
Problem
It seems the score and information are not displayed correctly for the user because they have two contracts.
Solution
Changing the query that populates the dashboard to order the contracts if multiple exits by the display order of the review year.
This will then allow the dashboard to display the latest data according to this ordering and secondly the start date of the cycle.
The dashboard will also only display the latest review period for the contract details within the year.
Version 9.1.136 (13 January 2025)
Performance Management
Able to capture contract although period closed (#123871)
Problem
When a phase is already closed, the dial can be used to view the contract, but the actions (Eg. creating a KPI) are still active.
Solution
Lock the agreement if the phases are not active.
PM V9 Action plan copy from previous does not work as expected (#124270)
Problem 4 Action plan-related fixes on this PR.
This label was updated, it does not reflect Review Periods but rather the Review Setups
There was some confusion as to how the Copy Action Plans From Previous should work, the consensus between me, Bertie and Lee-Ann is that you can only copy from your previous review years. You cannot use this to copy APs from an earlier Review Period within the same setup (This should happen with the CreateContractFromPrevious fix 4) Changed the query for the review years to exclude the year for the current contract.
The Copy Action Plans From Previous was not copying all the information, only Name and Description. Including now all AP fields on the copy.
When doing CreateContractPeriodFromPrevious it must also copy any Action Plans that exist on that contract period. (which it did not do)
Solution
Updated the translation to correct the label to show Review Setup
Changed the query for the review years to exclude the year for the current contract.
Modified the Action Plan handlers and queries to select all the additional information and to also copy that when creating the item. Had to fix an update here and there
Added a new portion to the CreateContractPeriodFromPrevious handler to check if there are any action plans on the source and then copied that to the new contract. Tries to copy the Ad-hoc items as well as those assigned to specific KPIs.
Cannot Copy from previous (#124269)
Problem
The CopyFromPrevious / CopyFromTemplate functionality breaks when creating for an employee on a review setup that has leadership behaviours enabled.
This is because only managers get the section added to their contracts, but the copy from then tries to add the default library items to the employee's contract.
This breaks because the LB section does not exist to add it to.
Solution
Do a check to not add the LB items if the employee is not a lIne manager.
The preceding Create Contract step will not have created the ContractPeriodSections LB section if the employee is not a line manager.
Import the 360 Survey Scores into Performance Management (#112612)
On the Review Years | Review Setup | Review Period | Review Survey
Add a dropdown with all the Evaluation Periods (V8)
Evaluation Period
Required field
Master Data Table to be added with the 360 Evaluation Periods from v8
Add a dropdown with the Import Actions
I want to import
Options
ONLY new scores
When selected, show helper text
Import new evaluation scores from [selected evaluation period]. Leave existing scores as is.
New scores and override existing scores (from evaluations)
When selected, show helper text
Import new evaluation scores from [selected evaluation period]. Existing scores will be overridden.
Business Rule:
When the setting is inactive and the Manager cannot revise, exclude this option
Integration Tab on Ruleset Setup
Review Year Review Survey Import
When selected, the scores should import according to the option selected via the API
Import from last sync / import date
Also add a daily sync
Only run when a Review Setup has a Review Survey
People Management
Error on New People Group Save (#124474)
Problem
People group HiLo sequence did not match the Id value in the table that caused a duplicate trying to be created for the same Id
Solution
Add a script to sync the sequence with the table
The page is shown as blank after Saving on editing details (#124445)
Problem
When saving or refreshing some subtabs on the people management profile, the tab content shows blank.
Solution
Fixed an issue where only the parent tab, instead of the sub-tab, was always loaded when reloading the page
Auto-generate employee number (#122694)
Add a setting that will automatically generate an employee number for a new user on the system. Allow the admin to set the starting value in the range.
Also, allow the administrator to set prefix and suffix values for the employee number.
Report Builder
Evaluation questions (#123006)
Problem
Report contain duplicate records.
Solution
Added a "Select Distinct" filter for the reports
Imports
Import Error (#124391)
Problem
The allow anonymous tag has been removed which causes the daily syncs to fail.
Solution
Added anonymous tags to ensure the daily syncs work again.
Translations
Investigate changing translation keys from key-based to file-based (#119512)
Problem
Translation calls need to be improved, it is used extensively throughout the system
Solution
Investigate to cache the translations with a different key strategy - perhaps we store the entire translation file (JSON object) within a single key
Version 9.1.135 (13 January 2025)
Performance Management
Rating button not displaying (#124149)
Problem
The rate button not shown to the employee when the manager has not yet submitted objectives
Solution
Fix the check that determines the contract state on the dashboard.
Improve the performance of queries throughout the system by providing a materialised PeoplegroupUsers table per service (#122980)
Problem
Improve the performance of queries throughout the system by providing a materialised PeoplegroupUsers table per service
Solution
A new people group all people has been added and includes everyone in the system with an appointment
You can only exclude users from this custom people group
It is auto-populated when adding a user either from the front end or via the user import
All services that make use of People groups
For all services, the following must be confirmed
When adding or terminating a user the user must be automatically added/removed from the people group
Editing appointments on the front end
Adding a new user on the front end
Importing users
When the people group is used in the service the data is auto-populated
Performance management
Performance dashboard and the loading of subordinates
Target Audience Page
Report Builder
When drawing a report for a specific people group
People Management
Dashboard
Active, future and terminated should still show correctly
Busting the cache from the front end
Both the Redis cached people groups are removed and the data for the people groups in MaterialisedPeopleGroupUsers are removed
The MaterialisedPeopleGroupUsers must be materialised when next used in the service e.g PM, People Management, Report Builder
Create master data for evaluation periods pulled from V8 (#112612)
Add a dropdown with all the Evaluation Periods (V8)
Evaluation Period
Required field
Master Data Table to be added with the 360 Evaluation Periods from v8
Add a dropdown with the Import Actions
I want to import
Options
ONLY new scores
When selected, show helper text
Import new evaluation scores from [selected evaluation period]. Leave existing scores as is.
New scores and override existing scores (from evaluations)
When selected, show helper text
Import new evaluation scores from [selected evaluation period]. Existing scores will be overridden.
Business Rule:
When the setting is inactive and the Manager cannot revise, exclude this option
On the Review Years | Review Setup | Review Period | Review Survey
Integration Tab on Ruleset Setup
Review Year Review Survey Import
When selected, the scores should be imported according to the chosen option via the API
Import from last sync/import date
Also, add a daily sync
Only run when a Review Setup has a Review Survey
Import PM Scores to V8 SCP (#112597)
On V8
When opening the Profile
Use the API to import the Overall Final Score
Overall Final Score = Review Period 1, 2 etc has been approved and Review Survey has value / is excluded
Materialised view - use table
PM - Update score to materialised view every 2 hours
PM Year to use
The PM Year is irrelevant because only the latest approved Overall Final Score will be used
Add Import to Integrations tab
Talent Profile - Latest PM Score Import
Change the Ignore Phase End Date rule (#123374)
The label should be changed to:
IGNORE PHASE DATES
The business rules that should be applied when this setting is enabled:
The Start Date and End Dates should be ignored
This will mean that the users can start the phase before the date is reached and they can continue after the date is reached
Thus, the phase will never be locked
Learning Management
Notifications not sent out (#123776)
Problem
Notifications are not sent as soon as mark setup is marked as published and send notifications are enabled
Solution
Add sendNotifications call in Marksheet.tsx when the mark is published and locked. Also, the marks will now be saved before sending the notification
Cannot save marks for a second class (#123870)
Problem
Some users are missing from materialized users causing the save not to work
Solution
Increase the retry interval for message processing to 60s for consumer events
Add migration to sync the MaterializedUsers table again
Add a loading indicator when exporting the list of recipients (#123802)
Problem
No loading indicator when exporting the list of users that will not receive a notification on the attendance register
Solution
Add loading indicators on Ajax calls in the attendance notification modal
Data Warehouse
Organisational path - Incorrect (#124143)
Problem
The issue was these 2 users' Appointments were edited last May according to the source data. The data warehouse data for these specific 2 users was not updated with the latest Org data. For Appointments, the data warehouse fetched the data that had been updated for the past 72 hours. I am not sure if the Datawarehouse at that time did not update the Appointment data or if there is perhaps an issue on the data source where the Edited Data did not update correctly, due to this being updated manually on the source DB with support query.
Solution
Adjust the Appointments DWH package to refresh all the appointments daily. This is now possible due to the massive performance improvements that were made within the DWH. This will ensure that the DWH does have all the latest appointments daily going on forward.
'Null' values should return an empty string (#123389)
Problem
The Datawarehouse returned 'blank' if the nvarchar returned NULL values
Solution
Adjusted the V9 DWH to return NULL if the nvarchar column value is NULL
Dashboards: Scores not showing on graphs (#123887)
Problem
The final rating score field needs to be added within Contract Periods for V9 DWH to implement the dashboard changes
Solution
Added Final rating score field within Contract Periods
Tenant Management
Email Template Adjustments for Tenant Management (#123472)
Problem
Spaces between text in the template are too large.
Solution
Fixed the templates by reducing the spaces between paragraphs
Red Pill Changing to Grey on Manage Person Screen and Organizational Structure Screen (#123795)
Problem
The licence expiry warning message is grey on people management and org structure.
Solution
Fixed global styling issue where it conflicts with pill styling
Spelling of Licence (#123827)
Problem
Incorrect spelling mistake
Solution
Corrected the spelling from License to Licence
People Management
The system does not Auto-Confirm the User with a valid Email address (#118978)
Problem
The system does not Auto-Confirm the User with a valid Email address
Solution
If a user's email is provided, the email will be auto-confirmed. If not provided initially, it will confirm the email if the user is updated with one. The email will also be unconfirmed if it is removed.
The curser does not change when hovering on the People Group selection (#121876)
Problem
The Curser does not change when hovering over the People Group selection
Solution
Changes styling to show a pointer when hovering over the people group dropdown
Add a Summary Menu Item (#122957)
Problem
As a person with access to a person’s profile, I want to have a menu item for the summary
Solution
Added a summary tab to the user profile
Organisational Structure
Delete modal heading displays incorrectly when Name contains ampersand (#122269)
Problem
Org Structure delete modal heading displays incorrectly when Name contains ampersand
Solution
Added fix to show name in heading correctly if it contains special characters
SigniChat
Buttons to be moved away from the bottom border of the Group Chat setup box (#123357)
Problem
The save group button is near the bottom border.
Solution
Increased the margin of the footer of the create group modal
Auto Doc
Styling on Delete Template modal to be aligned with mock-up on CR (#104629)
Problem
On the delete template modal, the name of the template should be replaced by Template and the name of the template to be deleted shown in quotation marks and in bold
Solution
Fixed the styling of the delete template modal
[Auto Doc][Admin User][Templates] Asterisk to be placed alongside Delete Reason text box label (#102815)
Problem
Delete modals reason field that is required does not show asterisks.
Solution
Implemented correct class on the global component to fix issues everywhere
Ruleset Management
Tooltip to be adjusted (#104399)
Problem
When the creation of a ruleset fails, the 'could not create ruleset' label contains a list of services which could not be set up.
Please could we insert a space between the 2 words in the name of the Services?
Solution
Added spaces between the words
Error when trying to save External Link with name with 225 characters (#104617)
Problem
Error when trying to save External Link with name with 225 characters
Solution
Increased the length of the external link name to 500 characters.
The Kudos icon is not available on the Change Icons list (#113037)
Problem
The Curser does not change when hovering over the People Group selection
Solution
Changes styling to show a pointer when hovering over the people group dropdown
Competency Analysis
Do not display text in Bold (#121394)
Problem
When a user hovers on the Competency Title the system displays the pop-up text in Bold
Solution
Changed the tooltip to normal text.
Language
Incorrect product name displayed for Career Conversations (#113009)
Problem
When on the language page the Career Conversation translation did not work.
Solution
Saw that some of the translations were missing, so I added the missing values
Notifications
Confirmation message on Create of new Schedule to be corrected (#101309)
Problem
The confirmation message on Create of new Schedule to be corrected
Solution
Fixed the confirmation message when saving a schedule
Event Deactivation Reason text box label asterisk to be displayed in red instead of grey (#102805)
Problem
When deactivating a notification event, the reason field label asterisk (*) needs to be displayed in red.
Solution
Changed the deactivation reason asterisk to red.
The user can set the Once-Off custom schedule to time already passed (#96569)
Problem
Able to set a custom once-off schedule to a time today that has already passed.
Solution
When once-off schedule type is selected, remove time slots that has passed already.
Events: 'Can be scheduled' indicator to be shown on the Notification Events list (#85834)
Problem
Please consider indicating on the Notification Events page which events can be scheduled.
Solution
Added a "Can Schedule" column to the notification events list to indicate whether that event can be scheduled or not
List of Release Notes (2024)
Version 9.1.134 (2 December 2024)
Performance Management
The Modify objectives button is disabled when the phase is active (#123736)
Problem
Cannot modify objective settings when approved and the rating phase is not active.
Solution
Change the rule when the modify settings button is disabled
Objective Settings Queries (#123654)
Problem
When the manager approves the objective settings and the user has not yet in dual approval then the status of the user displays incorrectly on the manager check-in dashboard for the user
Solution
Add 2 new rating statuses based on the approval state of the objective settings
Employee profile locked (#120818)
Problem
Employees cannot access the contract because it is locked.
Solution
Added confirmation modal to request if the user is still busy on the page. If the user clicks 'Continue', the lock is refreshed, otherwise, after a minute the lock opens and reverts the user back to the PM dashboard.
Rating scale (#123348)
Problem
When rating an evaluation excluded rating scales are not available to rate with
Solution
Remove the filter on exclusion and correct the score that is now nullable
This displays the extra scales
Performance Agreement - System Issues (#123305)
Problem
The Date field is displayed as incorrect
Solution
On blur add the active class to display the label on top and empty the value when not completed Remove the word axios.ts from the generic error
People Management | System Module Roles
A person without Organisational Structure Permissions can access the Org (#121709)
Problem
Even though the user has no access to Organisation Structure rights, they can access the Org Structure.
This is because the user has Job Profiler Admin rights.
Solution
Remove the Job Profiler Admin rights from accessing the Org Structure
HR Processes
Changing the Fallback selection on the workflow setup removes the settings on the Workflow Fallback Configuration (#123738)
Problem
Changing the Fallback selection on the workflow setup removes the settings on the Workflow Fallback Configuration.
Solution
Ensure that the settings on the Workflow Fallback Configuration does not get cleared when changing the Fallback selection.
Imports
DISABILITY STATUS (#123550)
Problem
When disabilities like none, not disabled, no, no disability are imported in the user import the expectation is that the user will not be made disabled in the system even though a disability is provided for the user.
Solution
Add a bool field to exclude certain disabilities from being imported where the client determines what disability term indicates not disabled
Add translation error handling in MVC
Data Warehouse
Claim Report for Sage Import (#122871)
Problem
Datasource jpHRProcessRequestData needs to be added that contains the JSON response entries
Solution
Added data source jpHRProcessRequestData within the V9 Data warehouse
Performance status report (#123397)
Problem
No results returned when running the report:
Solution
This was due to an issue on the DWH that was picked up now with jpReportingLines, where the Datawarehouse package did not cater for Username, Name and Surname changes that can occur withinthe DataSource table "JobProfiler.UserReportingLines", as the DWH only checked for changes that occurred within Database table "JobProfiler.MaterialisedUsers".
Performance Management: Exclude job titles from performance management (#122661)
Problem
Performance Management Records are returning for Smollan, although the Job titles are excluded.
Solution
Created a custom container within V9 DWH that will remove Performance Management entries for Smollan if they are included in the Job Title exclusion list
Evaluation questions (#123006)
Problem
The report shows the rater as anonymous when the KPI evaluations are sent out anonymously.
Solution
Added new fields
PersonThatDidTheEvaluationUnAnonymous,
ContractPeriodOverallEvaluatorEmailUnAnonymous,
ContractPeriodSectionItemEvaluatorNameUnAnonymous,
ContractPeriodSectionItemEvaluatorEmailUnAnonymous
This will return the user details regardless if the Anonymous setting is set to true or not
Learning Management
Period info not displayed above the mark sheet (#123698)
Problem
Missing title with subject, period and class name
Solution
Added .marksheet-card class in Marksheet.scss for top border styling
Added title with the subject, period and class name above the Excel mark sheet
The mark sheet shows that the same people group has been linked twice (#123772)
Problem
Classes should be listed with the same node instead of the same student group/class
Existing People group select throwing errors when retrieving a bigger group
Solution
Updated the method signature for ListPeopleGroupClassSubjectGroupsAsync in the ILearningManagementQueries interface to replace peopleGroupId with nodeId . Corresponding changes were made in the LearningManagementQueries class, including updating the SQL query. Adjusted calls in LearningManagementServiceV1 to pass request.NodeId instead of request.PeopleGroupId . Modified the ListClassSubjectGroupsRequest message in learning_management.v1.proto to replace people_group_id with node_id .
Updated AttendanceRegisterViewModel and MarksheetViewModel to use ListPeopleGroupUsersRequest and ListPeopleGroupUsersResponse instead of ListRulesetPeopleGroupUsersRequest and ListRulesetPeopleGroupUsersResponse.
Remove the text box below the spreadsheet (#123639)
Problem
There is a text box below the spreadsheet which is not shown on the mock-up.
Solution
Remove the text box
Absent learners not saved / Error when saving again (#123744)
Problem
ClassSubjectId is incorrectly saved as ClassSubjectGroupId in the attendance table. Therefore, when attempting to save, it appears that the operation is not successful.
Solution
Replaced request.ClassSubjectId with request.ClassSubjectGroupId in the CreateUpdateAttendancesCommandHandler class.
Reset the toggle each time Publish & Lock opens (#123707)
Problem
Send Notification is enabled in PublishAndLockConfirmationModal.tsx when it should be disabled at the time the modal is opened
Solution
Implemented useEffect in PublishAndLockConfirmationModal to reset sendNotification state to false when the show property changes to false, ensuring the state is cleared when the modal is closed.
[Pathways] [Class/Group] [Marksheet] Open the comments modal when you click in the comments cell (#123536)
Problem
The user has no clear indication of how to open the comment modal
Solution
Introduced a new feature to display a translated instruction message in the comment cell when it is empty. The message is shown in grey and changes to black when an actual comment is added and the comment column width is increased from 180 to 200.
Added translation key doubleClickToAddComment in learningManagement.json .
Marksheet not saving all data (#123551)
Problem
Auto marks already overridden are being overridden again by the V8 import of marks.
Solution
The changes introduce a new boolean property, Overridden, to the Mark class and related data structures. This property determines if the V8 import of marks should update the mark.
Updated Mark class and constructors to include Overridden .
Modified CreateUpdateMarksCommandHandler.cs to handle Overridden .
Updated LearningManagementCommands.cs and LearningManagementQueries.cs to include Overridden .
Enhanced LearningManagementViewModel.cs and LearningManagementServiceV1.cs to manage Overridden .
Added Overridden to learning_management.v1.proto messages.
Updated various DTOs and records to include Overridden .
Added a new migration file to create the Overridden column in the Marks table.
[Pathways] [Class/Group] [Marksheet] Unable to retrieve comments error when I open a mark sheet (#123530)
Problem
Adding a new class or group to a pathway and accessing the mark sheet leads to erroneous data displayed onthe UI. This is caused since the data is not yet imported to V9 and the Class/Group is not yet linked to a subject
Solution
Updated MarkController.cs to wrap error messages in an object with a message property for ConfigurationErrorsException and RpcException .
Modified Marksheet.tsx to check for error.response.data.message in the catch block and conditionally render ButtonLinkSlider and MDBAccordion based on navLinks and markSetupList lengths. Added alerts for no-mark setups or students.
Added new localized messages in learningManagement.json for scenarios with no subjects or students
[Pathways] [Class/Group] [Attendance Register] Teacher / Facilitator shown on attendance register (#123365)
Problem
LearningAdmin included in Attendance Register and Marksheet page
Attendance history student order does not match with other pages
Teachers with LearningAdministrator Roles can manage the Master Data
Solution
Added IdentityClient in AttendanceController and MarksheetController. Update the Create method signature to include Identity.IdentityClient and call ListUsersLinkedToRolesAsync to filter out Learning Administrator role users.
Updated the SQL query in LearningManagementQueries.cs to order results by s.Surname and s.Name .
In RolesViewModel.cs , removed the LearningAdministrator role from one list of roles with standard permissions and re-added it to the customizable list specifically for when assigning the role to a teacher
Version 9.1.133 (2 December 2024)
Data Warehouse
As a Report Builder, I want all the new fields available in the DWH (#120979)
Added the HR Processes additional fields:
Comments
Special Instructions
Cancel Reason
Decline Reason
Import-export (#121920)
Certain fields/tables will need to be added to the data warehouse to create a report on the report builder that can be used as a template to Import People's Data on V10
Job Profiler sync from V9 to V8 (#121932)
Problem
Not all Job Profiler fields sync to V8
Solution
Amend the sync to include:
Occupational Category
Occupational Level
OFO Codes
Table consolidation and Data Dictionary cleanup (#121644)
Problem
There is data in the Data Dictionary tables across tenants
There are unused columns in the data warehouse tables
There are tables in the data warehouse that can be combined
There are columns in the Data Dictionary where the content of the column is unclear
This requires a rename of the alias of such columns
Column names do not appear in an expected / logical order
Solution
Cleanup data so that there is only Data Dictionary data in tenant 1
Work through all columns in the Datawarehouse and identify unused columns
Identify tables in the data warehouse that can be combined
Review all columns and suggest wording where it is not clear what is stored in the column
Order columns in a logical order
Ensure data sources appear in their correct categories
Duplicate Reports were created when adding a new report (#110700)
Problem
Duplicate reports were created when clicking on the tabs multiple times before creating the report.
Solution
Ensure that only a single report gets created when adding a new report.
Learning Management
Prevent users from clicking the attendance Register link if there's no period (#122073)
Problem
There is no indication that periods need to be set up
Error message for period retrieval is the wrong message
Solution
Add a warning message to indicate periods need to be configured
Added new message to indicate retrieval error
[Pathways] [Class/Group] [Attendance History] Make sure the horizontal scrollbar is always visible (#123369)
Problem
The space beneath the card does not match the space on all other sides.
Solution
Removed the fixed viewport height percentage from .card-attendance-history in AttendanceHistory.scss .
Updated AttendanceHistory.tsx to add h-100 class to outer div and MDBCard component, ensuring they take up 100% of the parent container's height
[Pathways] [Class/Group] [Attendance Register] Teacher / Facilitator shown on attendance register (#123365)
Problem
LearningAdmin included in Attendance Register and Marksheet page
Attendance history student order does not match with other pages
Teachers with Learning Administrator Roles can manage the Master Data
Solution
Added IdentityClient in AttendanceController and MarksheetController.
Update the Create method signature to include Identity.IdentityClient and call ListUsersLinkedToRolesAsync to filter out Learning Administrator role users.
Updated the SQL query in LearningManagementQueries.cs to order results by s.Surname and s.Name .
In RolesViewModel.cs , removed the LearningAdministrator role from one list of roles with standard permissions and re-added it to the customizable list specifically for when assigning the role to a teacher
[Pathways] [Class/Group] [Marksheet] Reduce padding of the rows in the Setup section (#123538)
Problem
There is too much padding of the rows in the Mark Setup section
Solution
Added CSS rules in Marksheet.scss to set padding and font weight for table headers and cells within the #table-marks element.
Modified the Marksheet component in Marksheet.tsx to include additional class names and styles for the accordion header and body.
Changed the MDBTable element to have an id of table-marks to apply the new CSS rules.
[Pathways] [Class/Group] [Marksheet] Marks displayed in reverse order (#123559)
Problem
The marks shown are not in alphanumeric order
Solution
Added ORDER BY cci.Mark clause. To order the items by name
[Pathways] [Class/Group] [Marksheet] Unable to retrieve comments error when I open a mark sheet (#123530)
Problem
Adding a new class or group to a pathway and accessing the mark sheet leads to erroneous data displayed on the UI. This is caused since the data is not yet imported to V9 and the Class/Group is not yet linked to a subject
Solution
Updated MarkController.cs to wrap error messages in an object with a message property for ConfigurationErrorsException and RpcException .
Modified Marksheet.tsx to check for error.response.data.message in the catch block and conditionally render ButtonLinkSlider and MDBAccordion based on navLinks and markSetupList lengths. Added alerts for no-mark setups or students.
Added new localized messages in learningManagement.json for scenarios with no subjects or students
[Pathways] [Class/Groups] [Attendance Register] Able to save when the attendance register has not been configured (#123525)
Problem
The save and notification buttons can still be used even without periods and students.
Able to use the send notification button even if the attendances have not yet been saved
Solution
Added a disabled attribute to the "Save" and "Send Absent Notifications" buttons in the AttendanceRegister component. These buttons will now be disabled if no students are on the list.
The notification button will now also be disabled until all the attendances listed on the page have been added to the DB
[Learning Management][Product Setup] Cycle Intervention Setups - Dropdowns not Functional (#123531)
Problem
When creating subjects with new subjects, the intervention dropdowns are not initiated properly because of duplicate names between cycles. Also, there is a problem editing a cycle. It is treated as a new cycle instead of an existing cycle
Solution
Use the cycle nr instead of the id for newly created cycles as the id is 0 when created. This fixed the dropdown problem. Also, add action on the cycle modal to properly distinguish between an edit or an add of a cycle as using the id is 0 for newly created cycles.
[Pathways] [Class/Group] [Marksheet] Marksheet shows that a mark was set as manual when it was set as automatic (#123608)
Problem
The auto setting does not pull through to the mark sheet.
Solution
Fix argument list in MarkSetupDTO contructor
Tenant Management
Date Picker Defaults set to Future Date rather than currently configured date (#122611)
Problem
When opening the "edit expiry date modal" the "Current expiry date" is a day after the actual date"
Solution
Added a fix to convert the date to the correct date so that it is not a day ahead.
Wrong Notification Template used for 1 Day After Notification (#122732)
Problem
Licence Process Notifications are sent on the wrong dates.
Solution
Ensure licence process notifications are sent on the correct date.
Activate all products and system menu's according to the subscription when creating the Ruleset (#114394)
Problem
Menu items not activated from active subscription products on ruleset and tenant creation
Solution
Ensure menu items are activated from active subscription products on ruleset and tenant creation
People Management
An unspecified error when saving the profile without specifying the required fields (#122954)
Problem
When the Citizenship field is omitted and the user tries to Save the newly added profile, an unspecified error is displayed.
Solution
Add a descriptive message
Default Banners missing (#123303)
Problem
The system does not have the Default Banners
Solution
Display the ruleset 1 banner on the image resources page when the current ruleset has no images uploaded yet
Translations
Performance Management: Implement domain error handling with translation keys (#121935)
Problem
Domain errors have no translations
Solution
Replace all the domain errors with translations.
All messages handled across all the services should show a detailed error on the front end.
Supported languages:
en-US, af-ZA, de, fr-CF, pt-MZ, ar-SA, am
Job Profiler
Search field does not filter Profile Codes (#122768)
Problem
The Search field does not filter Profile Codes
Solution
Enable the search field to filter the Profile Codes as it does on the Position page
Report Builder
[Report Builder][Admin User][Date] Changes to date field (#121255)
Problem
There is only a Date (Default) field available on the fields
Solution
Change the current one above to Date and time (Default)
This time shows as: 2024-10-07T07:30:53.8235783
Show as standard date/time function, but aligned to the selected culture and timezone. In the above example, it should be: 2024-10-07 9:30:58
Add another option for Date only
This option must show the date without the time component
Snack message translation missing (#121621)
Problem
When changing the selection on the People Group drop-down, the message on the Snack Bar is not translated.
This only happens when the Default Ruleset language is set to the same as the user's preferred language.
In the example, the user's preferred language is set to English - United Kingdom and the default for the ruleset is set as English - United Kingdom.
Solution
Corrected the translation issue to display the correct message
SigniChat
Group Members count inaccurate (#121907)
Problem
The member count shows 3, but there are only 2 people on the members list.
It appears as though the 'support user' may have been included in the count but does not appear on the list.
If this person should be on the list, then they need to show as a member, if not, then the count needs to be reduced to 2.
Solution
Exclude the support user from the user count
Styling on Chat Search box to be made standard (#120691)
Problem
There is an issue where search events are not bound when going from create chat to the active chat list
Solution
Fixed the issue of always binding search events when loading active chats
Imports
Import fails when Name and Surname are not required and not provided (#122030)
Problem
It is possible to make the Name and Surname fields not required on the People Management module configuration. This setting affects the front end as well as the people's import.
When these fields are not required and you import a user with no name and/or surname, the import fails be cause the back-end still validate these fields.
Solution
Removed name/surname validation when staging data and not set on ESS as required
Competency Analysis
Add detail to Category when collapsed after rating (#112814)
Problem
The competency subtext is not correct when all competencies are assessed
Solution
Ensure the subtext is correct when all competencies are assessed
Additional Competency List displays Competencies linked to the Job Profile (#109846)
Problem
When clicking on the "Do self-assessment" button and then clicking on the +Competency button for the Additional Competencies modal, will result in an empty dialog.
Solution
Ensure that the Additional Competencies modal is not empty, after clicking on the "Do self-assessment" button
Notification | Email Setup
Port and Time Out text box labels incorrect (#102607)
Problem
When the page is displayed, the Port and Time Out text box labels have the border box drawn through the label.
Solution
Fix the input style
Ruleset Management | Signify Mobile App
As a System Owner, I want to create a web page to embed the bot (#121383)
Signify created a web page where the bot will be embedded as per the standard sharing capability of Landbot.
Version 9.1.132 (18 November 2024)
Performance Management
Unapproved ratings shown on the report (#119167)
Problem
The scores should not be displayed until the ratings have been approved
The Review Survey should be shown on the View/Print
Solution
Fix the score shown on Print Preview when ratings are not approved.
Fix the Survey section on print preview.
Evaluators to see all the employees they need to rate in one list across Review Setups (#123183)
Problem
Currently, a person rating others gets 2 or more lists when people are in different review setups
Solution
Ignore the review setups and periods when creating the list of people someone must evaluate
Show ALL people you need to evaluate across review setups
Add a column to show the review setups' due date
Emails for 360-degree evaluation (#123028)
Problem
When the Evaluation Sent template is triggered it gets the list of evaluation items it needs to email out, each of these items are then updated to 'Sent' status. However, with large data sets the handler appears to time out and never return any recipients to the notifications client.
Solution
Changed the UpdateEvaluationSentcommand handler to do a Bulk Update which required bypassing the normal aggregate root update. Also fixed the query selecting evaluations to mail out since it only needs to be sent out when the contract is in the ratings phase (objectives approved)
Search on create contracts screen not working (#118638)
Problem
Sql command timeout occurs when selecting people with people groups for bulk action.
Solution
Optimise query on select people for pm bulk action to create contracts from the template. Join on temp user-id table instead of selecting all records from cteOrderedAppointments
Hide setting: "Allow the manager to override who will approve and rate" (#122951)
Problem
The setting has been added but is still in the pipeline to be developed
Solution
Hide the setting until this functionality has been added
2 emails being sent with separate links for one Evaluation (#122047)
Problem
2 emails were sent when a review setup was linked to multiple years.
Solution
Fixed issue by checking which review year set up the contract belongs to
Sent to Wrong Person Results not Saving Correctly Under Evaluations (#122676)
Problem
If the evaluations were saved first, then submitted with "Sent to the wrong person" selected, the saved ratings were still shown on the evaluation summary
Solution
If an evaluation is saved as a draft and then "Sent to the wrong person" is selected, the overall evaluation is deleted and the evaluation rating is set back to null
After Evaluation Results Submitted, Notification Sent Status Changes to Unsent (#122667)
Problem
After Evaluation Results are Submitted, a Notification Sent with Status Changes to Unsent
Solution
Fixed bug made by the changes of the new save functionality.
Job Profiler
Job Profiler sync from V9 to V8 (#121932)
Problem
The dropdowns when creating or editing a job profile are confusing as it looks like the default is always selected
Solution
Add empty translated default
Job Code Search not working (#123312)
Problem
On the Job Profiler admin screen the search is only checking against job title, you cannot thus search by Job Code
Solution
Included Job Code on the search filter to allow searching for Job Title or Job Code.
People Management
SELECT NEW PROFILE PICTURE not available (#123135)
Problem
The Image Resources settings handling the display/upload of Avatar images were also affecting the profile image selection and upload.
Solution
Removed the if check determining the display of the Profile Picture selection and upload as this must ALWAYS be visible and not be affected by the Avatar settings.
HR Processes
Multiple persons on the topmost (root) node as fallback (#121882)
Add the Workflow Fallback Configuration to the Process Flow page as well.
It will first look at the Organisational Unit's setup and if no one is found, then it will look at the config on the Process Flow page.
If the config is nowhere added, then there will be no Fallback and the process will break.
Linespace to be added on the Process Flow setup page (#123178)
Styling fixes
Fallback approvers set on the child node are shown for the person on the node above this node that the fallback is set for (#123180)
Problem
Instead of selecting the user on the top node, it selected someone on the second-highest level.
Solution
Fix fallback user calculation
Learning Management
Make default absent email more generic (#123136)
Problem
Need to change template to be more generic, changes to subject not applied to email.
Solution
Change absent email template to be more generic, also allow subject to be custom
Date Picker styling (#122907)
Styling fixes
[Attendance Register] Show Username (#123009)
Problem
Please consider displaying the Username of the employees on the Attendance register
Solution
The username has been included within the student column for the attendance register, attendance history and mark sheet
Prevent users from clicking the attendance Register link if there's no period (#122073)
Problem
There is no indication that periods need to be set up
Error message for period retrieval is the wrong message
Solution
Add a warning message to indicate periods need to be configured
Added new message to indicate retrieval error
Tenant Management
Date Picker Defaults set to Future Date rather than currently configured date (#122611)
Problem
When opening the "edit expiry date modal" the "Current expiry date" is a day after the actual date"
Solution
Added a fix to convert the date to the correct date so that it is not a day ahead.
Wrong Notification Template used for 1 Day After Notification (#122732)
Problem
Licence Process Notifications are sent on the wrong dates.
Solution
Ensure licence process notifications are sent on the correct date.
Data Warehouse
Performance Management: Exclude job titles from performance management (#122661)
Problem
Performance Management Records are returning for Smollan, although the Job titles are excluded.
Solution
Created custom container within V9 DWH that will remove Performance Management entries for Smollan if they are included in the Job Title exclusion list
Reportbuilder.Materializedusers not updated (#121762)
Problem
Report builder materialised users fails
When importing
Notification users are not created
Performance reporting lines are not updated
Appointments are not updated for materialised users
User data is lost when updating appointments or reporting line data
Solution :
The notification did not implement batch user materialisation and appointments Performance management implements batch reporting line materialisation
Report builder correct code
Implement updates of materialised data only if changes
Add migrations to update data across services for report builder and notifications
Competencies not in DWH (#121863)
Problem
Competency datasources needs to be added to the V9 DWH
Solution
Added competency datasources within the V9 DWH
Claim Report for Sage Import (#122871)
Problem
Datasource jpHRProcessRequestData needs to be added that contains the json response entries
Solution
Added datasource jpHRProcessRequestData within V9 Datawarehouse
Version 9.1.131 (18 November 2024)
People Management
Users cannot send Kudos - People group problem (#122263)
Problem
When a user does not have an active / default people group, the My Team / My Department / My Company user lists don't load.
This is incorrect, as for those views, it does not require the user to have a people group, and it will return only relevant people based on the reporting line/org.
Solution:
Removed the check to not call getUsers when a user does not have an active people group.
Active people indicator shows employees as Future Dated when the appointment date is in the past (#121617)
Problem
When hovering over the Active People count for a newly created ruleset, the count shows that the 1 person appointed is future-dated.
Solution
Ensure that the person is not seen as future-dated but active
Support user visible on newly created ruleset (#121931)
Problem
The support user is shown on the People Management Dashboard
Solution
Hide the user from the front-end
Fit initials into bubble (#122322)
Problem
The initials do not fit in the bubbles
Solution
Make the font smaller
Main Dashboard
Update size of middle block (#122320)
Problem
The My Colleagues widget is bigger than the rest
Solution
Align the widget with the rest of the widgets
Global Search
Search field loses focus (#121885)
Problem
You type a few characters, and then the page reloads to show the relevant filtered data, but it loses focus, and you have to click on it again to refine your search.
Solution
After the result set has been filtered, place the focus back in the search box so that you can continue to refine without having to click in the box again.
Imports
Disabilities duplicated (#121903)
Problem
When reimporting a user the disabilities are duplicated and all disabilities added on the front end are deleted
The importation of long org codes fails at the DB level.
When creating a new user, if there are empty disabilities in the master data, the import fails with the object reference issue.
Solution
Change the domain update of disabilities when importing as disabilities in the DB are not loaded
Correct the length of the org code in the pre-validation
Add checks for null disabilities when creating a user
Add Person AppointmentEndDate to MaterialisedUsers tables (#121349)
Problem
Report builder materialised users fails
When importing
Notification users are not created
Performance reporting lines are not updated
Appointments are not updated for materialised users
User data is lost when updating appointments or reporting line data
Solution
The notification did not implement batch user materialisation and appointments
Performance management implements batch reporting line materialisation
Report builder correct code
Implement updates of materialised data only if changes
Add migrations to update data across services for report builder and notifications
Organisational Structure
Line Manager details spill off the page (#121877)
Problem
With the Zoom at 90%, (values higher than 80%) the Line Manager details for the positions spill over the right border of the page.
Solution
Wrap the text with the zoom
Learning Management
Unable to view all Learning Portal contents once logged in using copied link (#122264)
Problem
Opening the pathway shared link for V10 prevents navigation to the normal learning portal
Solution
The portal link is cached when opening the lms portal on V10. Adjusted the logic to only cache the link if the menu item is used and not when a shared link is used.
Not able to link learning manage role to user (#122890)
Problem
The role for Learning Administrator is not available in V9
Solution
Create a Learning Administrator role
Data Warehouse
Table consolidation and Data Dictionary cleanup (#121664)
Problem
There is data in the Data Dictionary tables across tenants
There are unused columns in the Datawarehouse tables
There are tables in the Datawarehouse that can be combined
There are columns in the Data Dictionary where the content of the column is unclear This requires a rename of the alias of such columns
Column names do not appear in an expected / logical order
Solution
Cleanup data so that there is only Data Dictionary data in tenant 1
Work through all columns in the Datawarehouse and identify unused columns
Identify tables in the Datawarehouse that can be combined
Review all columns and suggest wording where it is not clear what is stored in the column
Order columns in a logical order
Ensure data sources appear in their correct categories
Performance Management
Cannot submit agreement (#122734)
Problem
Error when attempting to save a comment.
The section item weight must be greater than 0.
The section weight is, however, 5%, and the employee is still busy capturing the remainder of the information and balancing the scorecard.
Solution
Skip validation for weight on values and behaviours when setting auto distribution is enabled
Move tooltips up for buttons on the agreement page (#118757)
Problem
When you view an agreement, several buttons can be found at the bottom of the screen. Some of them display a tooltip on hover, but it sometimes gets in the way then the click is not registered.
Solution
Move the tooltips to display above the buttons
As a Performance Administrator viewing the Review Setups, I want to have a setting to determine whether the timeline should show on Performance Dashboard for the end-user (#121303)
Problem
People requested to not see the timeline on the Dashboard
Solution
Add a setting to hide the timeline on the Dashboard
As a Performance Administrator viewing the Review Setups, I want to have a setting to determine whether the Agreements can be edited when using the API to create Agreements (#121302)
Problem
No functionality existed to lock an agreement from editing
Solution
Added new settings
As a person doing the evaluation, I want a Save button to save my progress for later (#122391)
Added a Save button before the Submit button on the evaluator page
The Save has been added on the Back arrow as well
This is to allow the person to add ratings and comments and then come back later
As an employee creating the evaluations, I want to see the people's name, surname and email (#122390)
Business Rules
When the setting is enabled for the Manager and Employee not to see the results, and the employee and/or manager is creating the evaluations, the selected people's info should be shown
Do not show the results on the create evaluation modal
Summary modal stays as is
Employee and Manager creating Evaluations
Summary
When the setting is selected that the employee may not see the results, but the manager can, then the same as for the employee above should be implemented
For the Manager, it stays as is
Manager
Employee
Summary - Employee
Summary - Manager
Action Label Requires Correction (#122015)
Problem
When a user receives an evaluation request link via email, when the link is opened the Action Heading is displayed as ACTION.ACTION - this should be ACTION
Solution
Added the translation for Action
System Menu
The translate button on the My Heading field does not navigate the user to the Menu Heading field translation field (#121904)
Problem
When clicking on the Translate button on the Menu Heading field, I am navigated to the first item on the translation list.
Solution
Ensure that the user is taken directly to the Menu Heading field on the list of translations.
Report Builder
Changes to date field (#121255)
Problem
When right-clicking on a date field in Report Builder, the following options show and there is no option for time:
Solution
Change the current one above to Date and time (Default)
This time shows as: 2024-10-07T07:30:53.8235783
Show as our standard date/time function, but aligned to the selected culture and timezone. In the above example it should be: 2024-10-07 9:30:58
Add another option for Date only
This option must show the date without the time component
API
As a System Owner, I want to create an API call to import Performance Agreements from a third-party system (#121301)
Business Rules
An API call should be created to import the agreements from a third-party system
The agreements will be imported per employee for a Review Setup linked to the Review Year for a Review Item as an Overall Approved Agreement
The fields needed for the API are:
Ruleset Code
Username *
Review Year *
Review Setup *
Review Item *
Section *
Section Weight
Perspective
Perspective Weight
Is Perspective Library Item
KPA
KPA Weight
Is KPA Library Item
KPI
KPI Weight
KPI Measures
KPI Ratings
KPI Activities
Is KPI Library Item
Person Rating *
Person Comment
Manager Rating *
Manager Comment
Final Rating
Approved (Use Approve Contract . approvecontractperiod
If there is no rating, the record should be rejected
The Manager Rating is the Final Rating
When only the Manager Rating column has been populated, make the Final Rating the same as the Manager Rating
When a score of 0 is sent through the API call for a specific review item, the review item should be excluded
New Development
HR Processes (#116458)
User Story 1 - As a People Management Administrator accessing HR Processes from the Inbox, I want to go directly to the Product Setup
User Story 2 - As a person with access to the Organisational Structure, I want to have a new section for the Workflow Fallback Configuration when adding or editing an org unit
User Story 3 - As a People Management Administrator accessing HR Processes Product Setup, I want to have a section for the Workflow Fallback when adding or editing a Process Flow
User Story 4 - As a People Management Administrator accessing HR Processes Product Setup, I want to have new fields available when adding the Approval Levels for a Process Flow
User Story 5 – As an Approver, I want to be able to upload files
User Story 6 – As an Approver, I want to be able to Cancel a Request
User Story 7 – As an Approver, I want to be able to request more information from the previous approvers or submitted person
User Story 8 – As a Fallback Approver, I want to be able to select another approver
User Story 9 – As a Ruleset Administrator, I want to have a Notification Template for the request for more information option
User Story 10 – As a Translation Administrator, I want to have the new fields available for translation
User Story 11 – As a Report Builder, I want all the new fields available in the DWH
User Story 12 – As an approver, I want my approvals not to be updated at the same time if there is an approval in between
The approval will have to be done again if there is another approver after the first approval
User Story 13 – As a System Owner, I want each request to have a reference number which displays on the Request and Notifications
User Story 14 – As an Approver, I want to see my Historical Approvals
Version 9.1.130 (5 November 2024)
Performance Management
The performance manager’s comments have disappeared (#122076)
Problem
Manager comments were disappearing.
Audit data indicated that on the Final Rating of the item, the manager's comment was set to null which should not happen, it must take the comment provided on the front end.
Eventually, it was determined issue was with Copy Ratings To Final functionality which was resetting the Manager and Private comments to null
Solution
When Copy Ratings To Final then take the L3 item's comments as is currently.
Also, fixed the problem preventing the editing of VB items during the Objectives phase.
Move Employees (#121775)
Problem
Searching on this tab was the front end only.
Duplicates were returned
Solution
Do the searching back-end on all available data.
Ensure that the people are grouped, so that duplicates are not returned.
Unable to add final ratings (#122313)
Problem
There are scenarios that occur, however unlikely, where one of the parties approves ratings without the objectives begin approved.
This should not be possible, but could perhaps be caused by leaving the contract page open for an extended time, and then the other party unapproves the objectives.
Solution
Added additional validation to the rating approval to check that both User (for dual approval) and Manager objectives are submitted.
Also on objectives unapproval, check if ratings are approved and unapprove as well.
Unit tests updated.
Ruleset Management
Refresh to continue error when accessing Learning Portal on copied ruleset (#122331)
Problem
When a ruleset is copied the corresponding schema is not created and the V8 pages break when accessed
Solution
Add the request step to the ruleset copy process
Imports
New jobs not importing on V8 (#122003)
Problem
The jobs are not importing to V8 using the bulk import
Solution
Ensure that the Position's Org Path sync
Data Warehouse
New scorecard status report issues (#122383)
Problem
Duplicates occurred within jpAppointments due to daily appointments import and the section within the Datawarehouse was removed to remove and only keep the latest record.
Solution
Updated the script within jpAppointments container for V9 Datawarehouse that will delete and only keep the latest appointment entry per Job Position and User
Objective setting date visible but status still false (#122380)
Problem
There issue on the system where a date field will be populated, although the related boolean value is still false
Solution
Added section within pdmContractPeriods container for V9 Datawarehouse that will clear Date fields if the related boolean is still set to false to resolve reporting issues
Employees not showing on Report (#122004)
Problem
In the Datawarehouse for jpAppointments, the incorrect appointment entry was removed due to Datawarehouse logic that only keeps the max appointment entry per user, JobPosition
Solution
Adjusted the SQL script to exclude Famous Brands that will remove historic records and only keep the max appointment entry per user, JobPosition
Version 9.1.129 (30 October 2024)
Performance Management
Approved ratings that are empty (#122271)
Problem
There are contracts that have FinalScoreApproved = true, but none of the items have a Final Rating.
This should be impossible, as when submitting ratings for approval, there is front-end validation to ensure all items have ratings.
Also, I cannot find another means to replicate this issue.
Solution
To try to mitigate the problem, additional checks were added on the domain-side validation for the rating approval to ensure that when final ratings are submitted, all items must have a rating.
Incorrect ordering of the ratings (#122246)
Problem
Ratings are shown as they are added
Solution
Change the ordering to look at the Setup's order
Move Employee Scorecard from 1 setup to another (#121906)
Problem
The bulk move message is lost when a failure occurs or is only available in the services log
The add of the user on the people group fails due to being unauthenticated in the backend process.
Solution
Return message form move command and concatenate
Only include users when there are any users to include
Allow anonymous linking of people group items when the ruleset is provided.
Display of Original Final score decimals (#122029)
Problem
The original Score is not shown with 2 decimals
Solution
Change the display of the original score shown in the tooltip after importing a calibrated score, to show 2 decimals
Misalignment with the table headers (#122076)
Problem
When the final rating is excluded, and the employee views that finalized contract there is a misalignment of the table cell and the headers.
Solution
Fix the alignment caused by the final rating being excluded.
Final Ratings Calculations (#122077)
Problem
The scores that are displayed on the user banner when viewing a contract has an issue on the calculation when you rate an item, or change a rating, and when the sections have different max ratings.
The rated score is calculated per section and summed instead of using the percentage scores and then multiplying by the max year score.
Solution
Fix calculation to correctly base of Performance Max Year and not rated score per section totalled.
Also, the same fix on UserRatingScores saves (Saved for informational purposes.)
Report Builder
Unable to edit publish status on Report (#121524)
Problem
When trying to publish a report it does not save the published value and also does not indicate the saved snack message. Modal also did not close.
Solution
Model validation failed because of recent People Group additions, excluding PeopleGroupList from model state validation on Update.
Also picked up checkboxes from report form was getting serialized in duplicate, once for each state the checkbox had (once for false and then if it toggled another state for true).
Added code to filter out the duplicates.
No data is available on the performance status report (#122008)
Problem
Timeout in PG refresh for 83K users
Incorrect syntax when username or position had accents
Solution
Extend the timeout to 10min when calculating the PG
Add exclusion of or path when listing users
Make the max received bytes larger for the channel as 83k exceeds the 4MB default
Escape accents in username, surname and position title
Change query to delete the users that have been removed from the PG and add the users that have been added to the PG
SigniChat
Styling on Chat Search box to be made standard (#120691)
Problem
The S earch box styling on the chat header is not correct.
Solution
Implement the standard search box as in the Main Banner
Version 9.1.128 (25 October 2024)
Performance Management
Move Employee Scorecard from 1 setup to another (#121906)
Problem
When a custom people group is linked to an org node that includes a child node it is seen as an org people group rather than a custom. A source review setup that is linked to this custom people group cannot be moved because it is not seen as a custom people group
Solution
Remove the filter for custom people groups
Report Builder
People Group not applied when exporting report (#121917)
Problem
Users are included in the people group of org units where they have historical appointments. They are then visible on the PG of the previous appointment org nodes as well as the current active appointment org node.
Solution
Users should only be included in the people group of the org unit on which they are currently actively appointed.
Filter the org unit People Group Users select on appointment start and end date
Data Warehouse
People Profile Report (#121987)
Problem
Fields missing when creating a report
Solution
Added the below fields to display under the Appointments
Occupational Category
Occupational Level
OFO Code
Version 9.1.127 (24 October 2024)
Performance Management
Cannot submit - Phase not active (#121535)
Problem
The phase active check was not taking the end date as inclusive, it matches against the date only.
This means that if the phase ends on 14 October, it does not include the current day. All the period/phase dates are inclusive.
Solution
Change the calculation for phase active to check the end date as inclusive.
Print/View button not showing in the contract (#121816)
Problem
When in the rating phase and the manager and user scores are approved or the final score is approved a user cannot see the print button under more options.
Solution
In this case, rather return the print button than nothing to allow the user to print the agreement.
People's names are showing on the Evaluation Summary in the Objective Setting Phase (#120919)
Problem
When the 'Show the results anonymously' setting is active, the usernames still show while in the Objective Setting Phase.
Solution
Implemented a fix to ensure that the user names are not showing while the setting is active and in that phase.
Ratings Deadline for Mid-Year Review Notification dates incorrect (#121814)
Problem
The data placeholders for the PM emails are not formatted according to the default language selected for the ruleset
Solution
The culture formatting that uses the default languages for the following PM emails has been added:
Objectve Setting Deadline
Rating Deadline
Check-in Deadline
Check-in Started
Evaluation Sent
Add a hand icon on the items that can be selected when copying a Template (#120056)
Problem
The cursor does not change to show an item can be selected
Solution
Enable the selection hand to show an item that can be selected
Notification Status Displaying Incorrectly (#120055)
Problem
An evaluation was submitted and the evaluator submitted a rating and comment - however, it is displaying as though it has not yet been sent (Notification & Status are incorrect) this is problematic as it would allow the deletion of an already submitted evaluation.
Solution
Ensure the statuses are pulled through on all pages
Backspace does not clear V&B weight (#113302)
Problem
When the setting is to distribute the weights of Values & Behaviour items, you can't clear the text field with the backspace key. It stops in front of the last number.
Solution
Enable the clear of the weight field when using the backspace key
Username overlaps when it is very long (#113525)
Problem
When you have a long username, it overlaps with the instructions
Solution
Add ellipses when a username has more than a certain number of characters and then have it displayed in a tooltip on hover
People Management
Banner Image not updated on Manage Profile Page (#121918)
Problem
The ruleset's default banner was not displayed on the card view when the user had no selected banner
Solution
Include the ruleset ID, when generating the image paths to ensure the current schemas default is used if it exists rather than R1s default
Cannot delete the alternative email (#121868)
Problem
The alternate email cannot be cleared
Solution
Remove the default domain functionality when updating contact details to empty
Password reset confirmation (#110536)
Problem
The modal shows incorrect wording
Solution
Instead of showing "The Person" the modal now shows the person's email address
Imports
Improve reporting line sync - reporting lines created with reporting line import from V9 to V8 (#119203)
Problem
Currently reporting lines are synced to V8 from V9, row for row
Solution
Do reporting line sync in bulk or batches, at least
Only do incremental updates where there are changes, not all every time
Report Builder
People Group not applied when exporting report (#121917)
Problem
Exporting a report on ReportBuilder does not filter based on the selected People Group.
Solution
Send through the selected People Group ID to the Export Report handler.
Terminated people not showing up on Report (#121805)
Problem
The people group on the report builder only contains data for active users; thus, reports cannot be drawn for terminated or future-date users.
Solution
Remove the caching select that only contains active users
Include all users for the target audience when selecting data from the job profiler
Ensure the query does not break when the position is not linked to an active org node
Changes to Styling on Full Report page (#121257)
Problem
When viewing the full report , and when there are many columns, the paging buttons are off the screen and cannot be seen.
Solution
Move the paging buttons left
Changes to styling on the Preview pane (#121256)
Problem
No message is displayed to inform the person that only a certain amount of people is displayed
Solution
Add a message:
Only the top 10 records are shown. Click on the View Full Report button.
Data Warehouse
Create a workflow to deploy DWH packages to UAT and Live (#119232)
Problem
Datawarehouse packages are deployed by hand at present and are a manual process
Solution
Create a Github Actions workflow to deploy DWH packages to UAT and Live
There are possibly 4 steps:
Create a Powershell script to build and package the V9 DWH project for connection managers that connect to master (juliet\sql2019)
Extend the Powershell script to deploy the packages to master
Extend the Powershell script to update the Data Dictionary
Finally, create a Github Actions workflow that will run this Powershell script on WindsorHytbrid with input parameters - the input parameters will be discussed at this point
Add Unapproved and Approved Final Score (#121702)
Problem
The unapproved shows as approved
Solution
Add the Unapproved score to the DWH
Tenant Management
Notification sent out based on historic dates (#120742)
Problem
Notifications are sent out for historical licences
Solution
Only send notifications for current active licences
Main Dashboard
Unable to cycle banner images after New ones are selected (#120501)
Problem
When a different set of images is selected or the selection is changed in any way and the user saves these changes, after these changes have been effected the User is unable to use the navigation arrows to cycle through the image selections
Solution
Refresh the images to allow the images to cycle through
Months of the year not translated on the Dashboard (#120788)
Problem
The months on the calendar strip at the top of the Dashboard are not translated.
Solution
Add translation for the months on the timeline
SigniChat
The terminated employee shows as a member of the Signichat group (#121260)
Problem
The members listed include terminated employees
Solution
Terminated people are removed from the People Groups. The same logic has been implemented on the SigniChat Groups
Job Profiler
The system does not prevent a user from Unpublishing a Job Profiler with Active Positions (#120455)
Problem
The system does not prevent a user from Unpublishing a Job Profiler with Active Positions.
Solution
Prevent an Admin from "Unpublishing" a Job Profile with Active Positions.
Add a tooltip:
The Job Profile cannot be unpublished because there are Active Positions linked.
Organisational Structure
Employee import error (#121076)
Problem
The Employee Import allows an org code that is longer than 100 characters and then trims the code during validation which causes unexpected results.
Solution
First, validate that the org length is not longer than 100 characters before validating the org structure.
Version 9.1.126 (21 October 2024)
Performance Management
Unlocking of a Scorecard (#121195)
Problem
A 0.00 score rating is different than an excluded rating (it means you did REALLY badly). 0.00 ratings are allowed but on the ratings, submission check the !(level3[name] as Rating)?.score incorrectly flags a 0 score as true.
Additionally picked up on the main dashboard that the contract score calculation had a hardcoded max rating of 5, this is incorrect and should use the performance year max score.
Solution
Change the validation check to specifically check whether rating score is null and not excluded (implies no rating yet). Correctly calculate dashboard PM score using PM Year max rating.
Phase Dates (#121535)
Problem
The phase active check did not take the end date as inclusive; it matches against the date only. This means that if the phase ends on 14 October, it does not include the current day. All the period/phase dates are inclusive.
Solution
Change the calculation for phase active to check the end date as inclusive.
Job Profiler
OFO Codes cannot be selected (#121425)
Problem
The on click events were only set once when the general tab was loaded, causing some rows that are not on the first page to not have an onclick event set.
Solution
Updated job-profile.js to set click events on dynamically created rows within the OFO codes table using the DataTable plugin.
Identity
MS login improvement (#121045)
Problem
Users who log in with MS are often (when logged in with one account) not given the option to "See" which account they logged into and then the message "User is not active" is displayed.
Solution
Change the "User is not active" message to "User [username] is not active.
In the case of normal logins, this should display the username e.g. User [username] is not active
In the case of any third-party login, it should display
User [person@thirdparty.co.za] is not active so the username at least displays for fault-finding purposes
In addition, when logging in with MS display the following message in addition to the above:
If you want to log in with a different Microsoft account, please sign out here and log in with the correct account. After signing out, return to this page to log in again.
sign out here opens https://www.office.com/
SigniChat
Timestamps on Sent view is 2 hours behind (#121259)
Problem
Timestamp is 2 hours behind
Solution
Implement the UTC time rule
System Access
Empty pages on some V8 menu items (#121452)
Problem
The controller mapping for the default theme URL caused the Additional services controller to be intercepted on load. This resulted in the page never loading.
Solution
Added custom path for additional service pages
Included user-id in the query string object
Imports
Copy wwwroot/content in the build phase (#120305)
Problem
Content/import samples should be synced to the image while building
Also, there are image folders that should copy
Solution
Add a step to Dockerfile to copy the content folder from the build to the final image
Data Warehouse
PAS report add Contracting Completed Status (#121603)
Problem
The client wants an extra column added showing a ‘ Contracting Completed ’ status when the following 2 columns are both TRUE:
Employee Objective Setting Started
Manager Objective Setting Started
Solution
In Datasource "Contract Periods", I have added the requested field "Contracting Completed" within the Report Builder.
Create a workflow to deploy DWH packages to UAT and Live (#119232)
Problem
Data Warehouse packages are deployed by hand at present and are a manual process
Solution
Create a Github Actions workflow to deploy DWH packages to UAT and Live
Actual Values available in the DWH (#119385)
Problem
With the Interpolation development, the actual score should also be added to see the interpolated score
Solution
Added new fields to the DataSource "ContractPeriodSectionItems"
Logic has been added for when the Interpolated is equal to "true", it will then update the User-, Manager - and Final Rating scores where the scores should be the same
V9 PM Reports (#119854)
Within the Data Source "Contract Periods", the requested PM stats fields are available now on the Report Builder.
For Data Source "Appointments", the requested new field "Grade Names" has also been added to the Report Builder.
Version 9.1.125 (21 October 2024)
Ruleset Management
Better ruleset URL handling (#120938)
Problem
A vague error message is displayed when the ruleset cannot be determined from the URL.
Solution
Display a more appropriate message when the URL is incorrect.
Improve reporting line sync - reporting lines created with reporting line import from V9 to V8 (#119203)
Problem
Currently reporting lines are synced to V8 from V9, row for row
Solution
Do reporting line sync in bulk or batches, at least
Only do incremental updates where there are changes, not all every time
Imports
New employee created when you update the username while using the externalId or Employee Code setting (#121154)
Problem
The username import settings could not be saved on the integrations tab
The setting did not trim the values correctly when comparing the string fields
The external ID is not updated to the new value the user is imported with
The message displayed after the import was incorrect
The order of the import tab was not correct
Solution
Correct the js that selected the checked value of the settings
Added trims when comparing employee and/or ID number fields
Used the correct external ID when updating the user
Change the message displayed from
Data Warehouse
Add a field for the agreement check-in ratio (#120046)
Contract Periods:
Agreement Check-In ratio
How will this work?
Number of KPIs
Number of Check-ins
Number of KPIs checked in
Agreement check-in ratio
10
23
8
80.0%
You have 10 KPI's
Total number of check-in across the KPI's is 23
Check-ins per KPI's is 8
Number of KPIs Checked-in / Number of KPIs *100 = Agreement check-in ratio
Add a step to DWH SSIS Packages to clear the People Group Users table (#115619)
Add a step on the DWH SSIS packages to clear out the DWH people group users table nightly.
Report Builder
Have the People Group by default to use when running the report (#115616)
Always include the People Group filter when adding a report with people data
This is added as a dropdown in the Report Filter Options Accordion
This option is always the first one
The Active People Group will be used as default but can be changed
When viewing the report will be an option to change the PG
Modify Report Builder Stored Procedure (#115618)
Modify Report Builder Stored Procedure to include join to DWH people group users table when ‘Users’ data source is included on the report
Alternatively, we might be able to set up the DWH table as a JOIN to Users, this table should just never be selectable as a data source on the Data Dictionary
Version 9.1.124 (21 October 2024)
Imports
Data file upload (#121204)
Problem
When the ruleset does not use payroll connectors the import breaks when updating user data
When the username has been accented the import of appointments fails
When the job profiles are imported without a code, only the first job profile is imported into the sheets, and the import fails at the positions step. When the org codes are not provided the import uses the ruleset name as the root node rather than the org level 1 when constructing the org path and the position step fails because the org could not be found.
When you save on the integration tab and the content server validation fails the other settings on the page are not saved. When the content server has a valid password and you save the validation fails because the password is not sent to the server.
Solution
Initialised payroll connector as null rather than new
Sanitise the username in dapper queries when accents are present
Add fallback to the title when the job code is empty when determining the unique jobs to create
Use the org level 1 when creating the path
Ruleset Management
User Name Changes (#119426)
Problem
When you save on the integration tab and the content server validation fails the other settings on the page are not saved
When the content server has a valid password and you save the validation fails because the password is not sent to the server
Solution
Change the order of the actions in the update so the content server is updated at the end
Change the selector that retrieves the value of the password field
Handle invalid ruleset error better (#120938)
Problem
A vague error message is displayed when the ruleset cannot be determined from the URL
Solution
Display a more appropriate message when the URL is incorrect
HR Processes
Claims Report (#120508)
Problem
On the Historical Requests tab, the display limit is currently 10
When clicking on Load More it does not appear to work and still only displays 10, when there are more than 10 items in the database
The problem is with the container ID used for each tab ('Awaiting', 'Open', 'Historic')
All 2 use the same partial to populate information
This partial had a wrapper div with an id="process-requests-container."
When clicking on the next displayed tab, it loads the partial into the next v-tab—"container," with the result being that there is more than 1 element with id="process-requests-container."
When the Load More then tries to add the next batch of requests, it looks for #process-requests-container and adds the requests to the first element it finds which adds the historical records to the 'Awaiting' tab
Solution
Changed the partial wrapper div id to be determined based on the selected tab, changed the page hidden fields to be class references to not have duplicate id elements present
Changed the Load More functionality to look for the specific tab container ID and add the items to that to ensure the correct elements are used
Performance Management
Add domain validation (#112141)
Problem
There is a rare occurrence where an L3 weight ends up being 0% which causes unwanted problems on the contract
To address that it does not need to add domain-level validation to ensure that weights are always greater than 0% on a domain-level
However, with this change, an additional change needed to be made on the Templates with regard to the Hide Scores setting, which only flagged the first item as 100% and the rest as 0% since it did not matter at the time
When the contract is created from the template and then submitted the weights are distributed
Solution
Add domain validation to ensure captured weights are greater than 0
Distribute weights on the template when hide scores are enabled
Cannot Print Agreements (#121253)
Problem
When impersonating and clicking on View / Print an error is shown indicating the user does not have access to the contract, the impersonation is not getting sent through to the view/print pages.
Solution
Include the ImpersonateUserId on all the view / print links if available to allow the impersonator to view / print the contract.
Fix the issue with auto weight distribution when hiding scores and allow perspectives off
Fix weights displaying on the template when hiding scores on
Fix add key competencies breaking when hiding scores on
Ratings (#120918)
Problem
For the next action and stage of the contract, the next action seems to display the correct translation.
Solution
Change the wording generically to:
Complete and submit the Manager Ratings
Data Warehouse
Claims Report (#120508)
Corrected the update of ApprovalStatus
Version 9.1.123 (7 October 2024)
People Management
Unable to access People Management module (#121118)
Problem
When a user opens the people dashboards LM is terminated or the LM's position is deleted or inactive the dashboard breaks
Solution
Change the active check to get the user to use the latest appointment of the user rather than the active appointment.
Remove the check on the position's deleted or active fields
Added a catch when loading the manager's data to ensure the people dashboard does not break because the LM's details could not be loaded
The content of the box remains unchanged even though people are filtered on selected subgroups (#121164)
Problem
On People view when changing the active people group from the dropdown the users are filtered correctly, but the dropdown selected value does not change along with it, it remains on the 1ste item.
Solution
On item change also set the selected option state variable so it sets the selected value on the dropdown correct
Theme Management
Menu Portal Language Translation not working (#121198)
Problem
When the default language on one ruleset is en-US and you open a new ruleset where the default is en-UK the cookie storing the culture is not cleared.
When a single language is active the cookie is then used to set the preferred language even though it is not active causing incorrect translations to display
Solution
Clear the cookie when switching theme URLs
When storing the preferred language if it is not part of the enabled languages of the ruleset do not store data in the language rather clear the culture to use the ruleset default going forward
Version 9.1.122 (7 October 2024)
Exports
Performance Agreement Status Report - Editing after download (#109250)
Problem
When you export a list or report to Excel you cannot edit it before you unblock the content.
Solution
Removed the sheet protection that blocked editing on the sheet, object, and scenario, which is unnecessary.
Performance Management
Cannot copy the Manager ratings to the final ratings (#121067)
Problem
Manager ratings could not be copied to the final.
Solution
Ensure manager ratings can be copied to the final.
When opening the ratings, the loading of ratings takes a long time and shows an incorrect message (#120771)
Problem
On slow connections when opening the ratings modal for an item, the "no ratings configured" alert box is shown until after the ratings have loaded.
Solution
Added a flag to indicate whether the ratings have loaded yet and instead show the Loading component. Once loaded if still no ratings are returned then show alert.
Sections are shown in red in the scrollspy list (#118744)
Problem
During check-ins, the side scrollspy menu is showing in red/invalid. Even though the objectives phase has passed and all items weights should already be correct.
Solution
The scrollspy check to determine whether any section or child items are invalid was recently corrected/improved, on the check-ins, the item weights were not returned which resulted in the invalid being displayed.
Included the item weights on the check-in fetch to allow the validation to work correctly.
Able to save blank perspectives (#118739)
Problem
When adding a perspective and only providing the weight the user could add an empty perspective when clicking on Save Add New. Save correctly validates that weight must be > 0 and perspective item must be selected.
Solution
Add perspective-selected validation to save and add a new function.
Approve Employee Self-Rating (#120785)
Problem
The start date of the period is not included when ignored end dates are true
Solution
Ensure the start date of the period is included when calculating if the period is active
Hide the second column of the Interpolation Ratings section (#121065)
Problem
The interpolation descriptions on the print view need to be hidden
Solution
Hide interpolation description on print view as it clutters the screen
Reset the modal after entering an actual value (#121040)
Problem
The rating modal was not reset after entering the actual value.
Solution
Ensure the modal is reset after entering the value and opening the modal again.
Mobile APP
PM Menu item does not appear (121074)
Problem
The account API call to get the active products on a ruleset has roll-specific authorization. This presents an issue on the Mobile App which uses this call to determine which V9 products are active, resulting in the call failing auth and it returning no products being active on V9.
None of the V9 product icons then show for a normal user only for users that are ruleset admins.
Solution
Removed the roll-specific requirement from the call.
Checked on MVC where it does utilize this call a roll-specific check is already in place so should not affect Web functionality too much.
Datawarehouse
Create workflow to deploy DWH packages to UAT and Live (#119232)
Problem
Datawarehouse packages are deployed by hand at present and are a manual process
Solution
Create a Github Actions workflow to deploy DWH packages to UAT and Live
There are possibly 4 steps:
Create a Powershell script to build and package the V9 DWH project for connection managers that connect to master (juliet\sql2019)
Extend the Powershell script to deploy the packages to master
Extend the Powershell script to update the Data Dictionary
Finally, create a Github Actions workflow that will run this Powershell script on WindsorHytbrid with input parameters - the input parameters will be discussed at this point
Main Dashboard
Investigate unnecessary DB calls in v9 modules (#110710)
Problem
Performance issue on the Main Dashboard
Solution
Some unnecessary calls were being made in a parent and child component, where the value could just be passed as a param to the child component (modal). Also, combined two http get requests into a single request. Each request returned a single property from the same controller, so it made sense to rather combine it.
Version 9.1.121 (7 October 2024)
People Management
Username to be removed on card view (#120911)
Problem
Clients do not want the username to display on the Card View
Solution
Hide the username on the card view of the People Management dashboard
Pop-up stays on screen after selecting a People Groups (#120423)
Problem
The tooltip stays on the screen after hovering
Solution
Make sure the tooltip does not stay on the page after navigating away
Identity and Authorisations
Clicking Cancel on the Disclaimer pane shows a white screen indefinitely (#120664)
Problem
When a user clicks on the Cancel button on the Disclaimer page, the user is navigated to a white browser page.
Solution
Ensure the redirect when clicking on the Cancel button takes the user to the login page
Ruleset Setup
Products setup on Report Builder Product tile unresponsive (#102675)
Problem
The Product Setup menu option is displayed although there is no setup
Solution
Hide the Product Setup menu option
Styling on Disclaimer to be tweaked (#120659)
Problem
The Disclaimer message needs styling changes
Solution
Removed the superfluous vertical scroll bar on the right-hand side when an image has been added
Move the image and Disclaimer text to the right, instead of right up against the pane's border.
Show the link
Default Badges did not copy when the new Tenant and Ruleset was created (#114454)
Problem
When creating a new tenant the default badges are not created. Also found an issue when creating only a new ruleset.
Solution
Implemented changes to create default badges when a new tenant is created and when a new ruleset is created.
System Menu: No indication that changes will be lost (#106936)
Problem
When changing anything in a menu item and then navigating away without clicking on 'Save' the changes are lost.
Solution
Added a warning message that unsaved changes will be lost
Imports
Error when people try to log in (#120909)
Problem
When an existing user is imported a duplicate claim is made for the given name.
The family_name was updated to given_name in AspNetUserClaims.
When the user logs in the page breaks
Solution
Ensure the surname is added as family_name and not the given name
User name changes (#119426)
Problem
When a username changes when importing a new person if the external ID is not used the person will be created as a new user on the ruleset
Solution
Add settings to use additional fields to update the username
Check on the settings in order starting with employee code, ID number and external ID to try and find the user to change the username for
Should the unique field be in duplicate either in the import file or on the ruleset throw an appropriate error
Add checks to ensure if the user was seen to have a username change but failed that it is not created as a new user.
When exporting data via the ListUserExport API the start date in the group and the start date in the company are populated
When a page is left open for an extended period the user will be redirected to the error page after the next click should the error not be handled
Performance Management
When rating KPI the area is not clickable anymore (#116413)
Problem
To rate an item, the user must click the Rate / Change buttons.
This is slightly inconvenient and the request was made to allow clicking anywhere on the row to access the item to rate (where it does not overlap with other functionality Eg the action buttons).
Solution
Make the entire row clickable to allow rating regardless of whether the final score is approved, and update the person rating active configuration accordingly.
Technical
Domain Errors (#113747)
Problem
The JSON errors were displayed as the page content
Solution
Refactor the exception handler
Add redirects in the auth controller for expiry
Refactor error controller for Ajax and MVC loads, cater for session expiry
Add retry on the general error page to reload
Add session expired page with logout button for MVC, allow Ajax to directly logout when the session is expired.
Reduce the batch size of exception consumer
Translations
Static translations missing (#118237)
Problem
The static translations for all the core supported languages are not added, which are:
de, af-Za, en-UK, en-US, AM, pt-MZ, fr-CF, ar-SA
Static translations are not visible on the language module and cannot be changed from the front end and needs to be added on the Identity service.
So far it looks like only German has been completely translated.
Solution
Added static translations for all the core supported languages
HR Processes
Non-descriptive error displayed when adding process with name & code which already exists (#119243)
Problem
The generic error message displays
Solution
Added a descriptive message:
This process code has already been used
Job Profiler
The system does not prevent a user from Unpublishing a Job Profiler with Active Positions (#120455)
Problem
The system does not prevent a user from Unpublishing a Job Profiler with Active Positions.
Solution
Prevent an Admin from "Unpublishing" a Job Profile that has Active Positions.
Tenant Management
Error when creating tenant without specifying a reseller (#119573)
Problem
When not specifying a Reseller and the Create button is clicked, a non-descriptive error is given.
This does not happen when a reseller has been selected.
Solution
Add a message:
Additional service creation could not be created
New Functionality
Performance Management: Interpolation (#115065)
Introduction
Interpolation is used to map Actual Values to the Rating Scales. During the Rating Phase, Actual Values are entered and then mapped to give a rating.
This functionality is available when creating Templates, when an agreement is Copied, as well as when a Blank Agreement is created.
Mapping Setup - Objective Setting Phase
When adding/editing a KPI, a new toggle is available
Automatic score calculation (Interpolation)
When this toggle is enabled, the mappings open where the Actual Values can be configured
When the Actual Values have been inserted:
Ratings Phase
When rating a KPI, the Actual Values are inserted instead of selecting a rating.
A rating can also be excluded:
When the Actual Value has been inserted, the score is shown:
The score is shown after the rating has been saved
View / Print
When opening the Print View, the Interpolation ratings are also shown:
Version 9.1.120 (23 September 2024)
Imports
Import visibility on LMS (#120517)
Problem
Employees not importing although their profiles are being sent through by Payspace. They are also not on the list of exceptions.
Solution
Fix date validation issue
Version 9.1.119 (23 September 2024)
Job Profiler
Printing job profile displays "Details Required" (#120415)
Problem
"Details Required" displays on each page of the Job Profile print
Solution
Replace the "Details Required" with the Job Title
Performance Management
PM contracts without PDP's (#119221)
Problem
Functionality does not allow a user to submit an agreement if there are no items linked to a section
Solution
Added functionality to allow a user to submit agreements with no items in a section when the section weight is 0%. Excl Primary Goals section.
Identity and Authorisations
Unable to log into newly created ruleset (#120777)
Problem
Cannot log into a newly created Ruleset
Solution
Ensure the user is created during the Ruleset creation process
HR Processes
Approver seeing item to approve on Dashboard even though they are not the next approver (#120552)
Problem
The user, who is the 3rd approver, is seeing an item to approve on their dashboard. Still, when navigating to the Awaiting Your Approval page, the item is not shown yet, since the previous approver (approver 2) has yet to approve the request.
Solution
Ensure the approval items are only shown when the person needs to approve a request.
Ruleset Setup
Unable to deselect English (United Kingdom) on the dropdown (#120576)
Problem
Cannot deselect English (United Kingdom) from the Available Languages dropdown
Solution
Only the default language selected will be disabled in the available languages dropdown.
Version 9.1.118 (23 September 2024)
Performance Management
Internal People List loading requires optimization (#120320)
Problem
The loading of Internal People takes too long
Solution
Optimise the query that brings back the list of people
The evaluation icon not showing on the agreement (#119959)
Problem
The issue is that a review setup with its review periods is linked to more than 1 review year. Eg Managers Review Setup with Mid-year and Final-Year is used on FY2023 and FY2024
When the contract detail is retrieved and it determines whether or not to show the evaluations it checks whether the evaluation due date is captured for the period (Mid-Year) but does not filter based on the Year.
This means it technically finds 2 Mid-year review items , with 1 having an evaluation date set and the other not.
It picks the first one and then returns.
This is why it may also appear to work 'randomly' because of the natural ordering of the query the one with the evaluation date sometimes gets picked first.
Solution
The query now also takes into account the ReviewYear of the contract to ensure the correct review item dates are retrieved.
Add functionality to close the evaluation and show as wrong person on summary (#120155)
When the toggle is selected, and submitted, mark the evaluation as completed
Items to evaluate is then ex 0 / 6
On the Evaluation summary, show in the comment the toggle wording:
The final score in the system is not the same as in the Performance Agreement Status report (#119225)
Problem
There is a rounding issue on the DWH and therefore the scores are not matched
Solution
Create custom rounding function to force round half up rounding and replace toFixed usages
The manager’s general comments are not visible in the employee's contract (#119923)
Problem
The general comments only showed when the agreement was submitted
Solution
Always show General Comments to both parties
Ruleset Management
No load indicator is displayed on the screen when clicking on the Ruleset or Cancel button (#102903)
Problem
There is no loading indicator when clicking on a Ruleset
Solution
Implemented the loading indicator
Languages
Add default culture en-GB (#114371)
Problem
Currently, the date displayed in the V8 system is American and this causes the date picker not to work
Solution
Replace en-US/en-UK with en-GB as the default language
People Management
Fix the styling of the Manage Person button (#113511)
Problem
Styling is not standard
Solution
Make the button a standard button
Identity
SSO issues (#120492)
Problem
The SSO integration between V8 and V9 not working
Solution
With the update to .NET 8, the user identity ID is now retrieved from the 'nameidentifier' claim instead of the 'sub' claim.
Version 9.1.117 (13 September 2024)
Technical
Revert .NET 8 upgrade
Version 9.1.116 (13 September 2024)
Performance Management
Check-in phase - The edit last comments button is not available on the employee check-in screen (#120366)
Problem
When an employee loads a check-in comment initially (without a manager's comment) that comment cannot be edited. The manager can always edit their comments. Only after the manager's comments were added did the Edit Last Comment button show, although was still not working for the employee.
Solution
Correct check to show Edit Last Comment relative to whether the user or manager is viewing and has added comments previously. Correct call that updates column to correctly set state after save.
Clicking on the Evaluate button gives an error (#120422)
Problem
When clicking on an evaluation, it does not open
Solution
Do not return excluded rating items for evaluations
Identity and Authorisation
When using the welcome email to set your password and selecting the "Back to login" button a white screen is displayed after login (#120252)
Problem
The back to Login button shows a white screen
Solution
Fix the Welcome email breaking because of the anonymous ruleset code get
Add theme key and ruleset code to reset password reset URL and validate reset password token on load
Master Data
Race field did not update via employee import (#120325)
Problem
Race was not implemented to add Master Data when importing users
Solution
Allow Race to be created as Master Data when importing
Job Profiler
Occupational Level Field gets erased after approx 12 hours (#120301)
Problem
The problem is that the occupational level is not currently retrieved from V9 with the V9 user import request.
This resulted in setting the occupation level to 0 (nothing) when the import runs.
Solution
The syncing of employees to V9 where the employee's occupational level has also been set on V9 Job Profile, should pull through to V8.
Version 9.1.115 (10 September 2024)
People Management
People Management Service Unavailable (#120109)
The issue is that the system tries to determine the Next Anniversary Date if the user's anniversary has already passed by looking at exactly 1 year from the current year as the next anniversary.
In the case of the user's appointment starting on a Leap Day Eg. 29 Feb 2024, the next anniversary date is calculated as 29 Feb 2025 which does not exist and causes the people page to stop working.
Imports
The user is not being placed into the correct Org when importing from V9 into Version 8 (#120118)
Problem
People are appointed in the first org level 1
Solution
Corrected the import to select the correct org level
Performance Management
An Error occurred on Uploading Documents (#120261)
Problem
The page breaks when trying to view uploaded content for performance management items. The issue is the incorrect IIF check that somehow snuck through with the PM evaluations merge.
Solution
Corrected the IIF check to be correct, and added a semicolon to the start of the CTE with a statement for sanity.
Print/View report shows duplicate records (#119949)
Problem
The join to the Contract Period Phase Dates on the ContractPreview query to determine whether the check-ins phase is active and the check-in comments should be displayed was incorrectly not also filtering on the relevant review year setup.
This caused duplicate records to be returned.
Solution
Also added the ReviewYearSetupId to the join that checks whether the check-ins phase is active.
Version 9.1.114 (9 September 2024)
People Management
Various fixes (#119885)
Hide the username from the Summary on the card view
The person and Line Manager
The Grid View is ONLY available on the Manage People section
Manage People
My Team, My Department and My Company
Change the wording under the User Permissions
Change “System Modules Admin” to “ System Module Roles ”
Change “Additional Roles” to “ Additional System Module Roles ”
System errors (#120034)
A change has been made to how the Ruleset ID is handled when a user's session expires.
Suppose the user becomes unauthenticated at any point due to session expiry.
In that case, an unauthorised error will occur but when the Ruleset ID is not found then the standard Ruleset ID is null error will occur.
In this process, authorisation was also added to the People Group services, which caused the error to be unhandled.
Correct appointment creation when adding a new user on the front end (#118751)
Problem
When appointing a user with RabbitMQ slightly lagging the appointment creation collides with the user materialisation trying to create an existing user.
When creating a new tenant with a code that belongs to a deleted tenant the page breaks
Solution
Only materialise a user when it does not exist and do not throw the exception
Change the existence check and unique constraint on code to only check for tenants that have not been deleted.
Performance Management
Incorrect display in the header of contract (#119961)
Problem
The slash ('/') in the Review Setup name and the display of that translation being HTML-safe encoded resulted in the text to not displaying correctly
Solution
Ensure that the slash ('/') is displayed without strange characters
Search doesn't work on the "Move agreements screen" (#119960)
Problem
The global search's default functionality was triggering a form submission and reloading the bulk actions page which resets all the filters and defaults to the logs page.
Solution
Detach and override the global search submit button on Bulk Actions. This allows the standard data table functionality to work and filter.
Evaluations - Headings should not be caps (#119892)
Change the first rating item's heading to:
WHAT IS YOUR OVERALL EXPERIENCE OF THIS PERSON? (OPTIONAL)
Caps
Bold
The rest of the items in grey should NOT be bold - keep sentence case as is
Evaluations - The icon does not indicate whether an evaluation has been added (#119871)
Added icon to indicate the number of evaluations
When evaluations are not enabled, the summary button should not be visible on the Rate modal (#120072)
Hide the summary button on the rate model when the settings for evaluations are not enabled
Evaluation Summary - Evaluation Comment should have a max display (#119945)
Added the standard rules for text-areas
Text-area display max: 200 characters
On hover: 350 characters
Version 9.1.113 (9 September 2024)
Import - People Management
Add validation in user import to prevent an org node from having multiple parents in the same sheet (#119247)
Problem
Importing org units with multiple parent nodes breaks the import
Solution
Improve the error logging
Add pre-import validation to prevent data where a node has multiple parents from being staged
The following error will be logged in this case:
Org node with code: [Org Unit Code] has different parent nodes
Allow multiple level 1 nodes on organisation structure (#118209)
Problem
Currently, only one level 1 node is possible when creating an org structure
Solution
The import will now import all data added to org level 1 as the level 1 node on the ruleset
When org level 1 is left empty in the sheet then it will use the IN01 node as the default for this node
Use external user ID for employee number changes (#115559)
Problem
When importing data from V9 into V8 the employee number is used as the unique identifier and relies on the ID number for employee number changes.
Because the ID number is not a required field in V9 and is also not unique it causes inconsistent updates of data.
Incorrect movement of information between employees also occurs when more than one user has the same ID number on V8.
Solution
Add a unique per schema identifier to prsEmployees to store the external user ID of users imported as employees from V9.
Performance Management
Copy of PM templates not working (#119586)
Problem
When paging PM Templates the copy onclick event is not attached to the subsequent pages.
Solution
Re-attach the on click event to the data table rows' eye icons when the user pages.
Overall Final Score not recalculated to include Value Survey Score (#119575)
Problem
The calculation of the Overall Final Score was not correctly taking the calibrated score into account and using the original score
Solution
Fix the overall score dial calculation to use the calibrated score from the value survey if available.
Value Survey calibrated score "lost" when you exclude/include score (#119577)
Problem
When excluding a Survey the calibration score is not reapplied on React, only when the page is reloaded does it show again.
Solution
On Survey include/exclude re-apply the calibration score so it reflects the calibration correctly.
Exponentially more templates are created each time you copy a template (#119700)
Problem
When copying PM Templates the copy event is attached in duplicate on each reload of the table causing templates to create in duplicate.
Solution
Detach before re-attaching the onclick event on the PM template copy event.
Check-Ins - The manager wants to review (#119502)
Problem
Contract preview broke if a check-in comment contained a colon (":") or semicolon (";").
Solution
Ensure that comments can contain those characters without breaking functionality.
Unable to include the Value Survey score (#119745)
Problem
Saving a contract survey gave SQL Dapper error because of one of the objects having changed with the new phase EvaluationEndDate but the query was not updated to select the value.
Solution
Modified query to also select EvaluationEndDate.
Clicking on the gauge in the overall section opens the wrong screen (#119957)
Problem
Clicking on any gauge in the Overall Summary Section is always directed to the contract's rating phase regardless of state.
Solution
Change the gauge click to relevant to either Ratings or OS screens depending on whether the user has submitted objectives.
Bulk Performance Contract Linking (#119916)
Problem
When you open the page to bulk link users for contract creation for a review setup that does not have a defined TA then the page will time out.
Solution
Ensure the page does not time out
New Development
Performance Management - Evaluations on Level 3 items
New functionality has been added to allow a user to select other people to evaluate them on the level 3 item (KPI, Values, Leadership Behaviours, Competencies).
When the Objective Setting is approved by both the Employee and Manager, the evaluator will receive a link to enable them to evaluate the people. Comments and ratings are saved in the Evaluation Summary.
Settings are available to enable this functionality. A setting is also available for Anonymous evaluations. The results are shown, but not who submitted the evaluations.
Version 9.1.112 (26 August 2024)
Report Builder
Report not exporting (#119368)
Problem
When invalid XML characters within the data need to be exported, the export to Excel fails.
Solution
A method to sanitize the data was added, removing any invalid XML characters before exporting.
Version 9.1.111 (26 August 2024)
Performance Management
Include both Manager and Employee Check-in Comments (#118556)
Problem
Only the person viewing the ratings can see their comments and not the other person's comments as well
Solution
Include both manager and employee check-in comments
Include the Review Survey import when calibrating (#118980)
Problem
The Review Survey score cannot be imported when using the Calibration Import
Solution
Allow functionality also to import the Review Survey Score
Version 9.1.110 (16 August 2024)
Performance Management
Changes Done By Individual is Reflected For All Team (#119278)
Problem
On Goals import, when the custom KPI or KPA items are added that have the same name to different users it creates only 1 section item and links that to both contracts.
Solution
Always create custom section items, then iterate through the import records, assign the created items as required and remove them from the list if used.
This ensures that if the same KPI name exists on more than 1 contract, each will have their own section item created.
Also added steps to return the current existing contract KPI / KPA ids and then assign the Ids for that to the import items.
Last step added to delete the 'new' master data section items that were not allocated to prevent orphaned section items being created.
People Management
Users not imported to V8 (#112848)
Problem
When forcing a bulk import of users, the newly created users (created today) are not imported.
Solution
A SQL job executing the following must be setup to run on the V8 DB to actually import the data, otherwise clicking the bulk import of users will only stage the data in V8
Version 9.1.109 (16 August 2024)
Ruleset Management | Payroll Connectors
PaySpace: Add job to process daily (#116644)
Problem
The front end of the payroll connectors offers a feature to pull or push data on a schedule daily but no such job exists.
Solution
Add a quartz job in the import services to run all the active payroll connectors regardless of type daily.
The job should fire the global command handler that serves as the controller to call and process the payroll connectors according to their configuration.
Currently, only PaySpace connectors will be processed.
Add the daily schedule to appsettings and the Helmcharts of the import service.
Version 9.1.108 (16 August 2024)
Performance Management
Text not changed to "Calibrated" (#119122)
Problem
When the contract has not yet been approved, the precalibrated score is null. When importing calibration it only sets the final score and because of the null does not validate against the pre-calibrated score.
Solution
It was changed to always read the final score and pre-calibrated scores as 0.00 (instead of null) and changed the comparison accordingly.
Improve error message when importing to a period that has not been started (#119120)
Problem
The error message is not clear when a period has not been started
Solution
Update the message:
The user "[Username]" does not have an active agreement for the review year "[Review Year]" with review setup "[Review Setup]" for period item "[Review Period]"
People Management - Import
User Import: Add additional fields to user imports (#115463)
Problem
Not all fields that are required are available on the User Import
Solution
Refactor user import and extend with additional fields
Improve the error when importing an overlapping position (#119083)
Problem
The error message for an overlapping position needs to be improved
Solution
Changed the message:
"User (Username of person imported), Another appointment exists for the position between [StartDate] and [EndDate] for [Username of person in position]"
Master Data
Master Data "in Use" data (#114637)
Problem
The generic error message displays when deleting master data that is already "linked" to other data
Solution
Implement a modal to inform the user why he cannot delete the master data item
System Access
Enabled Disclaimer prevents ID Validation (#118639)
Problem
When the disclaimer is enabled, the 2nd authentication code is not checked for validity.
Solution
Run the base authentication. If successful, return the disclaimer SignInCustom. Otherwise, return the authentication result.
System Menu
Cannot add the PDP Dashboard on the System Menu (#111669)
On V8:
Add a Gear for the admin pages - Only available to the PDP Admins
When selected, open the PDP Admin menu:
V9:
Add a System Menu for My PDP
Ruleset Setup | System Menu
When clicking on the menu item, open the My PDP page
Add a spanner if the logged-in user is an Admin that opens the admin pages
Kudos
Attempt to translate all sections relating to the Kudos functionality (#119207)
Problem
Missing translations
Solution
Add missing translation sections
Ruleset Setup
System help Page not responding (#119246)
Problem
User guides will show an infinite loading screen when there are multiple rulesets with overridden settings (UserGuideConfigurations)
Solution
Ensure that UserGuideConfigurations are retrieved for the current ruleset only, which will prevent the infinite loading screen.
Notifications (Inbox)
Order items by date (#118522)
Problem
Please order the items so that the latest imports are shown first and ensure that it is correctly ordered as dates and not as text.
Solution
Change the default sort column, and refresh the export table after successfully exporting a report
Version 9.1.107 (12 August 2024)
System Access
System slow/unresponsive (#118937)
Problem
The system is very slow and unresponsive at times
Solution
Implement menu cache for additional service menu items
Remove busting of the ruleset menu cache slowing the whole V9 system
Version 9.1.106 (12 August 2024)
People Management
Inconstant background shape size on different Tabs (#118608)
Problem
The system displays inconsistent background shape sizes on different Tabs.
Solution
Set a fixed size for the labels
Performance Management
Increase padding below rating scale blocks (#118726)
Problem
The heading for "Rating Comments is very close to them especially if you translate it to something that is longer
Solution
Apply size changes and add comments to Check-ins as well
Keep "new line" characters (#118721)
Problem
The newline characters as it was entered in the text boxes are not the same as what the user entered
Solution
Keep "new line" characters on activities, measures and Ratings and KPI
People can rate but the rating phase is not open (#118984)
Problem
On the contract screen the phase start date was not correctly being validated, only the end date.
Solution
Correct phase active check to correctly take the start date into account
Show the correct tooltip when the phase is not yet active and the correct start date check to include today
Final scores not calculated correctly (#118623)
Problem
Final scores not calculated correctly
Solution
On the weighted overall section, always recalculate all item L3 weights regardless of the rated state. Fix the Excluded rating showing rate button.
Employee Evaluations
The report and export do not return all the roles (#118617)
Problem
When people group users are bulk imported from V9 to V8, it sends a list of people groups to V9 and retrieves the users for that list of people groups. The problem is, before returning the people group users, we distinct the list on user id. This is a problem when importing to V8, because V8 expects the users who belong to a people group to be present, even if the user exists over multiple people groups. But currently that will not happen, a user will be returned only once, even if the user exists over multiple people groups.
Solution
Added an option isTargetAudience, which is optional and true by default. When target audience is true, users will not be duplicated over people groups. When isTargetAudience is false, users can be duplicated over people groups and all users for the given people groups will be returned. This option will be false, when the request is made from V8.
New Development
PM Final Score Calibration (#112619)
As a Performance Management Administrator viewing the Review Setups on a year, I want to export and import the template to add the calibrated values
Business Rules
Create a template to import the calibrated values
Calibration of Final Scores
When downloading the Template, everyone linked to the Review Setups should be populated on the export file
The settings should be taken into account when populating this file
The new scores can be populated and imported
Exception:
A record cannot be imported without a Reason for revision
As a Performance User, I want to see my calibrated score
Business Rules
On the Performance Management dashboard, show the calibrated final score
On hover, show the original score
Version 9.1.105 (12 August 2024)
Translations
Export to Excel message (#118605)
Problem
An incorrect snack message is displayed when exporting a report.
Solution
Make sure the export snack message is correct.
Performance Management
As a Performance User, I want to see all the comments for Employees and Managers (#118556)
Add Headings for the following sections for the ratings
Ratings
Rating Comments
Person
Manager
Private Comment
Historical Check-ins
Add Historical comments for both the person and manager
Objective Setting Comments
Person
Manager
As a Performance User, I want the on-hover pop-up to be removed and the info shown on the screen when rating (#118428)
When the rating or check-in modal is open, show the KPI description
Have an arrow icon with a tooltip
When clicking on the arrow, expand the grey area and show
Activities
Measures
Ratings
When clicking the arrow again, collapse the grey area to show the KPI description
Bulk Create Contract Periods using review setup settings (#116832)
Problem
The bulk creation of contract periods does not take into account the rules of the review setup. Currently, it only allows the creation of the next contract period if all the periods that has a start date before the one you want to create on the review setup have been final approved. This does not adhere to settings like AllowExcludingReviewItems, and RequirePreviousPeriodCompletion.
Solution
Implement all the settings currently applied when allowing the creation of a contract period as implemented on the dashboard on the bulk creation.
Export scorecard in Excel (#108772)
Problem
The agreements can only be exported in PDF
Solution
New method on WebMVC.Areas.PerformanceManagement.Controllers.DashboardController to compile contract information into specific format for excel
Extend OpenXMLService to handle specific generation of export. See ExportDataSet but possibly alter to not show search criteria etc.
Integrate with notification service to make downloadable when ready.
Master Data
Save & Add New Function, inherited Competency from Previous record needs to be Manually re-selected before save is successful. (#118076)
Problem
When you select 'Save and Add new', when adding new master data, the select2 selects are not cleared properly. The value(s) are cleared, but it still displays the previously selected value(s). Saving after this, does nothing, as the select does technically not have a value, although it displays a value.
Solution
Reset select2's by selecting the first value from the select, which is always "Select an option".
My Account
No default Language (#118112)
Problem
On a newly created ruleset, when a user goes to the "My preferences" page, no languages are displayed. This happened because none of the languages were published.
Solution
Ensured that the default language is published, or at least a single language when creating/copying a ruleset. Also, to make sure that this works for existing rulesets with no published languages. On WebMVC, if the ruleset has no active and published languages, it at least adds the current culture of the user to the list, so that something displays on the page.
Competency Analysis
Load More appears when there is no more record to Load on the page (#118145)
Problem
The Load More option displays when there is less than 10 records
Solution
Make sure the option is displayed only if there are more than 10 records
Incorrect tooltip when rating as Manager (#112812)
Problem
Incorrect tooltip is shown for Manager (Do self-assessment)
Solution
Make sure that when the person is viewing as the manager, the tooltip changes to Assess Person
Notifications / Inbox
As a product administrator, I want to see the imports for the ruleset. (#115203)
On the notification for a user add a new tab Imports.
Show the tab only if the user is a Performance Management, People Management or Ruleset Management Administrator
On the tab show a list of the last 100 imports paged by 50 per page
Add the columns
Actions
User
Type
Status
Start Date
End Date
On the Action options
Export Transactions
Export all transactions for the import
Export Errors
Disabled when the import is not complete or the completed status is not Failed
Export all errors
Order the table by latest import first
Integrations | PaySpace
PaySpace: Implement performance improvements (#116645)
Problem
Currently, payroll connectors are processed serially meaning that each ruleset will wait for the next to complete.
All data is always processed when pushing data to Payspace
Solution
Implement threading batching no more than 10 ruleset connectors together.
When retrieving the data that has changed only retrieve data that has changed on the last day unless the specific connector has never run then include data over all time. A functional data filter should be added to the export to select changes from any date.
Notifications | Email Setup
Use Office 365 as SMTP server (#111461)
Business Rules
When Basic Authentication is selected
Username and Password fields are shown
When Token-based Authentication is selected
Client ID, Client Secret, and Tenant ID are shown
Ruleset Management | Image Resources
Duplicate first banner image appears when marked default (#118215)
Problem
The system creates a duplicate of the uploaded Banner.
Solution
Ensure that only one banner is created
Ruleset Management | Integrations
Import User Picture URLs from V9 to V8 (#116808)
Problem
The profile images of users are not imported from V9 to V8 and this caused the V8 list pages to not display images for the employees.
Solution
Extend the user details export to include the profile URL from V9, in the Menu and Bulk imports add a step to import the user profile URL as the picture URL in V8
People Management
Show the Active People Counts on People Management and Ruleset List page (#118100)
Business Rules
People Management Dashboard - Grid View
In the slider - Active, Terminated, Future Dated, and All - add the number of people when clicking on an option
Ruleset Setup | List page
Change the heading from People to Active People
Make sure the number here is the Active People
When hovering, show the breakdown of Terminated, Future Dated, and All in a tooltip
General
Implement V9 secure redirects as share links in V8 (#116964)
Problem
Creating short URLs or sharing links in V8 does not create a ruleset-based session for users using V10 and the user is required to login in V8 with credentials that do not exist.
Solution
Implement the secure redirect mechanism developed on V9
Version 9.1.104 (29 July 2024)
Performance Management
Manager Dashboard Change (#118473)
Problem
The wording in the rating phase refers to ratings and check-ins, but the check-ins are done first, followed by the ratings.
Solution
Swap the words around and display: "Check-Ins and Ratings"
Managers can update the review survey score when the setting is disabled (#118349)
Problem
The allow edit setting was no longer taken into account since the click was moved to the gauge
Solution
Implement the setting so that the score input will be disabled when the setting is off. The manager will still be able to include/exclude the survey score.
KPI weight % submission issue (#118340)
Problem
Similar to the previous situation with L2 weights. The items weighted over section setting on the L1 weights are supposed to be calculated automatically but end up being incorrect and not totaling up to 100%.
Solution
Again could not replicate the issue to solve, but removed the front-end L1 validation when the weighted over section setting was on. Weights are still redistributed and validated on the backend.
Ruleset Management
Tenant users cannot update their ID Numbers (#112761)
Business Rules:
When creating a new Tenant / Create from Blank or Create from R1
Do not copy the MFA settings
Always use Sent OTP via Email option
When copying from any other Ruleset (excl R1)
Copy the MFA settings as configured on the copy from ruleset
Image Resources: increase the Maximum allowed size to 2mb for Avatar (#118287)
Problem
The avatar image size was 500 KB which is very small for a high-quality image
Solution
Increase the size to 2 MB
Image Resources: Duplicate first banner image appears when marked default (#118215)
Problem
The system creates a duplicate of the uploaded banner
Solution
Ensure that there are only 1 image
The default Banner does not display on the People Management User preview (#118286)
Problem
The system does not display the default Banner when viewing Employee Details/Card
Solution
Ensure the default pulls through to People Management and displays on the Employee Details and Card
Version 9.1.103 (19 July 2024)
Performance Management
Blank screen after opening an agreement (TP#118171)
Problem
The user contract does not load due to a JavaScript error if one section has no name.
Solution
Ensure that a section item always has a name, by returning "unknown" if it is null or empty.
Index panel problem (TP#118173)
Problem
"Natural" sorting of items was not implemented when perspectives were enabled.
Solution
Ensure that level 2 items are always sorted naturally.
Prevent the delete icon from wrapping to a new line (TP#117026)
Problem
The delete icon wraps to another line
Solution
Disable the wrapping of the delete icon in the overall summary section
People Management
Duplicate employees saved (TP#118162)
Problem
Duplicate users were displayed due to a bug in the back-end logic.
Solution
Ensure duplicate users are not returned when people group users are returned.
Roles are not applying to V8 pages (TP#112977)
Problem
Ruleset admin and Schema admin in V9 and V8 respectively are handled differently.
In V8, schema admin always has edit/view rights.
In V9 a Ruleset admin needs the appropriate right to view/edit.
Solution
Added a check, when coming from V9 it will only check the view/edit permissions and not if the user is an admin.
Ruleset Management
'User not active' message when attempting to log into the newly created ruleset (TP#116988)
Problem
When a new ruleset is created, when trying to log into that ruleset with the user that created it a user not active message is displayed.
The problem is that the user has no appointment and does not exist on JobProfiler.MaterializedUsers because of an error when trying to materialize the user.
This error is because the user has tried to be added before the ruleset has been created on JP which causes the context to go invalid and the user never gets created.
Solution
Changed the order of execution to first send the ruleset created event, and then send the copy identity user (which calls user created event) to reduce the chance of a race condition occurring and the user being created before the ruleset exists on JP.
Add a check to delay user creation until the ruleset is created
Translation Resource names displayed (TP#118163)
Problem
The functionality from the initial development was not working 100% and it saved the actual translated value not the key, also where it did have the key saved it displayed that instead of the value.
Solution
Made it so that when editing/adding a theme it always saves the translation key. When viewing the viewed value is the translation value. Also made it auto-scroll and focus on the relevant key when clicking on the Hand icon next to the inputs
SigniChat
Read Receipt for Messages does not display accurate time (TP#116198)
Problem
Newly Sent Message displays a Read Receipt Time that is not accurate as the user the message was sent to has not yet viewed the message
Solution
Read Receipt time is only logged when the New Message is read by the user it was sent to.
Support User
Error deleting a second support user (TP#118186)
Problem
Please note that an error is displayed after you try to delete the second line on the support users list.
Solution
Ensure the ability to delete a newly added line although it is not saved
Close the "Allow Support" modal on Save (TP#116820)
Problem
The Allow Support modal did not close after saving
Solution
Added the close trigger after saving
Close the tooltip after clicking the add button (TP#118189)
Problem
When you hover over the "Add" button on the Support Users modal, a tooltip is displayed.
After clicking on the button, the tooltip is still displaying
Solution
Add a trigger to hide the tooltip after the button has been clicked
Typo on modal heading (TP#116819)
Problem
Typo error on the Manage Support Users modal
Solution
Correct the typo
Translation for the Login Page
The login page language setting is not working (TP#118207)
Problem
Static translations did not work when the user was not signed in (ie on the login page)
Solution
Ensure that static translation works even when the user is not logged in and authenticated.
Version 9.1.102 (15 July 2024)
Performance Management
The employee cannot submit objectives (TP#118111)
Problem
A user could not submit objectives if perspectives were enabled and an Action Plan section was active on the contract.
Solution
Ensure that contract objectives can be submitted when perspectives are enabled and an action plan section is present.
Prevent the delete icon from wrapping to a new line (TP#117026)
Problem
When an employee views his agreement when there is one period in the rating phase and another is still in the objective phase, then the delete icon on the objective phase is moved to the next line to the left of the table
Solution
Fix delete icon wrapping to next line on Employee Dashboard
Ruleset Management
Translation Resources displayed in tooltip (TP#116882)
Problem
Tooltip items are not being translated.
Solution
Run translation functions when getting the list of menu items.
Content Server Password is in clear text by default (TP#116341)
Problem
Content server client secret visible by default
Solution
Changes content server client secret to have password type by default
Menus displayed incorrectly (TP#116853)
Problem
The learning portal and HR help desk translations had typos in them, which caused the translation to not work.
Solution
Fix the typos for those two translations.
'User not active' message when attempting to log into newly created ruleset (TP#116988)
Problem
When a new ruleset is created, when trying to log into that ruleset with the user that created it a user not active message is displayed. The problem is that the user has no appointment and does not exist on JobProfiler.MaterializedUsers because of an error when trying to materialize the user.
This error is because the user has tried to be added before the ruleset has been created on JP which causes the context to go invalid and the user never gets created.
Solution
Changed the order of execution to first send the ruleset created event, and then send the copy identity user (which calls user created event) to reduce the chance of a race condition occurring and the user being created before the ruleset exists on JP.
People Management
Not Authorised screen displayed when terminating an employee (TP#116658)
Problem
When terminating an employee an unauthorized screen is shown and the user can not be found within the people management dashboard. The terminated users are thus not cached and therefore the unauthorized error.
Solution
Made changes to the user's query to include all users to add in the cache as well.
This fixed both issues, on people management dashboard and with the unauthorized page.
Welcome message image on screen display (TP#118074)
Problem
Images overlap the modal
Solution
Make send confirmation email dialog preview XL
Login page
Items cannot be seen, the drop-down items are in white and the background is white (TP#116763)
Problem
Transparency does not work on drop-down items
The drop-down is still visible when there is only one language to select
Solution
Let the drop-down color be set to the same as the parent element. Otherwise, the text won't be seen
Hide the language drop-down if there is only 1 active language on the current ruleset
Version 9.1.101 (15 July 2024)
Ruleset Management
Tenant users cannot update their ID Numbers (TP#112761)
Problem
Emails were not generated when creating a new Ruleset
Solution
Ensure ruleset admins receive an email when the ruleset is created or copied
Random text on the integrations page (TP#116598)
Problem
Random text that is now visible on the Integrations page
Solution
Changed translation symbol to ensure the HTML is treated as a string
Ruleset Admin Single can see the Product setup option for some modules (TP#108347)
Problem
The permissions state that this role excludes the actual setup of modules but when this user logs in and views the product setup page, some modules do have the Setup option available
Solution
Only a ruleset admin (single or global) can activate/de-activate a Product (If they have the correct permission too - "Do actions on Product tab, excluding setup")
Then ONLY an admin of a certain product can access the Product setup of that product - they do not need to be a ruleset admin.
Also, the same rules that apply to Activating/Deactivating a product, apply to activating/de-activating SigniChat.
Performance Management
System not allowing the manager to copy scorecard on an employee (TP#116196)
Problem
When performing DB-only actions like importing data from V8 to V9 the cached entries in the system for new data is not busted automatically.
Solution
Add an API endpoint in the import service to allow the cache to be busted using an API endpoint.
This can be triggered from SQL as needed to solve the issue.
Percentage errors when submitting contracts (TP#116517)
Problem
Some scenarios occur when the items weighted over section setting are on where the L2 weights are supposed to be calculated automatically but end up being incorrect and not totaling up to 100%.
Solution
Could not replicate issue to solve, but removed the front end L2 validation when the weighted over section setting is on.
Weights are still redistributed and validated on the backend.
Error when opening PM Section Items (TP#116816)
Problem
Could not access Section Item master data.
This was due to the custom handling of the Section Item enum type that was added initially.
Solution
Removed the custom handling and relied on the existing functionality since the SectionItem enum works generically now and no custom implementation is needed.
HR Processes
Cancel Request button is not enabled (TP#116755)
Problem
Approve, decline, and cancel buttons are disabled and cannot continue
Solution
Ensure the Reason and toggle trigger the buttons
People Management
Roles are not applying to V8 pages (TP#112977)
Problem
Ruleset admin and Schema admin in V9 and V8 respectively are handled differently.
In V8 schema admin always has edit/view rights.
In V9 a Ruleset admin needs the appropriate right to view/edit.
Solution
Added a check, when coming from V9 it will only check the view/edit permissions and not if the user is an admin.
Imports
Employee data import not working (TP#116883)
Problem
User import fails without reason when importing bulk users where the dataset is made of existing and new users
Solution
Correct the filter that excludes the current users from the list of new users to create.
Ensure external ID is only used when it is not null when doing this comparison.
Competencies not copied to positions created by the import (TP#113352)
Problem
When importing individuals for a job position, the job position does not inherit the competencies from the job profile.
Solution
Add a bulk insert/update for the competencies
Version 9.1.100 (15 July 2024)
Tenant Management
Tenant users cannot update their ID Numbers (TP#112761)
When creating a new Tenant / Create from Blank or Create from R1
Do not copy the MFA settings
Always use Sent OTP via Email option
When copying from any other Ruleset (excl R1)
Copy the MFA settings as configured on the copy from ruleset
Ruleset Management
Code colours not updating (TP#116801)
Problem
When saving a theme the changes were not reflected and also gave an error.
Solution
Fixed the login page heading and description referencing the incorrect model property.
Performance Management
Values & Behaviours section weights stay red after entering them manually (TP#113304)
Problem
React weight validation is failing due to Action Plan items also being evaluated.
Solution
Exclude Action Plan from the weight validation
Version 9.1.99 (15 July 2024)
People Management
Technical: The index page makes excessive calls (TP#116776)
Problem
The People Management index page made excessive HTTP calls to retrieve the Kudos phrases and Kudos badges.
Solution
This was because the calls were made in the modals.
Moved the HTTP calls from the index page and now pass the phrases and badges through as a parameter to the relevant modals.
An error appears when Appointing an Employee (TP#116739)
Problem
Error occurred when adding a new person, due to an error in a back-end script.
Solution
Ensure that when people are added, no errors are returned, by fixing the script.
Country selector default to SA (TP#116648)
Problem
Country selector defaults to SA
Solution
The company codes will now use geolocation to determine the correct company code to select initially depending on your IP address.
If the location cannot be determined it will currently default to US. This applies to contact details and the next of kin number fields.
Able to click the Delete button for an active appointment (TP#116652)
Problem
You can click the delete button next to a person's active appointment and the confirmation modal is displayed.
There is an error when you continue because this action is not allowed.
Solution
Disable the delete button
Surname Filter - UI Improvements (TP#116242)
Problem
When a letter on the Surname filter bar (the left vertical bar with “abc”,”A”, etc) is clicked, then the page filters the People with surnames that start with that letter.
But, it is not clear enough which letter is clicked
Solution
Highlight the letter more (currently it is only bolded).
Add a round coloured circle around the letter/ highlighted background
Show above the People cards (or list):
Showing People with surnames starting with “G”. Click “abc” to clear.
UTC date is displayed for Last Login (TP#116745)
Problem
When using the card view on People Management and clicking on a person's card, a preview displayd of the person's details.
On this modal the person's last successful login date is displayed.
Please note that this date is displayed as UTC, meaning it is 2 hours behind SA time.
Please ensure that the UTC is converted to local time.
Solution
Fix more places where ToUniversalTime() is incorrectly used.
Performance Management
Values & Behaviours section weights stay red after entering them manually (TP#113304)
Problem
There was 1 issue on the react state when the sections and items are added causing it to add some sections in duplicate to the state.
This had the effect of removing incorrect items from the state and section items disappearing from the incorrect sections.
Also, this leads to the invalid weight calculation to be incorrect.
Solution
Fixed the problem with the duplicate sections being added to the state which also corrected the weight validation.
Prevent Rate button text from overflowing (TP#116231)
Problem
On certain resolutions, the text on the rating button will overflow onto a second line when the columns are too narrow.
Solution
Set it so the Rate buttons never wrap, meaning it will show a scrollbar if the resolution gets too small
Styling and alignment on rating modal (TP112866)
Problem
Rating box styling is not great when all 3 are displayed
Solution
Set minimum width and also make it wrap better when text is long
Sort order Templates (TP#116437)
Problem
There is no sorting order when creating an agreement from a Template
Solution
Added alphabetical sorting order
New Feature: Move Contracts Between Review Setups (TP#115509)
Add a new vertical pill for Move Agreements on the Bulk Actions
The From Review Setup should have
All review setups
Unallocated agreements
All linked review setups individually
The To Review Setups have the People Group as well
Search on
Person Name
Person Surname
Person Username
Performance Manager Name
Performance Manager Surname
Performance Manager Username
Position
Grey out the checkbox in the list when
The person is not part of a Custom People Group
The person has no agreement
Add tooltips (see mock-up)
When selecting the Move Agreements button, a confirmation modal opens
Please provide a reason is a required field
When the Move Agreements button is selected
Add the person on the Custom People Group of the selected To Review Setup
Move the agreement (as is) to the To Review Setup
After moving the people, show a snack message to confirm the move
Move the Bulk Action Logs last
Add the entry for the Move Agreements
Show the From and To Review Setups
Ruleset Management
Tenant users cannot update their ID Numbers (TP#112761)
Problem
The new tenant users are created using only the email address specified while creating the tenant, this means that this user has no Password or ID number assigned.
This means that the user cannot log in or change their password.
Solution
When creating a new Tenant / Create from Blank or Create from R1
Do not copy the MFA settings
Always use Sent OTP via Email option
When copying from any other Ruleset (excl R1)
Copy the MFA settings as configured on the copy from a ruleset
Competency Analysis
Terminated Employees appear on the My Team List (TP#116615)
Problem
The system displayed terminated Employees on the My Team Tab for the Manager to complete the Competency Analysis
Solution
Exclude terminated users
Master Data
Section Items: Add the ability to filter on "Type" (TP#87260)
Problem
The Section Items Master Data now contains all master data for all the PM sections, making it very difficult to work with.
Add a filter to the search bar to filter on the Section Type.
Solution
Added section type global filter for the Performance Management Section Items on Master Data
Org Chart
The Org Chart must open from the logged-in user’s point and down (TP#116400)
Problem
The system opens a new window and Displays the Org Chart from the Top Level
Solution
Display the OrgChart from the Logged in User. So the logged-in user must be the parent node.
System Access
Signify cannot log in on R1 because of no appointments and error message is incorrect (TP#116636)
Problem
Cannot log in to the system.
When resetting the password, it still does not allow the user to log in.
The error message is also incorrect.
It states that the Username and Password combination is incorrect.
Solution
A change has been made to the check if a user is active. A user is not active when:
The user has no appointment
The user's latest appointment has been terminated
The user has been disabled
The message on the standard login and external login has been updated and will now display.
SigniChat
Failed Group Chat Creation Makes Group Chat Creation Interface Persistent when Chat module is opened (TP#116201)
Problem
When New Group Creation fails it persistently displays the Group Creation Screen when clicking on the Chat Icon.
Solution
When the group creation fails, reset the display to show the chats and not the creation page
Sent Attachments do not Automatically Refresh the Chat (TP#116183)
Problem
When Attachments are sent, the message does not refresh automatically on the other user's side.
Manual Refresh is required to trigger the message sent (opening and closing chat again or sending another message will manually trigger).
Solution
When Attachments are sent, the message refreshes automatically on the other user's side.
The SigniChat modal cuts off
Problem
The modal cuts off at the top
Solution
Gave SigniChat component a smaller fixed height
All Services
Improve error messages (TP#113747)
Problem
There are a lot of generic error messages across domains
Solution
Handle domain exception with a specific code and the exception itself returns the key for the translation of the exception.
When the code and key are available in the exception it should be used to display the error otherwise it shows the generic error.
HR Processes
New Feature: Ability to cancel a submitted request (TP#116470)
Problem
When submitting an HR Request, there is no ability to Cancel it
Solution
When a request is submitted and the request is still in the My Open Requests section, this request should have the functionality to be cancelled
When the Cancel Request button has been selected, a cancel confirmation should display where you must add the reason
When the request has been cancelled, it moves to Historical Request
Instead of submitting, it should show cancelled with the date and time
Translations should be added for the cancel functionality
Search is applicable only to the 1st tab (TP#116448)
Problem
When you are on the HR Processes tab, and you search, it seems it searches on exports which is the first tab
Solution
Focus the global search on the current tab
New Functionality: Support User
Add a Support User for specific Rulesets (TP#115605)
Support Users can be added and access is granted to All Rulesets or specific rulesets
When the Access to all Rulesets has been selected, the dropdown is disabled
Use the select2 - Multi-select
People can be removed
When the modal is saved, and the user clicks on the + Support User button again, the previously saved users should be displayed and can be edited
Enable Support for all Support Users linked to the Ruleset, so that the support user can log in on behalf of this person (TP#115606)
Under the Actions menu, a new option should be available to Allow Support for the person whose profile is viewed
When selected, a modal opens where the date is to be specified
Default is 2 days from today
User can extend the date
When the date is reached, the Support User cannot login on behalf anymore
See when a Support User logged in (TP#115607)
When a support user logs in, it should be displayed on the person's My Sign-ins
Support and the Support User's email address should be shown
Log into a Ruleset on behalf of a person (TP#115611)
A separate URL for the support login is required
When clicking on this URL, the user needs to add the Username of the on behalf person and the Reason for support
These are required fields
When clicking the Microsoft login, the email address is verified against the allowed support users (Technical part)
An option to go to the normal login page of this Ruleset needs to be available
When selected, the user is navigated to the login page
Only MS Accounts are allowed
The API User's password should not expire (TP#115664)
In the standard login method change the check that determines if a user is active to ignore password expiry and appointment information if the user type is either API or Support
When creating a Ruleset, add the Signify Support User as well
Version 9.1.98 (1 July 2024)
Ruleset Setup | Dashboard Widgets
Dashboard Widget Translations (#114923)
Problem
The translation button overlapped the widget card
Solution
Move the translation button underneath the Name
People Management
Ensure that when saving a new user transgression, that the form is properly validated (#115155)
Problem
The validation error message did not display correctly as in other places in the system
Solution
Ensure that validation error messages work the same as other places in the system
Performance Management
The popover for employee and manager comments is not displayed during the check-in phase (#116468)
Problem
When the manager views the Check-in employee comment, they cannot see the cut-off text
Solution
The relevant comment is displayed on the contract correctly (Objective Settings comment, Last Check In Comment, or Rating Comment)
The popover is displayed for that comment when the comment exceeds the standard textbox display length (80 characters)
If the comment is shorter no popover displays
When clicking on the KPI item the relevant comments are displayed (With the exception being Check-Ins see below)
The Objective Settings comments and the historical check-ins should be displayed for check-ins. The actual comment inputs are empty
Currently, during Check-Ins the user can only see the opposite person's comments on the contract display (via the PopOver) not on the modal
The modal only shows the historical comments for that user (Employee or Manager) and the Objective Settings comments (if any)
When selecting rating the entire area is not clickable (#116414)
Problem
When doing a rating, the entire row is not clickable
Solution
Ensure the entire row is clickable
Copy my ratings to the final rating not working when impersonating (#116412)
Problem
When impersonating a person, the copy of the Manager's rating did not work
Solution
Resolved the issue by allowing a person who impersonated a manager to copy the ratings
Version 9.1.97 (1 July 2024)
Performance Management
PM dashboard - Resolve the large amount of unnecessary HTTP requests that are made on the dashboard (#116126)
Problem
Unnecessary HTTP requests are made on the dashboard
Solution
Move templates pull for review setup to dashboard load and send data to the modals.
Move the user contract previous and subs load to only happen when the modal is opened.
System Access
Updates to the Forget Password Login (#115694)
1. After forgot password has been selected, the same password is used as the previous one:
Change the message to:
”This Password has been used already and you cannot reuse Passwords. Please select a different Password.”
2. When the password and confirmation password do not match, show the text in white and bold instead of red.
3. Show a masked email address in the message to which the OTP was sent.
Languages
System menu Translations (#114922)
Change the menu heading text box to read-only
Store the translation key for the menu in the DB
Update ProductURL with the name as the translation key
Display the translation for the key if found.
Add a button next to the heading text box “Translate”
When clicking the button opens a new tab and loads the language tab for the current active culture e.g. en-Us
On Languages| Culture | Global
Add a new section called System Menu with a field for each system menu.
If the user changes the translation for the system menu where the translation is used, it will reflect that value.
The system menu cache will need to be busted when updating the translations of the system menu section.
Ruleset Management
Additional services access secret error occurred (TP#116387)
Add Tenant admin and ruleset admin global role to the CreateLegacyIntegrationClient request
Login | Translations
Add a new Languages dropdown on the login page (TP#114924)
Add a drop-down in the top right corner of the page with the published languages for the current theme’s login
The preferred language forms the culture cookie if available must be set
The list of active languages must be cached per Ruleset.
After logging in, see if the user selected a preferred language (that would have been stored in the database). If so, change the language to this value and update the cookie accordingly.
On the home controller before redirecting into the module confirm that the preferred language in the cookie is the same as the session cache of user details
Version 9.1.96 (18 June 2024)
Performance Management
Fix impersonation link resulting in a 404 not found (#116317)
Problem
Impersonation led to a 404 - not found page.
Solution
Ensure impersonation does not lead to a 404 not found page.
Version 9.1.95 (17 June 2024)
Master Data
Translation resources displayed on the selection modal (#116061)
Problem
Translation resources are shown on the master data modal
Solution
The name of the masterData.json file is case-sensitive on production and thus the translation could not be found.
Version 9.1.94 (17 June 2024)
Performance Management
Translation resource name displayed on Confirm button (#115784)
Problem
Incorrect translation resource used.
Solution
Use the correct translation resource.
Incorrect Styling when employee views agreements when Manager column is visible (#115869)
Problem
Misaligned columns when employee views contract during Final Rating and setting to show final ratings after manager rating is on.
Solution
Fixed the issue where if no rating is yet available it did not print anything when the user views the contract.
For a manager, it displays the rate button.
Display an empty cell for an employee if no rating yet.
Incorrect tooltip on Check-Ins button (#113994)
Problem
When the check-ins phase has expired (passed the end date) a 'Completed' tooltip is shown.
Solution
Changed the tooltip to show the Phase not active anymore tooltip.
Seems at one point it used to display Phase Completed but that translation has been reused elsewhere and modified.
Ruleset Management
Ruleset cannot be created (#89623)
Problem
Cannot create a new Ruleset
Solution
Fix ruleset creation bug, which was caused due to a duplicate API user being created
Save button on the Integrations page is unresponsive (#116252)
Problem
Could not click on the footer buttons as they disabled.
Solution
Ensure that the buttons are clickable
Content Management
Cannot upload document (#116209)
Problem
The problem with the upload was caused by the .PDF extension that has been typed in capital letters rather than the standard lowercase .pdf. This caused the content management service to reject the file with the reason invalid file type.
Solution
Allow files to be uploaded regardless of the casing of their file types as long as it is in the supported list. e.g. .PDF and .pdf will now be allowed as uploads.
People Management
Performance Improvements on People Management (#116186)
Problem
When the all-people group is being used, the system is very slow.
Solution
A change to the calculation of people groups and how it is returned to the people dashboard has been made
HR Processes
Approved requests do not move to historic requests (#116204)
Problem
A completed request does not move to Historical Requests
Solution
Ensure the last person's approval trigger the request as complete and move the request to the Historical Requests
Version 9.1.93 (17 June 2024)
Performance Management
Check-in comment does not immediately display on the table after adding/updating (#116059)
Problem
When adding/updating a check-in comment the comment does not reflect immediately on the contract and needs to be refreshed.
Solution
Update contract check in item state after Comment saved to make it refresh the contract item.
Ruleset Management | Payroll Integrations
Changed logic regarding the display load more button (#115193)
Problem
The Load More link is always displayed
Solution
Changed the logic to show when more than 10 records are available
People Management
The "Link to Payroll Connector" field is displayed when there are no connectors (#115674)
Problem
The Link to Payroll Connector field should not be available when there are no Payroll Connectors configured
Solution
Hide the field when there are no Payroll Connectors
HR Processes
Various fixes include:
Cannot disable the Line Manager Reporting Line
Make sure all Reporting Lines are shown on a person's profile
Standardise validation messages
Styling fixes
Duplicate Reporting Lines fixed
Correct the dropdown field that closes the modal
Fix the sync call for the reporting line sync
Version 9.1.92 (17 June 2024)
Performance Management
Review Years ordering (#113799)
Add the functionality to order the Review Years.
On the Performance Management Dashboard, the order of the Review Years will also display
Setting to hide the Manager Rating (#114329)
Add a new setting that will allow the Manager Rating column to be hidden
On the agreement, the Manager Rating column is not available
Section weighting is not clear when in rating phase (#115581)
Problem
It is not clear what the section weights are in the ratings phase
Solution
Make the Section Weights colour the same as the Perspective and KPA colours
Objective Setting Comments to be available on the Check-Ins (#115724)
Problem
The Objective Setting Comments are not available when doing the Check-ins
Solution
Make the modal bigger
Add the Objective Setting Comments to the Check-Ins
Employees cannot submit Objectives (#116010)
Problem
Error when an employee wants to submit the Objective Setting
Solution
Use reporting line service when checking if a user has a PM manager, instead of fields in the materialized table
People Management
Send Welcome Notifications in bulk (#115649)
Problem
As a people administrator, a feature is required to send welcome emails to multiple users
Solution
Add an action to the quick actions of the people management dashboard
The option opens a modal
Send bulk welcome emails
Add an input to send to everyone who started after a specific date
Add a switch that is active by default, only people who have not received a notification yet
Button Send
When clicked the account service will retrieve a list of users with appointment start dates after the selected date and if they have received a notification
A notification is generated for each of the users that meets the requirement
When the notification is generated update the WelcomeNotificationSentDate for the user
The option is only visible to the people management administrator
Main Dashboard
Line Manager not showing on the My Colleagues widget (#115885)
Problem
The widget displays that the user does not have a manager
Solution
When it retrieves the information for the MyColleagues widget it returns:
User's Line Manager
User's subordinates where the user is Line Manager
User's details where user has any manager
The problem comes in when the user's PM and LM differ and when selecting the user's details it returns both PM and LM but the PM is the first record
A fix in code review for this to filter the 3rd step to only return user details where the user has Line Manager which should resolve this.
System Access
Add functionality to focus on the Multi-factor Confirmation Modals (#115695)
Problem
The user should click in the field before typing
Solution
Focus is set in the field and the user can start typing immediately
New Functionality
Main Dashboard: Add a link to view OrgChart (#115103)
A new accordion under the Ruleset Setup | Integrations tab has been added to add the OrgChart URL
When the field is empty, the View As Chart button should not be available on the Span of Control / More Insights page
On the Main Dashboard, when you select More Insights, the View as Chart button will be enabled
Translations are added to rename or translate the button
HR Processes (with BOT) (#101129)
Functionality has been created to integrate with the SigniBot and enable adding a request on HR Processes.
Process Flows
Navigation: People Management | Product Setup | HR Processes
Process flows are added and used with the bot to identify which process to add.
Approval levels are added for the process flow - reporting line or position-type levels
SigniBot, Main Dashboard and Inbox
When adding the request using the bot, a request is created in the User's Inbox and accessed through the HR Processes Widget on the Main Dashboard.
SigniBot
Main Dashboard
Inbox
SigniChat (#74529)
Functionality has been added to send and receive messages via SigniChat.
You can send individual or group messages if you can access People Groups.
The chat can be enabled per product.
Navigation: Ruleset Setup | Product Setup
When SigniChat is enabled for a Product, it will be visible on the bottom-right of the screen:
When the New Chat option is selected, you select a person to chat with.
When you have People Group Access, you can create Group Chats
Any member can send a message
You can view the member
You can deactivate the chat
PaySpace API Integration (#104974)
Details coming soon
Version 9.1.91 (3 June 2024)
People Management
Use active appointments when showing My Department users (#103485)
Problem
The calls fail when retrieving department users and the logged-in user has multiple appointment records
Solution
Ensured that only the logged-in user's active appointment was retrieved when retrieving department users
Upload By should be Name and Surname, not Username (#115668)
Problem
When uploading documents, the Uploaded By shows the person's Username
Solution
Added the person's Name & Surname instead of the Username in the Upload By column
Job Profiler
Changes to export of job profiles via the API with master data names (#115825)
Problem
The Job Profiles Export via the API did not include Occupational Level
Solution
Include the Occupational Level Master Data name in the API
Version 9.1.90 (3 June 2024)
Job Profiler
Publish Job Profiles after employee data import (#115740)
Problem
In some instances when importing users, the new job profiles were not published.
Solution
Ensure that when importing, new job profiles are automatically published.
Help Files
Implement pages that have not yet been added (#115698)
Problem
Some pages did not have the Help Files yet
Solution
Implement Help Files on all pages
Performance Management
Copy Manager Ratings to the Final Ratings column (#111929)
New functionality was added to copy the Manager Rating to the Final Ratings column.
Select the Copy my ratings to the Final Rating button
When confirming the message, the Final Rating column will be populated with the same score as the Manager Rating column. The ratings can be changed if required.
Bulk Actions delete search not working (#100782)
Problem
The Search button on Bulk Delete Agreements stops working if you go to Create and then back to the delete page.
Solution
Search control was getting recreated and the click event was lost.
Changed slightly to apply different classes to the button depending on the Delete / Create page and then bind the search event to both relevant classes.
Show more characters on the comments pop-up (#115651)
Problem
Sometimes popovers did not display for comments (manager and user, but specifically manager in this case.).
This happened because the text shown in the table with ellipses used the textBoxMaxDisplay, which is 80 characters.
But the popover which was then used, used the textAreaMaxDisplay, which is 200 characters.
This meant that for any comment between 80 and 200 characters, the popover will not display and the text in the table is capped at 80 characters, so the user cannot see what the full comment is - if between that character range.
Solution
Make sure that the popover also uses the textBoxMaxDisplay, when deciding whether to display.
Version 9.1.89 (3 June 2024)
Help Files
Oversized images overlap outside the Help File Pop-up modal (#115092)
Problem
The system displays the Help file model with the Oversized Image overlapping on the outside
Solution
Auto Fit to size the image inside the HTML Editor based on the Limited size of the Pop-up modal
Performance Management
Make the rating button more intuitive (#111934)
Problem
It is not obvious when looking at the contract in the rating phase how to start the rating
Solution
Instead of the Rating Icon, a button has been added in the rating column
After the KPI has been rated, the score is displayed and a change button is added underneath the score
The change button is hidden when the ratings have been submitted
Add the invalid weights to the left menu item as well (#112426)
Problem
It isn't easy to see where items do not add to 100%
Solution
When a section weight does not have KPA's or KPI's or when the Perspective and/or KPA and/or KPI does not sum to 100
Keep the flashing % on the right, but also indicate this on the left in the scroll spy menu
Extend the message:
Item weights must sum to 100. All item weights that do not sum to 100 will be indicated on the left menu.
Continue to rate without submitting when the other party has not submitted the objectives (#111933)
Problem
When a manager or person has completed the Objective Setting, the ratings cannot be completed without the other party submitting the objectives first
Solution
Enable the person who has submitted the objectives, to continue with the ratings
The ratings cannot be submitted before the other party has submitted the objectives first
Report Builder
Unable to add value in a sub report (#115591)
Problem
The problem was a change made on the nav links that stopped this pivot value dropdown from working.
Solution
Resolved the issue by making the classes it uses unique so it does not clash with the nav-links.
People Management
Labour Relations: Disciplinary Actions(#105100)
New functionality is available to add a transgression on Labour Relations.
People Management | Product Setup
To enable the Disciplinary Actions menu, this needs to be activated under the People Management settings
Master Data
Master Data needs to be added for
Disciplinary Action Outcomes
Disciplinary Transgressions
Default Master Data is available for both
People Management | Edit Profile
Under Labour Relations | Disciplinary Actions
A new Transgression can be added.
Documents can be viewed and uploaded
Version 9.1.88 (20 May 2024)
Notifications
Prevent overriding notifications data that has changed on other rulesets (#115416)
Problem
The notifications have been restored to default and not showing the custom information
Solution
The ruleset propagation of template content from R1 has been disabled
Script correction for the syncing of content when it has not changed
Imports
Cannot import PM Template (#115150)
Problem
The current problem is that this causes the message to only show the part after the : and not the whole message.
Solution
The change should allow the error messages for the template import to show in full when the template name has a : in it.
Performance Management
No KPIs are shown in the list when Select from library (#115120)
Problem
No KPIs are shown in the list when Select from library
Solution
Changed the ordering of master data items when using cursor-based paging to use the display order when ordering items rather than the primary key
Version 9.1.87 (20 May 2024)
PaySpace Integration
View people linked to a Payroll connector (#112547)
When people have been linked to a Payroll Connector, a menu is available to see the linked people
System to push the data to PaySpace (#113468)
Added the functionality to push all data for users to PaySpace
Competency Analysis
Incorrect tooltip when rating as Manager (#112812)
Problem
Incorrect message displayed for Manager when rating
Solution
Corrected the message to display as Assess Person
An inactive proficiency level is displayed and can be selected when Rating (#112808)
Problem
An inactive proficiency level is displayed on the ratings
Solution
When the proficiency level is inactive, it does not display anymore
Able to rate on levels that have not been mapped to proficiency (#112809)
Problem
Managers / Employees can rate competency on all proficiency levels even if the level has not been mapped.
Solution
Changed so that one can rate only on proficiency levels that have been mapped to the competency
Able to select Inactive competency as Job Profile Requirement (#112803)
Problem
Able to link inactive competency as a Job Profile requirement
Solution
Exclude the ability to link inactive competency to Job Profile as a requirement
Add detail to Category when collapsed after rating (#112814)
Problem
After completing all the ratings for the competencies (with some not meeting required) the exclamation mark icon still shows but there is no face value indication of what the issue is
Only on hovering over the icon is additional information displayed
Solution
Add subtext to indicate that some requirements are not met similar to the tooltip
Make the Graph fit on the pop-up window without the scroll functionality (#108652)
Problem
The graph opens with the scrollbar
Solution
Open the graph when clicking on it
Add a text to show "Additional Competency" (#108654)
Problem
When a user Adds a Competency front-end, the system does not indicate that it is an Additional Competency from the Category list of Competencies
Solution
Added text in bracket next to the Competency Title (Additional)
Able to set Job Profiler competency required level to unmapped proficiency level (#112811)
Problem
Able to set a Required Proficiency Level for Job Competency Requirement that is not mapped.
Solution
Disable the ability to select Proficiency Levels that have been mapped to Competency
Organisational Structure
Add the treeview to a white section (#113555)
Problem
The treeview is not on a white background
Solution
Changed the background for the treeview
Incorrect Line Manager details are displayed when moving Positions (#113982)
Problem
The system displays the incorrect Line Manager Detail. The Manager's details are a duplicate of the user's information.
Solution
Display the Correct details of the Line Manager as per the Reporting Lines
The system displays an Incorrect Vacancy count on the Org Node (#113988)
Problem
On the move positions screen within the org structure, when "show vacant" is enabled job profiles that are unpublished are included.
Solution
Only include where job profiles are published
People Management
The 'Edit’ tooltip is not displayed when hovering over Custom people groups (#112966)
Problem
No tooltip is displayed when hovering over a custom people group.
Solution
Display a tooltip when hovering over a custom people group, which says "Edit".
Remove Time Component from search (#110516)
Problem
Date pickers on PM search had time as well.
Solution
Removed the time section in the pickers
Filter not working correctly on the Dashboard (#113483)
The search term is saved in local storage for people management.
This means that if you navigate away from this page and return later it will reapply the search term from local storage of the browser.
When clearing the filter, the search is cleared when navigating away from the dashboard and coming back.
Show hand cursor when hovering over the delete icon (#112964)
Problem
Normal mouse is shown when hovering over the delete icon.
Solution
Show the hand cursor when hovering over the delete icon.
Profile Banner not displaying correctly with a long username (#113491)
Problem
Profile Banner not displaying correctly with a long username
Solution
Changed margins and text size on the profile banner
The administrator can see "Additional Self-Service Items" for other employees (#111698)
Problem
When a people administrator views a subordinate's people profile, the "Additional Self Service" link is displayed.
Solution
Display option only for the logged-in user
Correct the tooltips on the pills of the Dashboard (#114636)
Problem
When hovering over the button group, the tooltips are incorrect.
Solution
Update the tooltips to display the correct text.
Load More option should be centered on the page instead of on the right (#113515)
Problem
The Load More option should be centered on the page instead of on the right.
The button should have an icon and a tooltip
Solution
Added the button in the center and changed to a floating button with a chevron-down icon and a "Load more" tooltip
Error when terminating a person from the dashboard without filling in the fields (#113006)
Problem
On the termination modal the user was not notified when the form is not completed
Solution
Added snack messages to indicate which controls are empty
Validation messages are now being displayed when you do not select a last day or a reason
Search own user (#114232)
Problem
Logged-in users with the Manage own user access role must be able to view their profile on the people management dashboard.
Solution
Added functionality to show the user's profile if the user can manage their user access
Tenant Management
Make the Expiry Date clickable so that it can be updated (#114490)
Problem
Make the Expiry Date clickable in the summary.
Solution
Added an icon next to the expiry date that opens the update expiry date modal.
Icon to be made available from Tenant List which will allow Tenant Admin to update Expiry Date without many clicks (#113443)
Problem
Icon to be made available from Tenant List which will allow Tenant Admin to update Expiry Date.
Solution
Added icon next to subscription expiry date that allows user to update the expiry date
Add a filter option for Expiry Date (#114493)
Problem
Add a filter option for the Subscription Expiry Date.
When a number is inserted, for example, 30 days, show all records with expiry dates within the next 30 days (today + 30)
Solution
Implemented a numeric filter to specify within how many days the subscription expiry date must be.
Make Subscription tab default (#114546)
Problem
Currently, the Details tab is the default when editing a tenant.
Change this so that the Subscription tab is the default.
Solution
Made the Subscriptions tab the default when editing a tenant
Clicking the reset button on the filter panel does not clear set filtering (#114603)
Problem
Reset button does nothing.
Solution
Added functionality to clear search criteria and submit form on reset button.
Add an Expiry tag on subscriptions that are one month within their expiry date (#113442)
Problem
Any Tenant whose expiry date is within a month should show an Expiry indicator
Solution
Highlight the expiry date with a tooltip for Expiring Soon
Job Profiler
Duplicated Org Node appears when linking a Job Position to an Org (#112171)
Problem
Duplicate org nodes displayed on the org treeview on models
Solution
Remove duplicates from the org tree view on modals.
Not clear on which Position Competency Requirement is being added (#112806)
Problem
On the Position Requirements screen it is not visible on which Position a requirement is added, unless navigating back to the General tab
Solution
Add the Job Title and the Position Title to the breadcrumbs in the header
Show the Job Title on hover when it differs from the Position Title (#114207)
Problem
When a position differs from the job, then this is not shown
Solution
Show the job title on hover on the My Competencies and My Team tabs
Able to add already added competency to user profile (#112816)
Problem
Able to add competency to the user’s profile that has already been added
Solution
Should only be able to add competencies that are not yet being measured/assessed
Ruleset Setup
System Access: Spelling error on tooltip (#110704)
Problem
When hovering over the 'Reset Access Secret used by Additional Services' button, the text tooltip displayed contains a spelling error.
Solution
Correction of error
Validation messages on required fields to be tweaked (#102780)
Problem
Please separate the words on the field's name on the validation messages underneath the boxes, i.e. 'ContentServerName' should be 'Content Server Name'
Solution
Amend the spacing between the words
Themes: Change helper text when uploading images (#114440)
Problem
Change helper text on the theme create/edit page for the images.
Solution
Changed the image size of each helper text underneath the inputs.
Changed the size of the login page logo to 130px and removed the bottom margin
The "I acknowledge" switch does not activate when you click the label (#104540)
Problem
The toggle button on the confirmation modal cannot be switched when you click on the label
Solution
Make the label clickable
Remove the tooltip when hovering over a ruleset record (#114442)
Problem
We do not have the "Manage" tooltip anywhere else in the system.
Please remove the tooltip.
Solution
Removed the "Manage" tooltip from the ruleset setup page.
Dashboard Widgets: When changing the layout of the dashboard, and I click preview, the layout is saved (#112819)
Problem
When only previewing the new layout, the layout is saved
Solution
Remove the preview button
Add default culture en-UK (#114371)
Problem
Currently, the date displayed in the V8 system is American and this causes the date picker not to work
Solution
Add culture en-UK as default to the system for dates to show 'correctly'.
Pinned System Menu collapses when clicking on the People Management item on the menu (#100810)
Problem
When the system menu is pinned and clicking on the People Management menu, the main menu is collapsed
Solution
Keep the menu pinned
Remove the 'back' button on the first page (#110572)
Problem
The Back button on the first page is not required
Solution
Remove the button on the Ruleset Setup list page
The system displays a blank Disclaimer screen (#111274)
Problem
Text not showing
Solution
Added an option for the textbox and the text to change color based on the "dark" option for the theme.
This ensures the text will always be visible.
Default Badges did not copy when the new Tenant and Ruleset was created (#114454)
Problem
When creating a new tenant, the default badges are not created.
Also found an issue when creating only a new ruleset.
Solution
Implemented changes to create default badges when a new tenant is created and a new ruleset is created.
Performance Management
Button Styling (#114654)
Problem
The standard for all buttons is that the text should be in uppercase.
This was not the case.
Solution
Changed all button text to uppercase
No plural for "Objective Setting" in Translations (#107577)
Problem
There was no plural translation for the Objective Setting.
Solution
Added the plural migration.
Change the Target Audience button to a secondary button (#114671)
Problem
The View Target Audience button should be a secondary button
Solution
Changed the styling of the button
Display the Review Setup description when you hover over the Setup Name (#113686)
Problem
The description fields of Review Setups can currently only be seen by administrators who have access to the Review Setups admin pages.
The description field can be used to provide valuable information about the setup, which can help managers as well.
Solution
Added the Review Setup description on a tooltip when hovering over the name
There is no Cancel or Back button when adding a new Review Setup (#114659)
Problem
On performance management new review setup there is no cancel or back button
Solution
Added the back button in the header and cancel in the footer
Modal headings should all be in caps (#114655)
Problem
All Performance modal headings should be in uppercase.
Solution
Added class to all modals to change to uppercase
Able to add an empty Perspective (#113017)
Problem
An empty perspective could be added.
Solution
Added validation to prevent this.
Admin – Review Setups & Review Years: Add the table in a white card (#114660)
Problem
Product setup for performance management tables was not in the cards.
Solution
Added the tables to cards
Add a tooltip on the KPA Document icon (#108209)
Problem
There is no tooltip shown when you hover over the documents icon next to KPA
Solution
Added tooltips for viewing document icons
Master Data
Move buttons to the footer (#114564)
Problem
Move the Primary and Secondary buttons to the footer
Solution
Moved the add and setup buttons to the footer when editing the master data
Cannot edit the item after reordering (#113818)
Problem
When you are in any Master Data category, if you sort the items in the list, you will not be able to edit any item in the list, it will always display the "Add New Item" modal until you reload the page.
Solution
Fixed the URL after sorting items
Performance Section Items: Remove the last occurrence of "Item" from the title (#109286)
Problem
When adding a new PM Section Item, the heading on the modal shows: "Add new Performance Management Section Item Item".
Solution
If a PM Section Item is added, remove the last occurrence of "Item" from the modal heading
Performance Management Section Items: Add the ability to filter on "Type" (#87260)
Problem
The Section Items Master Data now contains all master data for all the PM sections making it very difficult to work with.
Add a filter to the search bar where you can filter on the Section Type.
Solution
Added section type global filter for the Performance Management Section Items on Master Data
Make the heading all CAPS and remove the icon on the Save button (#114560)
Problem
Make the Heading all CAPS
Remove the icon on the save button
Solution
Made the headings all caps and removed the icon on the save button, on both the edit and delete modal, of the master data page
Performance Management Section Items: Add the "Save add new" option to Section Items Master Data (#87266)
Problem
No "Save add new" option is available for the Section Items Master Data.
Solution
Implemented a "Save add new" button to the add modal of all master data items.
Notifications
Test Email: People List has no sample data (#110569)
Problem
The PeoplesList field placeholder has no sample data.
Solution
Corrected the code to show the sample data on the email
Multiple emails were sent out when Cancel was clicked before going ahead and resetting the password (#111460)
Problem
Multiple click handlers are attached to the send email button each time modal is open.
Solution
Cleared handlers before attaching a new one.
Imports
People Management Import: Error when importing a string resembling an invalid email address (#113367)
Problem
Data in the import file is not properly trimmed before being imported.
Solution
Trim data before import.
Main Dashboard
Keep uploaded images (#113512)
Problem
When uploading your own images and unselecting them, then they cannot be selected the next time you want to change banners.
Solution
Keep all images that have been uploaded.
My Colleagues: When clicking on a person to view the summary, the surname is not displayed (#113547)
Problem
When viewing the same summary on the Main Dashboard, the Surname is excluded.
Solution
Add the Surname on the Dashboard view
Auto-Doc
Button styling on the Document Creation page (#114688)
Problem
Please standardise the button styling - there should be a space between the '+' and the 'Template' on the button.
Solution
Added spacing between the icon and the text
Inbox
Add 2 additional tabs for Training & Leave Requests (#110847)
Problem
2 additional tabs are required for Leave and Training requests for Managers to access and approve the requests.
Solution
Tab 1: Training Requests
When selected, open the V8 page in the frame
Tab 2: Leave Requests
When selected, open the V8 page in the frame
People Groups
Improve wording of info text on Grouped Conditions (#113013)
Problem
The Grouped Conditions information message is outdated
Solution
All of the following conditions must be met before a person will be included in the People Group, for example:
If only a Job Title has been added, then all the people appointed in that Job Title will form part of the People Group.
If only an Organisational Unit has been selected, only people appointed in that Organisational Unit will form part of the People Group.
If only a Reporting Line Type has been selected, only subordinates reporting to a specified manager for the Reporting Line Type will form part of the People Group.
If a combination of the above has been selected, people will be included when they are:
Appointed in the Job Title, AND who are also
Appointed in the Organisational Unit, AND who are also
Reporting to the specified manager for the Reporting Line Type
Version 9.1.86 (6 May 2024)
Performance Management
Employees duplicating on the list when creating agreements in bulk (#114715)
Problem
When using the Bulk Action on Performance Management, a record is created per appointment
Solution
Add a check to ensure that only the latest appointment's record is shown in the list
Rework calculations to allow periods to be skipped (#106483)
Add a Setting to enable/disable excluding review periods
Remove the eye icon on the gauge and add an on-click to the gauge
When hovering over the gauge, a Review Period can be excluded/included
When clicking on the gauge itself, the agreement is opened
Add a click in the gauge only when an agreement exists
An agreement can only be accessed in the Overall Summary if the person already has an agreement
Ruleset Setup | System Menu
Add My Worklist to the System Menu to access the V8 page (#112943)
The My Worklist menu item is now available
Version 9.1.85 (6 May 2024)
Performance Management
Dashboard heading display incorrect (#114618)
Corrected product translation when using V8 to V9 PM integration
Goals import fails due to case-sensitive matches (#114714)
Problem
A case-sensitive check is done on the username
Solution
Change the import to make a case-insensitive check instead
Unable to submit the Performance Agreement (#114662)
Problem
The submit button is locked without a reason.
Solution
Add the reason to the message when the Ratings have already been approved and the user may no longer submit to clarify
Version 9.1.84 (6 May 2024)
Performance Management
Items not copied during ruleset creation (#114306)
Problem
The issue was caused by section items linked to a template being deleted and trying to create a new ruleset from the ruleset with the deleted but linked section items.
Solution
A change has been made to the PM copy process during ruleset creation.
It will now try to copy the values that do exist and if it no longer exists as a section item it will be skipped.
Impersonation did not allow to copy from another person's agreement (#114460)
Problem
When using the impersonation feature on Performance Management, the functionality to copy an agreement from one person to another was not available
Solution
Ensure that when impersonating, you are viewing the contracts from the team members of the person you are impersonating and NOT the team members of the logged-in user (the user currently impersonating).
Add an Activities field on KPIs (#111352)
A new field has been added when adding a KPI named Activities.
This field is available:
When adding a KPI
On the Agreement when hovering over the label
When adding a KPI as Master Data
When creating a template
When creating a report
Help Files
Implementing Help File pages per product (#77211)
Help Files are available per product.
Each Administrator for a product can add pages to the ruleset.
Version 9.1.83 (22 April 2024)
Performance Management
Inactive library items shows on lists when adding (#114018)
Problem
When the library items are inactive in Master Data, they are shown in the lists when adding a Perspective, KPA or KPI
Solution
Do not show the inactive library items - exclude them from the lists
Report Builder
Informational message not translated when landing on the Data Dictionary tab (#111689)
Problem
When accessing the Data Dictionary tab, the information message is not translated
Solution
Add translation for the information message to display
Error when re-importing previously deleted Action Plan Report (#111717)
Problem
If you delete a report and try to import that same report, an error will be thrown, because when it searched for the existing report it did not consider the Deleted flag.
Solution
When retrieving the existing report, check for Deleted and not Deleted.
This allows the user to import a report when it was previously deleted. If it was deleted, it makes the report active again after the import.
Ruleset Setup | System Menu
Add the Moderation menu item (#112916)
Problem
The Moderation menu item is not available in V9
Solution
Add the menu item to be selected from the System Menu tab
Access the menu and content from the Main Menu
Version 9.1.82 (12 April 2024)
People Management
Enable viewing of terminated people (#114144)
Problem
Unable to access a terminated person's profile
Solution
When accessing terminated users, it will now first use the people linked in the cached people group and if the user is not found, generate the people group as uncached for all people.
This should then find all the people you will currently see when applying the all filter on the grid view of the people management dashboard.
Performance Management: Import
Correct the mapping of weights (#113327)
Problem
All section items are imported with the section weight and not the item weight.
Solution
Update the mapping in the value and behaviour and competencies imports to use the section item weight as supplied by the import sheet.
Version 9.1.81 (12 April 2024)
Performance Management: Import
Add employee filter on section items (#106742)
Add filter on items to ensure items are populated for the people it is linked to.
LMS Portal: Discussion Forum
Expert assignment cannot be deleted (#114005)
Problem
The system does not allow an Admin to Delete Expert's Assignments.
Solution
Resolved issue to allow the admin to delete an entry
Introduced COLLATE DATABASE_DEFAULT statement on temp table's column to fix SQL exception caused by Collation differences from Server and Database.
Version 9.1.80 (12 April 2024)
Performance Management Imports
Add a check for Perspectives when importing Goals (#113327)
A check has been added that will validate if perspectives are enabled. If perspectives are set inactive and the import includes perspective data then the record will be invalid.
Change authorisation to allow anonymous for adhoc completion of imports.
Correct description filter in values and behaviours.
Refactor goals import and simplify validation.
Corrected the comment issue when importing the Key Competencies (#114085)
Correct import of comments when creating a new section item. Update display order of section items based on current max order.
Corrected creation of section items with the same name but different descriptions and updated comments.
All KC library items are imported when the agreement has not been created yet (#114088)
Problem
When you import Key competencies for an employee on a year/setup where their agreement has not been started yet, then all the KC library items will be added to the agreement , including the once that you are importing , to the new agreement.
Solution
The default Key Competency items have been removed when creating a blank contract.
Implement Competency Import (#111857)
Create and implement the Competency Import.
Correct sample file name and import folder, update translation used in behaviours and competency imports.
Terminated Managers should prevent a user to submit objectives or ratings (#113183)
Problem
Employees of a manager can still submit objectives and ratings after he is terminated.
Also, If that manager was logged in at the time of his termination, he will still be able to work on the system normally untill he logs out.
Solution
Bust reporting line cache when updating appointment, adding appointment and when terminating.
Ruleset Management
Add system menu for Recruitment (#113493)
Menu item for Advertised Positions are added
Administration menu made available as well
Make People Group modal larger (#113850)
Modal is made larger so that the text that does not flow over
People Management
When editing appointment org unit, do not pre-load the previous org unit on the org treeview (#114014)
Problem
Cannot select another organisational unit other than the current node the employee is on.
This view should display all org units in the system to allow me to transfer the employee.
Solution
Show all organisational units when updating the organisational unit for a person.
Job Profiler Import (#114041)
Trim org names and codes when importing org units and modify fncCalculateOrgPath so that it displays '&' characters correctly
Report Builder
Report only showing certain employees (#113424)
Exclude archived data source setups from queries.
On Create Statement do not include joins that have not been selected on Report.
Action Plan Report (#113340)
Problem
Priority field is missing from the report
Solution
Included the Priority field in the data fields
Data Warehouse
PM Data Warehouse package (#112042)
Optimise PM DataWarehouse package
Improve V8 packages (#113541)
The latest V8 and V8 DWH SSIS packages have been deployed on Master where the running issues have been resolved.
Performance Management Data Fields (#113340)
Add the Priority field to Performance Management Action Plan Data Source
Version 9.1.79 (8 April 2024)
Report Builder
Report Imports (#85116)
Fix report import which failed due to an error in the query which retrieved the data source setup.
System Access
Implementation of login redirects using a generic short URL for both V9 and V8 redirects (#112314)
A new API/ gRPC endpoint has been added to generate LoginRedirect links that can be shared with users to securely log in to a deep link in either V9 or V8.
Performance Management
Allow user without a PM admin role, to preview a template (#113910)
Problem
When starting the Objective Setting, a person with no Adminstration Roles could not view a template before selecting it to create the Agreement.
Solution
The role check has been removed and is no longer dependant on the Admin Role.
People Management
Implement a selector of a default active people group (#112784)
This issue has been corrected by setting the first people group linked to a user as the active people group of the user if no preferred people group has been setup yet.
Display manager with all information (#113942)
Problem
The Manager's Location in Organisation was not displaying and the it also showed that the manager cannot log in and the position is not active.
Solution
Include the Manager details in the same query as the rest of the people's details.
Version 9.1.78 (8 April 2024)
Report Builder
Data Source Setups to not be archived (#85116)
When retrieving data source setups, make sure the setup is not archived.
Ruleset Setup
Copy Countries and Locations (#89623)
Resolve the issue of copying countries and locations when creating a new Ruleset.
Performance Management
Terminated Managers should prevent a user to submit objectives or ratings (#113183)
People Management
When a person is terminated, the manager should still be linked but have a label with [Termination] at the end.
The input fields should be made wider to accommodate this:
Currently
New Suggestion
Performance Management
Show the Terminated label as well
Disable the Submit button
Tooltip
You cannot submit because your Performance Manager has been terminated.
People Management
Delete modal not correctly enabling the Delete button (#113743)
Problem
A recent change had caused that the delete modals on Next of Kin, Assets and Permits not work because of how it handled the deletion reason.
For the above there is no reason displayed and to bypass the validation that happens for the delete button to enable " " was added to the input.
Recent changes on the global delete.ts functionality however had a check introduced that no empty reasons are provided, and in doing so it trimms the input removing the " " added and failing the validation.
Solution
Removed the " " from being inserted on the delete modals here, and instead made use of the newly added ShowDeletionReason propery which better handles not showing the input and then does not check for it having a value.
New functionality - Address Development (#112076)
Master Data
3 new Master Data lists have been added for:
Countries
Provinces
Work Locations
Organisational Structure
When adding / editing a organisational unit, a new section has been added:
Heading
Business Address
Field
Location
The data is derived from the Work Locations master data items
People Management - Product Setup
Add a new section
Additional Sections
Add the Address as a section that can be activated
People Management - Profile
On the Address menu, the following sections are available
Physical Work Location
Data derived from the Master Data items for Work Locations
Business Address
Data derived from the organisational unit's Location
Residential Address
The residential address of the person
Home Postal Address
The postal address of the person
A check has been added for when the home and postal addresses are the same
Version 9.1.77 (26 March 2024)
System Access
Changed handling of unauthenticated when the refresh token for the session is no longer valid (#112810)
Added the removal of cookies on themes and ruleset during authorisation (See Version 9.1.76 for the initial change)
Version 9.1.76 (25 March 2024)
Tenant Management
Display the correct expiry date (#112411)
Problem
It converted the data and time incorrectly to the next day when displaying on the front-end, instead of keeping the date and time as it is.
Solution
Display the date and time correctly, as is, when displaying the expiry date of the subscription.
Performance Management
Unable to save the review survey weights (#110981)
Problem
Cannot add a Review Survey, stating that the maximum score cannot be zero. Problem was that the score input was incorrectly hidden if you first open and close an existing review item.
Solution
Ensured that the score input is displayed correctly when adding a new Review Survey. Also added validation to the score input to not allow anything less than 1 to be entered.
Value Survey modal open inside overall Summary (#113440)
Problem
With the recent slider control introduced on the PM dashboard the Value Survey score modal was getting cropped into the slider parent container and no longer showing centered and on top of the overlay.
Solution
Moved the Modal out of the Slider (similar to where the delete modals are located).
It then generates a Review survey modal for each of the review survey items.
Moved all the relevant state and actions out of the ReviewSurveyScoreModal component to the ManagerAccordion component where appropriate.
Also fixed an issue where after the update the order of users changed on the Overall Summary, by first sorting the userContract array before mapping to the components.
System Access
Changed handling of unauthenticated when the refresh token for the session is no longer valid (#112810)
Problem
When the refresh token period has expired for a user access token the user receives an unauthenticated error throughout the system that is not handled.
Solution
Changed hardcoding in identity to enable the expiry period to change in the app settings
Add redirect in the error controller to the error controller to the login page
Add redirect in the SPA controller when the session does not exist or the user is not authenticated
When possible the user will be redirected back to the page where they left off.
Add login/logout to WebMVC config to go to the logout method to redirect the application to the correct login screen.
The defaults for the tokens now are:
Access Token 1 hour, the access token ends and must be renewed
Refresh Token 5 hours, meaning the access token can be renewed up to 5 times if the user still has a valid login and is allowed to log in
Once the refresh token period has passed the user will be redirected to the login page to log in again.
Version 9.1.75 (25 March 2024)
Tenant Management
Order Tenants properly on the index page (#113436)
Problem:
Could not order on date on the tenant index page, because it tried to order on an already formatted date
Solution:
Made the order field to be a universal sortable date format. Also removed the order on the name of tenant. Used the SignifyDateHelper.
System Access
Tenant Expired message has been improved (#113535)
When a Tenant has reached the expiry date, the below message is now displayed:
People Management
Added correction to the People Management items when a user has no roles but all the needed people group permissions for the sections (#113486)
Problem:
A user with no roles but all the people group permissions to edit the sections was not able to do the following without the people administrator role:
Terminate User
Transfer User
Reappoint User
Change the reporting lines
A user without the job profiler administrator role is not able to add an appointment for a terminated user.
A user without the job profiler administrator role can try and create a position on the appointment screen.
An unauthorised is received after terminating a user today and trying to edit the user
A user with only a People administrator role was able to manage role assignments under User Access
Solution:
Remove the role check on the people administrator and replace it with a check on people group permissions
Remove the check on the appointment screen that requires a user to be a job profiler administrator to appoint users
Hide the button to create positions from the appointment screen when a user is not a job profiler administrator
Change the date filter to include the current date when retrieving the active appointment of a user
Change the People Administrator role to check the manage own access and logged-in user along with the role in the user access section.
Peformance Management
Fix not being able to submit final ratings when hide scores enable and perspectives are on (#113057)
Problem
Cannot submit Final Ratings when Hide Scores setting is enabled
Solution
Added logic on the final ratings submission to not calculate the perspective / KPA scores if hide scores is enabled, this was breaking because the weight is saved as 0% which caused divide by zero errors.
Added more detail to the import validation message (#112703)
Problem
The validations message is not descriptive enough to a user when a Template Import fails where the KPA and KPI weights don't equal 100
Solution
Improve the message
Template section weights should sum to 100%
Version 9.1.74 (25 March 2024)
Data Warehouse
Improve handling of DataWarehouse table creation / updates (#112041)
Created a new SSIS package called CreateTables that will add all the required tables as this did not exists within the current repo.
Remove records marked as deleted from V9_Data Warehouse during daily sync (#108782)
Problem:
During the sync from V9 databases to V9_Datawarehouse, records marked as Deleted still remains in V9_Datawarehouse.
Solution:
Change dtsx packages to remove records marked as Deleted from V9_Datawarehouse.
Example: Performance Management Contracts/Periods
Performance Management
All agreement weights must be validated to be more than 0 (#113018)
Problem: Currently you can add perspectives and KPAs while leaving their weights 0. If you try to submit objectives, an error will be displayed. Only KPI weights are validated.
Solution: Added validation to Perspective and KPA weights to only allow you to add if the weight is more than 0 (if not itemsWeightedOverSection AND not hideScores). A snack message is displayed.
User can add duplicate review setups (#113022)
Problem:
User was able to add duplicate review setups.
Solution:
Disable Save button when creating and updating review setups.
Ruleset Management
Addition of Catalogue menu in V9 for the learning product (#112786)
Problem:
The Catalogue menu was not included as part of the Learning Product.
Solution:
Add the Catalogue menu to the Ruleset System Menu list. When the Learning Product has been activated, this menu can also now be activated.
When viewing the integrations tab on ruleset setup, make sure the General tab is selected by default and not payroll (#113171)
Problem:
Payroll tab displayed by default.
Solution:
Make it so that the General tab displays by default.
People Management
Styling of pages with large gaps (#112994)
Problem:
People Profile pages are not fitting correctly on the screen. There are large grey areas around it.
Solution:
Improve some styling on the person profile page, to fit external and normal pages better - filling the entire height of the screen.
Translation not applied for Username field (#113007)
Problem:
The Username label on the employee profile is now displayed as two words instead of one but the translation shows it as one word.
Solution:
Ensure correct translation is used for the Username field.
Unable to give data source access to active report categories on a new tenant’s ruleset (#112839)
Problem:
Because any new ruleset uses the the datasources/categories from Ruleset/Tenant 1 by default, nothing was returned, because the current Ruleset is not Ruleset 1
Solution:
When retrieving data categories, return the categories from Tenant 1 if the ruleset uses the Data Dictionary from Ruleset 1
Publish the Job Profile of the first user on a new Ruleset (#112780)
Problem:
Default ruleset job was not published.
Solution:
Changed it so that the default ruleset is published.
Vacant Positions of an Unpublished Job Profile displays the Vacancies Count for User Appointment (#112369)
Problem:
Jobs that were not published displayed in the list.
Solution:
Filter the jobs to those that are published.
New Functionality
Kudos Development (#107675)
A new button has been added to People Management on the card view:
When selected, you will be able to send Kudos to a person. The page that opens is where you select a badge and add a message.
After sending the Kudos, you can see all Kudos that you received and all Kudos that you sent to others on the Main Dashboard.
Received
Top 3 entries are shown
Given
Top 3 entries are shown
When clicking on the View More option, the full details are shown.
Only Kudos given can be deleted or edited withing 7 days of sending it.
When clicking on the Send Kudos to a Colleagues button, the user will be navigated to People Management Dashboard.
Version 9.1.73 (11 March 2024)
People Management
Change name of Training Records tab (#112350)
Name has been changed from Learner Records to Learning Records.
Changes to the Profile Banner (#110509, #110908, #110509)
Removed the Work Telephone Number from the Contact Details section; removed the Group date from the Appointment Info section and removed the Created date from the Additional Info section.
A correct selector to load the training and development first menu (#112886)
When clicking on the Training and Development menu, the Learning Records are loaded as the first menu item.
Performance Management
Implement a slider on the Overall Summary for more than 5 items (#104459)
Business Rules:
There should be 5 items (incl Overall Final Score) on the screen at all times
When the Review Periods + Review Surveys are more than 4, then a scroll is added
There is also a "legend" to show which items are on the screen
Always land on the current active period as the first item in the scroll, when opening the page
This is for both Employee and Manager views
Version 9.1.72 (29 February 2024)
Ruleset Setup
Ensure available languages can be published (#112374)
When a language is set to available, this should be published without errors.
Job Profiler
Terminated employees to not be displayed when viewing users linked to a people group role (#108023)
When a person is terminated, the people group roles are removed and no longer showing when viewing the people.
People Management
Make sure appointment dates are cast as date when retrieving employees for the people management index page (#112757)
All future terminations are showing on the People Management dashboard.
Performance Management
Show Manager and Employee comments regardless of contract approval state (#112736)
New business rules have been applied to ensure all comments are shown:
For the Employee:
Regardless of the settings, always show the Manager's comments in both the Objective Setting and Rating phase
Thus, if the manager added a comment to a KPI, show this to the employee although the objectives or ratings have not yet been submitted
Remember, always hide the Private Comment
For the Manager:
Regardless of the settings, always show the Employee's comments in both the Objective Setting and Rating phase
Thus, if the employee added a comment to a KPI, show this to the manager although the objectives or ratings have not yet been submitted
Version 9.1.71 (27 February 2024)
People Management
When creating a user from the front-end, don't create an appointment record through the materialisation integration event (#112756)
Ensure that the person's profile can be accessed without receiving an error.
Performance Management
Cannot update KPA weights (#112817)
Fixed the issue where the KPA weights could not be updated and resulted in an error.
Version 9.1.70 (26 February 2024)
Notifications
Add example data to recipients for notification testing (#93775)
When sending a test email, example data is added:
Job Profiler
Check if job profile is published when calculating vacant positions on the different org structure views (#112369)
Only show Vacant Positions when the Job has been published. For example when appointing a new person.
One Job is Published and the other are not.
When appointing a new person, only the published Job's vacancies is shown.
Tenant Management
Show the correct Number of Licenced People instead of the placeholder (#111980)
Performance Management
Users can rate and approve when phase is locked (#108065)
When a phase is locked, a person should not be allowed to complete the ratings.
Version 9.1.69 (26 February 2024)
System Access
Fix issue where the Reset Password URL redirected to the incorrect theme (#108985)
The URL now redirects the user to the correct theme when clicking on it.
Performance Management
Fix issue where KPI level Action Plan documents were not showing (#112290)
When adding an Action Plan for a KPI and adding documents on the Action Plan, the documents are now displayed.
Ruleset Setup
Display bulletin in its own modal (#112446)
Instead of the message displayed under the bulletin icon, it now has its modal.
Version 9.1.68 (26 February 2024)
Performance Management
All the sections is collapsed on the Manager Dashboard (#111930)
Make the Submit and Approve buttons the Primary Colour instead of the Back to Dashboard button (#111967)
A confirmation message is added when the Manager modifies the objective settings (#111968)
The 'Type Your Own" option to be displayed first when adding a KPA, KPI, KC item (#111931)
Documents can be uploaded only when the Final Ratings have not been submitted (#111932)
When the final ratings have been submitted, the Upload button is greyed out and no documents can be uploaded.
People Management
Ensure that the My Manager label is displayed on the People Management Dashboard (#104135)
The Manager of the logged in person is displayed on all tabs.
Version 9.1.67 (12 February 2024)
Performance Management
Fix issue with copy from previous not recreating custom items (#112170)
When copied from a previous agreement and altering the agreement's KPI value, the other agreement values are no longer affected.
Version 9.1.66 (12 February 2024)
Ruleset Setup
Copy Performance Management data, when creating/copying a Ruleset or Tenant (#107442)
The following data is copied when creating a new Ruleset or when a Ruleset is created for a new Tenant:
Review Setup:
Copy active setups which includes
Details
Review Items
Sections
Templates are excluded
Review Year:
Copy all active Review Years which includes
Details
Review Setups
Target Audience is excluded
Performance Management
Only show Perspectives that is in the library (#111798)
When adding Perspectives, only show Perspectives that has been marked as Library Items when creating a template.
Hide the Manager Rating column on View/Print if Manager rating is disabled (#111994)
When the setting is enabled, do not show the Manager Rating column on the Print View:
Version 9.1.65 (12 February 2024)
System Access
Add a check on external login when User does not exist to give a message (#110250)
Added a message: Invalid Login Attempt
People Management
Changed validation on the email address in the identity service when adding a user with an email address that has been used for another user on the ruleset as a username (#111385)
Removed the Username Required setting and changed the validation to only be performed when the username is empty and the email address is to be used as the username as a fallback.
Ensure that when a people group is exported the default is set when the user has not selected their default (#111809)
When the People Groups are imported into the Additional Services, the default is now also set on Additional Services.
Change the wording on the buttons of the People Management Dashboard (#110534)
The People Group button label has been changed to Manage People.
Change the wording on the Password Reset Confirmation (#110536)
Added the person's email address to the confirmation message.
Correct role implementation when displaying gear and product setup (#103560)
Problem:
User roles are not considered when showing cog, product setup or people group menus
Solution:
- Verify that the user is an authenticated admin before showing the cog - Only show people groups to people admins, performance admins to ruleset admins - Only show product setup to product admins or ruleset admins - On the product tab only show the products the user has the role to configure or show all if a ruleset admin
- Hide ruleset tabs when the user is not a ruleset admin
Report Builder
Ensure that reports have unique names (#111694)
Add a check to ensure that reports have unique names.
Ruleset Setup
Add on-screen messages when services are not running (#88160)
An on-screen message is displayed to inform the user when a service is not running.
Tenant Management
Expired subscription still showing as Active (#108507)
On the Tenant Management page, the expired subscriptions is made Inactive. Ensured that Ruleset 1 is exempt from the Tenant Inactive Check.
When logging into the Tenant, a message is displayed:
Performance Management
Corrected the issue where the Modify Manager Ratings button are displayed twice (#111652)
Version 9.1.64 (29 January 2024)
Notifications
Correct the placeholder mismatch on the Check-in Deadline Template (#110616)
Placeholders in the template had the person details instead of the manager details. The placeholders are now corrected.
Version 9.1.63 (29 January 2024)
People Management
Correct Manager details on Dashboard (#111449)
The manager's details and profile picture is now displayed on the dashboard.
Ensure the Forget Password Notification is sent to new users (#111511)
Ensure the user gets the OTP Notification in order to reset their passwords.
Display terminated users on the People Group Tab (#110969)
Change the functionality so that terminated people are also shown on the People Dashboard.
Performance Management
Enhance the Create Modal on Performance Management (#111524)
When a new Agreement is created, the Create modal has been enhanced so that the options is more visible.
System Access
Add a refresh of System menus (#111458)
Added refresh of the system menu when the product is inactive due to configuration or when the subscription is changed.
Version 9.1.62 (15 January 2024)
Theme Management
Implement api endpoint to list themes for a client id (#110472)
Add a bulk import of themes that triggers when a user creates or edits a theme in V9.
V9 Imports
Implemented Scheduled Processing of import on external services (#109736)
Implemented a new bulk additional sevices import section
System Access
Corrected display of dark text headings on the login page (#111177)
When the Dark Heading Text setting has been activated on Theme Management, the Login Page Heading and Login Page Description is changed from white text to dark text.
Themes:
Login Page:
Version 9.1.60 (15 January 2024)
Performance Management
Hide SigniChat icon (#108015)
The SigniChat icon is hidden so that the Save button can be selected when adding a General Comment.
Styling changes on Print View (#107531)
Updated the styling so that the Print View items are aligned.
Improve error message for duplicate values (#107529)
The following rules have been implemented regarding duplicate items:
You cannot add:
a KPI to a KPA that already has a KPI with that name
a KPI to a KPA where that KPA is already added to the contract and has the selected KPI as 1 of its items (duplicating KPA to KPI options)
Key Competency Name shown as editable (#106698)
All inactive/disabled/not editable fields are always shown in gray.
Allow backspace to clear weight on KPA (#107045)
The backspace now clears all the numbers.
Status on Check-In banner (#107515)
The incorrect Next Action was displayed on the check-ins page. The same instruction is now displayed on check-ins as on the agreement.
Incorporate and allow to edit review surveys score setting (#107323)
No employee should be able to edit/update the review survey score.
Business Rules:
Setting name:
Allow the Manager to edit review survey scores
Rules:
When this setting is enabled, managers can edit these scores
Employees should not be able to edit
When impersonating, Admins should be able to edit the review survey score regardless of whether this setting is enabled or disabled.
Organisational Structure
Only load the first 2 levels (#108648)
Load first two levels in org tree, load children of higher levels as needed.
Adjust badge styling on treeview (#108943)
Added the treeview in a white card so that the badges are clear.
Competency Analysis
Add ratings on screen (#109839)
The ratings are now available on screen. The user do not have to select the book icon to open a page for the ratings.
Notifications
Add example data when sending a notification template (#93775)
Example data is added so that the placeholders do not display. This is an example of how the template looks when a user receive a notification.
People Management
Add username to the Profile (#105463)
The username is also displayed on the My Profile page
Deleted roles are added again (#108438)
Fixed the issue where a deleted Admin Role is added again.
Fix paging / load more on sections (#104135)
The system displayed duplicated users after loading more users on the page. This has now been corrected.
Version 9.1.61 (15 January 2024)
Competency Analysis
Display comments on hover (#110806)
The comments made are now shown when hovering over the rating.
People Management
Resolved "Go to Another" issue (#110884)
Selecting a person under the Go To Another field, the page is redirected to the selected person's profile.
Translations
Addition to translations for Performance Management (#110880)
The following Translation has been added:
Performance Management
Decreased Avatar initials on PM Dashboard & Agreement View (#110880)
The text size has been decreased so that it fits in the profile area.
List of Release Notes (2023)
Version 9.1.59 (7 December 2023)
Performance Management
Person Rating (#110582)
Additional change to only show person rating after both manager and person has approved.
Job Profiler
Job Profile Copy (#110659)
Fix 2100 max parameter error when copying job profiles.
Version 9.1.58 (6 December 2023)
People Management
Reporting Lines Error (#110678)
Correctly check if user is part of people group if cache is empty.
Additional Reporting Lines menu item (#110677)
Implement additional reporting lines menu item
People Groups
Cannot delete a person from the list (#110682)
Fixed issue which prevented you from removing employees from included and excluded in the People Groups.
Performance Management
Hide person rating (#110582)
Hide Person rating on contract preview if person not approved and setting to not show to manager is on.
Version 9.1.57 (5 December 2023)
Theme Management
Load external services menu items (#110603)
Enabled the functionality so that an External Services menu item is loaded when first in the list.
Version 9.1.56 (5 December 2023)
Report Builder
Cannot access Report Builder (#110658)
Resolved an issue on the ReportBuilder authentication to allow a user to access the Report Builder reports without having the Data Dictionary admin role.
System Access
Third Party Providers (#89623)
When registering third party auth providers, make sure the clientid and secret is not empty or null
Version 9.1.55 (5 December 2023)
People Management
Country Selector (#97210)
Add the coutnry selector to the contact number when adding new people
Welcome Notification (#110621)
It now checks, erroneously, if the user for whom you are sending the welcome notification, has rights to appoint new people.
Theme Management
Load external services menu items (#110603)
Enabled the functionality so that an External Services menu item is loaded when first in the list.
Version 9.1.54 (4 December 2023)
Imports
Validation (#102661)
Fix validation to allow duplicate position titles.
Translations
Move translations (#110409)
Moved Performance Management Action translations from static static to static translations to be able to translate on the front end.
Publishing a language that does not exist (#109858)
When publishing, if the language does not exist, auto-create it.
People Management
Character restrictions (#110273)
Remove username characters restrictions in identity to allow a username to have special characters.
Performance Management
Tooltip on Ratings (#110292)
Remove the score tooltip on the rating when the Hide Scores setting is enabled.
Rating Scales Label (#110286)
Fix rating scales label for Hide Scores to show Status.
Version 9.1.53 (4 December 2023)
Identity & Authorisation
Corrected incorrect login using Microsoft when the same provider and key is used for a user on different rulesets (#110250)
A user login in with Microsft using the same provider and key on different rulesets, will now log into the correct ruleset.
API
API Configuration (#110046)
Add API configuration to master data, report builder and audit services.
Main Dashboard
Open PM with correct Header from widget (#110263)
When redirected to Performance Management, the header now shows correct.
Next Action label (#110261)
Ensured that the Next Action label is not wrapping.
Continue Button (#110263)
The continue button redirects to Performance Management in the same tab.
Imports
API User Import (#109726)
Implement the API User Import and cebtralised validations.
Ruleset Setup
Copy Data (#107442 & #85116)
Implement the copy of Report Builder and Performance Management data when a new ruleset is created or copied from.
Performance Management
Label Change (#110243)
Change label from Overall Final Score to Overall Status when Hide Scores setting is enabled.
Review Setup details (#110241)
Always redirect on Review Setup details when settings have updated to show the changes.
Review Sections | Action Plans (#110235)
Remove the hide scores label in the section.
Review Items | Review Surveys (#110231)
Remove max score check on Review Survey constructor, validation is done when adding a new review item.
Master Data | Inactive Perspectives (#110200)
Disable inactive perspectives when completing contract.
PM Template Import (#106913)
Implement the functionality to import Templates when the Hide Scores setting is enabled.
Version 9.1.52 (20 November 2023)
People Management
Corrected Authorisation
Corrected not authorised page when changing a user's people groups and appointing a new user
Appointment Menu
Enforces display of appointment menu when the user has permission to manage own access
Report Builder
Report Builder API
Correct Setting value for report builder API
Version 9.1.51 (20 November 2023)
Main Dashboard
Performance Management Widget
Fixes include:
Indicate when ratings are completed
Increase the widget's query date range
Enhance the styling
Fix the widget's action button focus styling
People Management
Add additional Reporting Rights Link (#109729)
Added the reporting rights link so that access to V8 reports can be given to a person.
Version 9.1.50 (10 November 2023)
System Access
Corrected Ruleset Creation check and improved helper text
Changed the helper text to explain the System Endpoint field
People Management
Implement API Calls
API Calls to fetch
The list of People Group Users
People Groups linked to users
People Group roles
People Groups
Version 9.1.49 (10 November 2023)
Performance Management
Review Setups not displayed
Resolved issue where review setup is not displayed for root node and reporting line people groups
Manager Ratings when Dual Participation is inactive (TP#109267)
Resolve issue where Manager cannot submit the ratings when dual participation is disabled
People Management
Change menu spacing (TP#105910)
Change the menu's spacing on the edit page so that longer items fit better
Resolve issue where the My Department & My Company tabs does not show people (TP#109360)
Correct the Search functionality that gives incorrect results when clearing the search (TP#109360)
Version 9.1.48 (25 October 2023)
People Management
Correct the issue where the People Group tab did not show >2100 people (#105910)
Resolved the issue where the People Group tab did not show any people if there are more than 2100 people in the People Group.
Version 9.1.47 (25 October 2023)
People Groups (#105910)
Bug fixes has been made including:
Correct the Welcome Email sent on the Appointment Screen
Apply the People Group permissions to the footer buttons and menu items on the edit screen
Version 9.1.46 (25 October 2023)
Performance Management
Only published templates to be available when creating an agreement (#109118)
A filter has been added to only show templates that have been published when copying from a template to create an agreement.
System Access
Allow ID Numbers with alphanumeric characters (#109010)
Removed the validation on the Forgot Password page to allow alphanumerical characters when verifying the ID Number.
Correct theme loading on Reset Password page (#108985)
When resetting the password, the correct theme is included in the Reset Password link on the notification that a person receives when opting to reset their password.
People Management
Increase ID Number field's max characters (#109130)
The maximum field length for the ID Number has been changed from 13 to 30 characters on the Personal Information screen.
People Groups (#105910)
Bug fixes has been made including:
Implement permissions on the edit pages
Disable the ability to add a person when the active people group is not an Organisational Unit type People Group
Don't allow managing a person when not on the People Group tab
When adding a new person, they display on the list
Correct People Group Roles where the names should be unique
Resolved the Reset Password button when breaking
Reset the toggle on the Delete modal when deleting a People Group Role
Excluse already selected People Groups when linking a People Group
Send the Welcome Notification when adding a new person
Implement the functionality to create a default role with all permissions and linking the default People Group to the first Ruleset user
Resolve error when you add a new Role with the same name as a deleted item
Add focus on the People Group Role name when empty upon saving
Add a pointer on the table row when linking a People Group
Correct the People Group Roles on User Access, Appointments and Performance Management Menus
Add Employee Number field
Version 9.1.45 (25 October 2023)
Performance Management
Change the settings to make the Self-Rating visible (#108924)
The settings on the Review Setup were update in order to make the approved Self-Rating visible to the Manager during the ratings phase.
Change the Dual Participation translation on the Review Setup linking to the shortened heading
A translation was added for Dual Participation heading when linking a Review Setup to the Review Years.
The numbering of Perspectives on the agreement is removed to match the index (#109038)
Hide the Check-In dial when the Check-In Phase is inactive (#108978)
Added a check to ensure that when the Check-In Phase is made inactive on the Review Year, the dial is also not shown on the Overall Summary of the Dashboard.
Review Year:
Performance Dashboard:
Version 9.1.43 (25 October 2023)
People Management - People Groups
People Groups (#105910)
Adding functionality to create Reporting Line and Organisational Unit type People Groups in addition to Custom People Group types.
People Group Roles (#105910)
The ability to add People Group Roles with specific permissions that can be used to link to people.
List of People Group Roles
Permissions
People Management - User Access | People Groups (#105910)
The People Group Roles with the permissions are linked to individual people. The following People Group Types can be linked:
Reporting Lines
Organisational Units
Custom
Permissions linked to the selected Role
Default People Group after login (#105910)
The user, with access to People Groups, can set their default under their account.
People Management Dashboard - People Groups (#105910)
When a person has access to 1 or more People Groups, they can switch between these People Groups.
The permissions linked to this People Group determines what actions the person can perform, for example to view or edit a person's profile.
Performance Management - Target Audience on a linked Review Setup of a Review Year (#105910)
When linking People Groups to the target audience of a Review Setup, the new Reporting Line- and Organisational Unit types of People Groups can now also be linked.
Version 9.1.44 (25 October 2023)
Performance Management
People in My Team not showing (#105910)
Corrected the subordinate filtering when People Groups have already been cached.
Version 9.1.42 (9 October 2023)
Performance Management
Deadline Date on Review Setup page (#108680)
Issue has been resolved where yhe saved deadline date was not displayed on the review setup page that is linked to the Review Year.
Version 9.1.41 (9 October 2023)
Report Builder
Data Dictionary field ordering & Alias renaming (#76220)
Fixed an issue where the Data Dictionary Field ordering and Alias renaming were not working on subsequent pages
Performance Management
Score on the Print Preview (#108638)
Changed the score to display correctly on the print preview of the performance agreement
Display the Measures & Ratings pop-over when doing a Check-In (#108131)
Added the Measures & Ratings pop-over on the check-in modal. This is displayed when hovering over the Key Performance Indicator section when doing a check-in.