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.155 (7 April 2025)
- Version 9.1.154 (7 April 2025)
- Version 9.1.153 (7 April 2025)
- Version 9.1.152 (7 April 2025)
- Version 9.1.151.3 (Support Release - 25 March 2025)
- Version 9.1.151.2 (Support Release - 19 March 2025)
- Version 9.1.151.1 (Support Release - 18 March 2025)
- Version 9.1.151 (17 March 2025)
- Version 9.1.150 (17 March 2025)
- Version 9.1.149 (17 March 2025)
- Version 9.1.148.2 (Support Release - 8 March 2025)
- Version 9.1.148.1 (Support Release - 26 February 2025)
- Version 9.1.148 (24 February 2025)
- Version 9.1.147 (24 February 2025)
- Version 9.1.146 (24 February 2025)
- Version 9.1.145 (24 February 2025)
- Version 9.1.144.3 (Support Release - 18 February 2025)
- Version 9.1.144.2 (Support Release - 14 February 2025)
- Version 9.1.144.1 (Support Release - 13 February 2025)
- Version 9.1.144 (3 February 2025)
- Version 9.1.143 (3 February 2025)
- Version 9.1.142 (3 February 2025)
- Version 9.1.141 (3 February 2025)
- Version 9.1.140 (3 February 2025)
- Version 9.1.139.2 (Support Release - 27 January 2025)
- Version 9.1.139.1 (Support Release - 24 January 2025)
- Version 9.1.139 (14 January 2025)
- Version 9.1.138 (13 January 2025)
- Version 9.1.137 (13 January 2025)
- Version 9.1.136 (13 January 2025)
- Version 9.1.135 (13 January 2025)
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)
- 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.
- 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)
- 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.
- 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
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 are expiring 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)
- 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)
- 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.
- 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.
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.
- 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)
- 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.
- 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 callsaveAttendanceRegister
before creating notifications. - Changed
includeParent
state inAttendanceNotificationModal
totrue
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.
- 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 callsaveAttendanceRegister
before creating notifications. - Changed
includeParent
state inAttendanceNotificationModal
totrue
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.
- 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<List<(int Id, string Username)>> 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
- When multiple payroll connectors are set as scheduled imports, the parallel execution causes a DBContext conflict.
- 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.
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
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.
- 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.
- 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.
- 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)
- 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.
- 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)
- Data is deleted on a full refresh
- 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)
- 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
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)
- Barched queries failed due to too many of the same foreign keys
- 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)
- 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)
- Inactive Positions are not being accounted for correctly by the system.
- 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 theNextOfKinInfo
record inUserViewModel.cs
. - Updated the
NextOfKinInfo
record inUsersServiceV1.cs
to include theUsername
field. - Modified the
RecipientConfirmationExportInfo
message inlearning_management.v1.proto
to includerecipient_username
and reordered the fields. - Added the
Username
field to theNextOfKinInfo
message inuser_management.v1.proto
. - Updated the
AbsenteeNotificationsRecord
andAbsenteeNotificationExportInfoRecord
records inNotificationViewModel.cs
to include theLearnerUsername
andRecipientUsername
fields respectively. - Modified the
LearningManagementServiceV1
class to include theUsername
field in various LINQ queries and response objects. - Updated the
AttendanceNotificationExportViewModel
class to include theUsername
field in theNotificationEmailExportDTO
. - Added the
Username
field to theNotificationEmailExportDTO
record inAttendanceNotificationDTO.cs
. - Modified the
LearningManagementExportService
class to include theUsername
field in the data export process. - Updated the
learningManagement.json
localization file to include therecipientUsername
key and its translations in multiple languages. - Ensured consistency in the
learningManagement.json
file by adding therecipientUsername
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
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)
- 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.
- 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)
- Drag and drop positions incorrectly increment people count for org unit rather than vacancy count.
- 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
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.
- 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
. Updatedaxios.get
call to usegenerateUrl
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
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)
- 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
- Made prototype nullable and chose name field based on visible container.
Performance Management
Copy Over Scorecard (#128182)
- 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.
- 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)
- 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)
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 following 2 fields were added:
- InterpolatedManagerValue
- InterpolatedUserValue
Adjust DWH deployment workflow for V8 DWH packages (#126906)
- Workflow can only deploy V9 DWH packages
- 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)
- User authentication and user forgot password used the incorrect placeholder's name for "ResetOTP"
- 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)
- Workflow can only deploy V9 DWH packages
- Adjust workflow (by adding a dropdown for V8 database names) to deploy the V8 DWH package.
Grades Mismatched in Signify & SFTP (#126629)
- Data did not return on ReportBuilder due to PeopleGroups not being refreshed (Performance issues)
- 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)
- ApproverDate fields within jpHRProcesses are set as NVARCHAR DataType and not DATETIME2
- 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)
- Barched queries failed due to too many of the same foreign keys
- 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)
- 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.
- 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
As a Performance Management Administrator, I want to have an additional setting that hides the Evaluation Summary page from employees (#123617)
- As a Performance Management Administrator, I want to have an additional setting that hides the Evaluation Summary page from employees.
- 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)
- Add an Endpoint to return all Evaluation periods that are active from
- Add an Endpoint to pull the 360 scores based on a DateTime
- 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)
- Duplicate master data is causing issues in the system.
- 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)
- 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 (
)
- Expand the first 3 levels of the org chart when opening
- 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.
-
- Text (Add translations for the text)
-
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)
- The system does not allow users to indicate the uptime of the services
- 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)
- The location field not syncing to V8
- 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)
- Manager people groups are not created automatically on V9 for all managers. This creates a lot of unnecessary data that is not always used.
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)
- When a file upload fails because of invalid Nextcloud credentials, it is not clear from the error log
- 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)
- 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.
- 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)
- Barched queries failed due to too many of the same foreign keys
- 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)
- 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)
- User authentication and user forgot password used the incorrect placeholder's name for "ResetOTP"
- Ensure that those events use the correct placeholder's name.
Performance Management
Unable to Link Scorecards to Users (#127841)
- 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)
- Barched queries failed due to too many of the same foreign keys
- 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)
- 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)
- Full refreshes of DWH tables are required on an ad-hoc basis
- 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
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
- 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
- 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
- Check for overlapping appointments for the position
- 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
- Check for overlapping appointments for the position
- 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
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)
- The loading indicator is not showing when saving a marksheet.
- 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”
- Determine all the org units for which the user is a fallback approver
- When clicking on the tab:
- 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
- This button should request a reason, and then mark this card as “Escalated” and pass it to the next person in the approval line
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)
- 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.
- Changed the company values to keep the whitespace for the “How do we live it out” field.
Notifications
Add time to Welcome email (#124699)
- The time the welcome notification was sent is not showing.
- Display the time the notification was sent.
Implement Priority Emails (#124030)
- 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.
- 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)
- There is currently no visibility of the exceptions that are experienced daily by end users
- 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
- 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
- Name - Textbox
- 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 PowerShell script can run through and return data in the format to be stagged the script is valid
- 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
- 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.
- Move the payroll connector provider to the top of the modal
Create a PowerShell connector command to process connectors of this type per the ruleset
- 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
- Consider the implementation of custom run space when running the import
- 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.
- When an import completes and any failures occurred during the import trigger a standard system notification.
- 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)
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
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
- 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
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
- 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)
- The rating modal was not reset after entering the actual value.
- 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)
- 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
- Change the display of the screen and show the following fields
- 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.
- Move the payroll connector provider to the top of the modal
- 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
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)
- 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
- Evaluation Period
- 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.
- When selected, show helper text
- 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
- When selected, show helper text
- ONLY new scores
- Options
- I want to import
- 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
- Review Year Review Survey Import
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
Translations
Investigate changing translation keys from key-based to file-based (#119512)
- Translation calls need to be improved, it is used extensively throughout the system
- 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
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
- 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
- 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
- When adding or terminating a user the user must be automatically added/removed from the people group
- 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
- Dashboard
- 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
- Evaluation Period
- 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.
- When selected, show helper text
- 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
- When the setting is inactive and the Manager cannot revise, exclude this option
- When selected, show helper text
- ONLY new scores
- Options
- I want to import
- 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
- Review Year Review Survey Import
- Add a dropdown with all the Evaluation Periods (V8)
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
- Use the API to import the Overall Final Score
- When opening the Profile
- 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 inMarksheet.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)
- The Datawarehouse returned 'blank' if the nvarchar returned NULL values
- 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