Skip to main content

Version 9.1.180 (1 September 2025)

SigniChat

[Communications Portal] Multi-line messages displayed with the "<br/>" tag (#135973)

Problem

  • Text is displayed with encoding such as & and for new lines

Solution

  • Implement a new sanitise tag helper which sanitises the text and displays the output as needed

[Communications Portal] New message pulsing dot is hidden when you send a second message (#135988)

Problem

  • When a message is received from another user, the notification dot is toggled to display, but once another one is received, it removes itself 

 

Solution

  • Implement a fix to extend the logic that if a message is received and a dot is already shown, do not remove

[Communications Portal] Unable to start a new chat when setting allows everyone to start one (#135961)

Problem

  • When the configuration type is set to " everyone can create a new discussion", a user still has no access, query only caters for the people group 

 

Solution

  • Implement a change to allow for a check on the type of everyone or people group joined, if the user is included

Communications Portal] Rename the setting: "Everyone can start discussion" (#135968)

Problem

  • The phrase reads that everyone can start a discussion 

 

Solution

  • Change wording to read that anyone can start a discussion

[Communications Portal] Unread counter not rendered when there were no previous unread messages (#135935)

Problem

  • When a message is received and the user has the portal open, the count is not increased, as the content is not rendered if the user has no unread messages 

 

Solution

  • Change the HTML syntax to still render in the element, as well as update the wording being displayed

[Communications Portal] Translations not shown correctly (#135926)

Problem

  • Some translations were not updated to the new file format 

 

Solution

  • Updated the missing file formats on some labels and headings

[Communications Portal] Owner cannot delete a group chat (#135963)

Problem

  • A group owner must also be able to delete a group chat if he/she is the owner

 

Solution

  • Change code check to allow deletion if the user is the owner

[Communication Portal] Pulsing red dot not removed from coms portal icon (#135372)

Problem

  • When a user has their chat portal open, and receives a message, a red dot indication is pulsing in the banner, but the user does have the chat already open

 

Solution

  • Implement a change to validate if the portal is open or not, and toggle the new notification depending on the state of the modal

[Communication Portal] Character entity displayed for special characters (#135449)

Problem

  • The discussion name value shows value for &

 

Solution

  • Implement a change to display the raw HTML name of the discussion

[Performance] [Communication Portal] Group Chat images loaded on every page (#135485)

Problem

  • The new group chat modal is rendered on every page

 

Solution

  • Move the modal out to only render when the new group chat is opened

[Communication Portal] Move options to start new chats to align horizontally with the add button (#135444)

Problem

  • When the user has no permission to create a new group discussion, the other items are pushed to the bottom

 

Solution

  • Decrease the position where it is being displayed, so that both items render in accordance with when only one does render

General UI changes (#135326)

Problem

  • A new translation file has been added, and not all places have been updated

 

Solution

  • Update the portal to make use of new translations. Add a check to show the total unread count, and only if there are any unread messages


Notifications

[V9 to V8 Integration][Admin][Import] Error on Import and unable to open Import Error Link (#135994)

Problem

  • On Import error mails, the web MVC link is used for navigation, which does not include the needed ruleset code and theme for authentication

 

Solution

  • Correct call to generate a login redirect short URL with the needed link

As a Ruleset Administrator, I want a new section for the Communication Portal under the Notifications tab (#135313)

Problem

  • The communication portal is currently open to any client, with anyone being able to create new chats

 

Solution

  • Implement a new setup where each client can configure their ruleset if discussions should be enabled or not, with additional new settings to allow for people groups or everyone to start new chats

General UI changes (#135326)

Problem

  • Currently, the modal is opened inside a wrapper, which causes it not to behave like a modal, and it needs to reload data each time

 

Solution

  • Change so that the UI reflects as a modal, keep the state of the modal content, and just display the modal as needed. Implement change to send a request to an iframe if it exists, capture the response, should there be one else follow normal process with chat. Should a value be received back from the v8 iframe? Give the option to the user to create a new chat or group chat regarding the eLearning pathway content.


Performance Management

[Performance Management][Review Year][Review Period] Check-in button giving error when outside of active Review Period (#132041)

Problem

  • A change was made to make the check-in dial clickable as the eye-icon for mouse over, but the condition check to allow the click was not included, which caused an error should the user click on it, even if they are not allowed to

 

Solution

  • Implement a change to move the validation check to accommodate the 2 cases where the check is needed.


Report Builder

[Report Builder][End User][Last Run Date] Last run date tooltip shows time report was last run +2 (#135938)

Problem

  • We calculate the DateTime value according to the client details(timezone|culture) in the server side, which is then sent to the client which includes the value 'Z' within the converted string value, indicating that the time is not local. This causes any jQuery or conversions being done to be reapplied with the current client's local timezone. So, for example, if a UTC datetime was for 10:00, after calculation in UTC+2, the time will be 12:00 sent to the UI, and after the dayjs calculation, the time will be 14:00 

 

Solution

  • By removing the 'Z' will indicate to the UI that the time is local time already calculated


Ruleset Management

Warning when ruleset code/ theme key is changed (#135407)
Problem
 
  • When a login URL is used, the ruleset code forms part of the URL that many users bookmark. When the ruleset code is changed, this URL becomes invalid and breaks.
  •  Currently, the user has no warning that this is the effect, nor is there any measure to allow bookmarked URLs with the code to not become invalid.
  •  When the theme key also stored in the URL is changed, users will use the URL will be redirected to the default theme for the ruleset. The user changing the theme key is not warned about the impact.

Solution

  • When saving the ruleset management details for a new code, show a system message to inform the user that the theme URL will change.
  • When changing the theme key, show a system message to inform the user that the theme URL will change, and any user still using the previous theme URL will automatically be redirected to the default theme key for the ruleset
  • When the rulesetcode is changed, store the historic codes as a list against the ruleset in a value object. Use these codes in the app controller and identity when the ruleset ID is determined.
    • When the previous code is used, the theme key must also exist on the same ruleset to ensure an incorrect ruleset is not loaded that also uses the code as its new active code
    • When the rulesetcode cannot be found in the history,y displays a message to the user that the URL is not valid and they should contact their system administrator


Imports

Automated Employee Import Error (2) (#135625)

Problem

  • When a terminated user is imported without a position code, a new position is created with every import. When a terminated user is imported with a new start date and position with the same end date as the appointment, it is processed as a new appointment, causing all new appointments to fail to create. 

 

Solution

  • When retrieving the position code from the existing appointments, include all appointments, not just the active appointments. When a new termination record is imported for a terminated user where the start date is before the current terminated appointment end date, handle it as a termination. Updated appointment import logic to use last appointments instead of only active appointments for transfer and new appointment calculations, ensuring no date overlaps. Refactored queries and handlers to support this, and added/updated unit tests to cover new scenarios for transfers, corrections, and overlapping appointments. 

[Payroll Connectors] Client ID and option to change Client secret missing when editing existing connector (#135776)

Problem

  • When an integration form opens, the details are populated without the client ID, as the client ID is shared with the same ID value between payroll and PowerShell. 

 

Solution

  • Implement a check as to which form is currently open and populate the client ID based on that check

Import Error (#135543)

Problem

  • When a schedule processes the Payspace or PowerShell scripts, the data cannot be staged due to Cannot insert a staging record without a valid OwnerUserId

 

Solution

  • Eliminated the check for a valid OwnerUserId in the UserImportStaging constructor and updated related unit tests. Also added ProcessPayroll job configuration to appsettings.Development.json.

[Payroll Connectors] Unable to add a new PowerShell script connector (#135772)

Problem

  • A new setting has been implemented to make use of for pay-space payroll connector, but within PowerShell, this control does not exist and therefore causes an error

 

Solution

  • Implement a null check to ensure the control first exists

[People Import] [Validation Report] Validation report populates "New Start Date In Group" when it was left blank in the import template (#134861)

Problem

  • When a user pulls the Import validation report, the user's Start Date of Position is used to populate the StartDateInGroup

 

Solution

  • Alter the check to make use of the correct field needed

Payspace changes to correct the appointment dates (#134132)

Problem

  • Start Date in the company is not mapped from Payspace 

 

Solution

  • Map the employment date from the employee status API as the Start Date In Company for import


People Management

[Images] Issues with images on master (#135931)

Problem

  • The default list of avatar images is not shown. Initially, avatar images are fetched from Ruleset 1 if the current ruleset has none. Once an avatar picture is uploaded, it never does the fallback and then the 'defaults' are lost. Additionally, it appears as though the ruleset 1 specific content is not available on all environments, resulting in only the custom uploaded avatar images being displayed. 

 

Solution

  • Always include the default avatar images in the list of available images to choose from. No longer fallback to Ruleset 1 content, but use the existing defaults avatar images folder.

[People Management]: The Load More button overlaps with People's Card (#135597)

Problem

  • The Load More button on the People Management card view overlaps user cards when the viewport is a certain resolution. 

 

Solution

  • Removed the height specificity on the card container, causing the load more button to overlap the actual cards.

Upgrade issue (#135875)

Problem

  • The people group user list times out after 60s

 

Solution

  • Removal of the CTE (Common Table Expression) and restructuring the query to use a single SELECT statement, which improves readability and potentially performance.
  • Additionally, the query now includes organisation path information directly and sets a longer command timeout for large queries.
  • Query refactoring and optimisation
    • Removed the CTE (`cteUser`) and replaced it with a single, streamlined SELECT statement in the SQL query for listing user items. This simplifies the query structure and reduces complexity. 
    • Moved the join to `OrgNodes` (`cnp`) directly into the main query, ensuring that the `FlattenedOrgPath` is included for each user item without requiring a secondary join.
    • Added a command timeout of 600 seconds to the query execution, which helps handle cases where the query might take longer due to large datasets.

[People Management]: Profile Avatar selection is not saving (#134835)

Problem

  • Images of file types that are not JPG are not saving when selecting and saving the profile avatar. 

 

Solution

  • Fixed what filetypes can be returned and used for avatar/profile. Not in scope of ticket, but changed the allowed file types when uploading images on profile image modal. Small code cleanup. Allowed filetypes (from Image Resources) are: PNG, JPG, JPEG, GIF, and SVG (this is an exception, as we only want admins to be able to upload SVGs). Changes discussed with William. No changes affect his current work.


Translations

[Login][End User][Language] Language selection duplicated on drop down (#135774)

Problem

  • Language options are shown in duplicate on Login screen.

 

Solution

  • Added a safeguard to the language publishing to not add the language to the cultures cache if it already exists.

[Ruleset Management][Admin User][Default Language] Able to select a language which is not published from the Default Language drop-down (#135670)

Problem

  • When setting the default language for a ruleset, you can pick a culture that is Not Published.

 

Solution

  • Change the default language options dropdown to not show languages that are not both selected (available) and published


Data Warehouse

Report Issues (#135915)

Problem

  • The Promotion Status calculations are not calculated correctly within TermMarks

 

Solution

  • Adjusted script that will calculate the TermMarks more accurately

Daily Server Monitoring Checks 2025 (#125159)

Problem

  • There are no emails that return the Deploy SSIS Packages results

 

Solution

  • Created SQL Script C_03610_99999_GenerateDWHDeployJobResultsToBeEmailed that will return the SSIS Deployment Packages results

[DWH] - Remove join between datasources People and Learner records (#135282)

Problem

  • There is no difference between Users and LearnerRecords within ReportBuilder
  • There is no notification regarding whether the deployed SSIS Packages ran successfully 

 

Solution

  • Added Join between Users and LearnerRecords
  • Added a Task to execute the SQL Job that will email the SSIS Package run results

Integrations: Bulk Additional Service Imports: DWH (#135629)

Problem

  • A new SSIS Package is required within the Data Warehouse to refresh the report data on its own

 

Solution

  • Created a new SSIS Package LearningManagementReport_ETL THAT contains the required tasks to refresh the school report data


Job Profiler

Job Profiler: Importing competencies (#132883)

Problem

  • Competency analysis is not showing the correct position information, only the first appointment record returned, resulting in older position details displaying. 

 

Solution

  • Order the appointments to ensure that the latest appointment information is selected to get the current position information.

[Job Management] Copy Position Error (#135780)

Problem

  • Copy position gives a DataTable error due to a missing column. 

 

Solution

  • Refresh the position tab instead of manually adding a datatable row, which can be unstable if the rows ever change.


Dashboards

[Dashboards] Indicate when the dashboard has no data (#133268)

Problem

  • No script will do a Data Integrity check for the current V10 Dashboards 

 

Solution

  • Created a Script that returns the Data Integrity data


Learning Management

The training matrix page gives an error on load when the server is busy (#135799)

Problem

  • The training matrix page does not load at certain times when the server is busy 

 

Solution

  • Replace the long-running query to populate the job profiles dropdown with ListJobProfiles

LMS Portal: Subject Setup: No Cycle 'Weight in Period' Validation (#132285)

Problem

  • The weights in a cycle can exceed 100

 

Solution

  • Prevent users from assigning more than 100 total weight to interventions in a cycle, improving data integrity and user experience.


Identity and Authorisation

Login Report - Not recording reset password login data (#135574)

Problem

  • No new login logs are viewable on the report builder

 

Solution

  • Fixed backend User reference


Tenant Management

Tenant Creation | Not receiving initial email and user not authenticated (#135653)

Issue 1

Problem

  • A check is being done if the tenant setup has been completed before a notification for rulesetup is sent out, but an attempt is made to send the notification of the ruleset out before the last command for tenant is called

 

Solution

  • Correct the order to first finish last tenant setup command and then proceed with the notification with the ruleset

Issue 2

Problem

  • When a new tenant is created, it creates a support user and a few others as well. This makes use of the bulk user import functionality, as this now requires an import ID, which failed to create users

 

Solution

  • Parse the import ID to create the new users to proceed with the tenant setup


Caching

Employee appointment/termination error (#134571)

Problem

  • When a signed-in user terminates a user or adds a new user, the cache/roles are cleared and re-materialised, thus causing authentication issues, which throws a we're sorry screen 

 

Solution

  • Extend the duration attempt to wait as well as increase the retry count to 2 times.


Date Handling

[Date Picker] Format to user language (#135450)

Problem

  • Date inputs were not formatting according to the user’s language.

 

Solution

  • Store the user’s date format in browser session storage (similar to timezones, but not persisted in cookies). Add a global JavaScript event listener for date inputs. This listener sets a data attribute on the input, containing the correctly formatted date.

[People Management][Admin User][Date Fields] Date fields not populated on edit, even though dates have been captured (#135972)

Problem

  • The way the date formats were applied did not work on Firefox, due to the way::before was used.

 

Solution

  • Instead of using a date-attribute and applying a style on that for::before, draw a span over the date input so that the correct date format is displayed.