Skip to main content

Version 9.1.180 (1 September 2025)

SigniChat

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

SigniChatProblem

(#135973)

    Problem

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

 Solution

Solution

  • Implement a new sanitizesanitise tag helper which sanitizessanitises the text and displaydisplays the output as needed

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

 Problem

(#135988)

    Problem:

  • When a message is received from another useruser, the notification dot is being toggled to displaydisplay, but once another one is receivedreceived, it removes itself Solution:

 

Solution

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

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

 Problem

(#135961)

    Problem:

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

 

Solution

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

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

 Problem

(#135968)

    Problem:

  • The Phrasephrase reads that everyone can start a discussion Solution:

 

Solution

  • Change wording to rather read that anyone can start a discussion

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

 Problem

(#135935)

    Problem:

  • When a message is received and the user havehas the portal openopen, the count is not incrementedincreased, as the content is not rendered in if the user hadhas notno unread messages Solution:

 

Solution

  • Change the htmlHTML syntax to still render in the elementelement, as well as update the wording being displayed

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

 Problem

(#135926)

    Problem:

  • Some translations wherewere not updated to the new file format Solution:

 

Solution

  • Updated the missing file formats on some labels and headings

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

 Problem

(#135963)

    Problem:

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

 

Solution

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

[Communication

Portal]

(#135313)

Pulsing

Problem:red Solution:dot Implementnot aremoved newfrom singleton pattern to load the communicationcoms portal configuration,icon and(#135372)

make use of the data for the unread check as well as the rule if the logged in user can start a discussion, Also add the ability to after 10min when signed in to just go and reload. This will remove the heavy querying being done on checks to the server

Problem

    (#133263)

    Problem: Solution: Implement a new schedule to sent out notifications for every 4hours to users that have unread messages.

     

    (#135372)

    Problem:

  • When a user havehas their chat portal open, and receivereceives a message, a red dot indication is pulsing in the banner, but the user dodoes have the chat already open
  • Solution:

 

Solution

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

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

 Problem

(#135449)

    Problem:

  • The discussion name value shows valuedvalue for &
  • Solution:

 

Solution

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

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

 Problem

(#135485)

    Problem:

  • The new group chat modal is rendered on every page
  • Solution:

 

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

(#135444)

    Problem:

  • When the user havehas no permission to create a new group discussion, the other itemitems are pushed of atto the bottom
  • Solution:

 

Solution

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

General UI changes (#135326)

 Problem

(#135326)

    Problem:

  • A Newnew translation file has been added, and not all places have been updated
  • Solution:

 

Solution

  • Update the portal to make use of new translationstranslations. Add a check to show the total unread countcount, and only if there isare any unread messages

 


Notifications

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

NotificationsProblem

(#135994)

    Problem:

  • On Import error mails, the web mvcMVC link is used for navigationnavigation, which does not include the needed ruleset code and theme for authentication
  • Solution:

 

Solution

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

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

 Problem

(#135313)

    Problem:

  • The Communicationcommunication portal is currently open to any clientclient, with any oneanyone being able to create new chats
  • Solution:

 

Solution

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

General UI changes (#135326)

 Problem

(#135326)

    Problem: Currently

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

 

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 responseresponse, should there be one else follow normal process with chat. Should a vlauevalue be received back from the v8 iframe.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

(#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 includedincluded, which caused an error should the user click on itit, even if they are not allowed to
  • Solution:

 

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

(#135938)

    Problem:

  • We calculate the DateTime value according to the client details(timezone|culture) in the server sideside, which is then sent to the client which includes the value 'Z' within the converted string valuevalue, indicating that the time is not local. This causes that any jqueryjQuery or convertionsconversions being done areto be reapplied with the current clientsclient's local timezone. SoSo, for exampleexample, if a UTC datetime was for 10:0000, after calculation in UTC+22, the time will be 12:00 sent to the UI, and after the dayjs calculationcalculation, the time will be 14:00 Solution:

 

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:**

Problem
 
  • When a login URL is usedused, the ruleset code forms part of the URL that many users bookmark. When the ruleset code is changechanged, this URL becomes invalid and breaks.
  •  Currently, the user has no warning that this is the effecteffect, 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 thechanged, users will usinguse the urlURL will be redirectredirected to the default theme for the ruleset. The user chaningchanging the theme key is not warned about the impact.
  • **Solution:**

Solution

  • When saving the ruleset management details for a new codecode, show a system message to inform the user that the theme urlURL will change.
  • When changing the theme key, show a system message to inform the user that the theme urlURL will changechange, and any user still using the previouseprevious theme URL will automatically be redirected to the default theme key for the ruleset
  • When the rulesetcode is changes,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 idID is determined.
    • When the previous code is usedused, 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 historyhistory,y displaydisplays a message to the user that the URL is not valid and they should contact theretheir system administrator

 


Imports

Automated Employee Import Error (2) (#135625)

ImportsProblem

(#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 importimported with a new start date and position with the same end date as the appointment, it is processed as ana new appointmentappointment, causing all new appointmentappointments to fail to create. Solution:

 

Solution

  • When retrieving the position code from the existing appointmentsappointments, include all appointmentappointments, 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 datedate, 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

(#135776)

    Problem:

  • When an integration form opensopens, the details are populated without the client-id,client ID, as the client-idclient ID is both shared with the same idID value between payroll and powershell.PowerShell. Solution:

 

Solution

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

Import Error (#135543)

 Problem

(#135543)

    Problem:

  • When a schedule processes the Payspace or PowershellPowerShell scriptsscripts, the data cannot be staged due to Cannot insert a staging record without a valid OwnerUserId
  • Solution:

 

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

(#135772)

    Problem:

  • A new setting has been implemented to make use of for pay-space payroll connector, but within power shellPowerShell, this control does not existsexist and therefortherefore causes an error
  • Solution:

 

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

(#134861)

    Problem:

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

 

Solution

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

Payspace changes to correct the appointment dates (#134132)

 Problem

(#134132)

    Problem:

  • Start Date in the company is not mapped from Payspace Solution:

 

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

(#135931)

    Problem:

  • The default list of avatar images areis not shown. InitiallyInitially, avatar images are fetched from Ruleset 1 if the current ruleset has none. Once an avatar picture is uploadeduploaded, 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 environmentsenvironments, resulting in only the custom uploaded avatar images being displayed. Solution:

 

Solution

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

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

 Problem

(#135597)

    Problem:

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

 

Solution

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

Upgrade issue (#135875)

 Problem

(#135875)

    Problem:

  • The people group user list timesouttimes out after 60s
  • Solution:

 

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 organizationorganisation path information directly and sets a longer command timeout for large queries.
  • ###
  • Query refactoring and optimizationoptimisation *
    • 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

(#134835)

    Problem:

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

 

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)

TranslationsProblem

(#135774)

    Problem:

  • Language options are shown in duplicate on Login screen.
  • Solution:

 

Solution

  • Added safegaurda 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

(#135670)

    Problem:

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

 

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

(#135915)

    Problem:

  • The Promotion Status calculations are not calculated correctly within TermMarks
  • Solution:

 

Solution

  • Adjusted script that will calculate the TermMarks more accurately

Daily Server Monitoring Checks 2025 (#125159)

 Problem

(#125159)

    Problem:

  • There are no emails that returnsreturn the Deploy SSIS Packages results
  • Solution:

 

Solution

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

 

(#135282)

Problem:

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

Problem

  • There is no difference between Users and LearnerRecords within ReportBuilder
  • -
  • There is notno notification regarding ifwhether the Deployeddeployed SSIS Packages ran successfully Solution:
  • -

 

Solution

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

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

 Problem

(#135629)

    Problem:

  • A a Newnew SSIS Package is required within the DatawarehouseData Warehouse to refresh the report data on it'sits own
  • Solution:

 

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

(#132883)

    Problem:

  • Competency analysis is not showing the correct position information, only the first appointment record returnedreturned, resulting in older position detaildetails displaying. Solution:

 

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

(#135780)

    Problem:

  • Copy position gives a datatableDataTable error due to a missing column. Solution:

 

Solution

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

 


Dashboards

(#133268)

[Dashboards]

Problem:Indicate Therewhen isthe dashboard has no data (#133268)

Problem

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

 

Solution

  • Created a Script that returnreturns the Data Integrity data

 


Learning Management

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

Problem

(#135799)

    Problem:

  • The Trainingtraining matrix page does not load at certain times when the server is busy Solution:

 

Solution

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

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

 Problem

(#132285)

    Problem:

  • The weights in a cycle can exceed 100
  • Solution:

 

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

(#135574)

    Problem:

  • No new login logs are viewable on the report builder
  • Solution:

 

Solution

  • Fixed backend User reference

 


Tenant Management

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

Issue 1

(#135653)Problem

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:

 

Solution

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

Issue 2

(#135653)Problem

Problem:

  • When a new tenant is createdcreated, it creates a support user,user and a few otherothers as well,well. thisThis makes use of the bulk user import functionality, as this now do requirerequires an import idID, itwhich failed to create users
  • Solution:

 

Solution

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

 


Caching

Employee appointment/termination error (#134571)

CachingProblem

(#134571)

    Problem:

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

 

Solution

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

    times.

 


Date Handling

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

Problem

(#135450)

    Problem:

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

 

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

(#135972)

    Problem:

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

 

Solution

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