Version 9.1.180 (1 September 2025)
SigniChat
(#135973)
Problem
Text are displayed with encoding such as & and for new lines
Solution
Implement a new sanitize tag helper which sanitizes the text and display the output as needed
(#135988)
Problem: When a message is received from another user the notification dot is being toggled to display but once another one is received it removes itself Solution: Implement fix to extend the logic that if a message is received and dot is already shown do not remove
(#135961)
Problem: When the configuration type is everyone can create a new discussion a user still has no access, query only caters for the people group Solution: Implement change to allow for a check to the type of everyone or people group joined if user is included
(#135968)
Problem: Phrase reads that everyone can start a discussion Solution: Change wording to rather read that anyone can start a discussion
(#135935)
Problem: When a message is received and the user have the portal open the count is not incremented as the content is not rendered in if the user had not unread messages Solution: Change the html syntax to still render in the element as well as update the wording being displayed
(#135926)
Problem: Some translations where not updated to new file format Solution: Updated the missing file formats on some labels and headings
(#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
(#135313)
Problem: Solution: Implement a new singleton pattern to load the communication portal configuration, and 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
(#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 have their chat portal open, and receive a message, a red dot indication is pulsing in the banner, but the user do have the chat already open Solution: Implement change to validate id the portal is open or not and toggle the new notification depending on the state of the modal
(#135449)
Problem: The discussion name value shows valued for & Solution: Implement change to display the raw html name of discussion
(#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
(#135444)
Problem: When the user have no permission to create a new group discussion, the other item are pushed of at the bottom Solution: Decrease the position where it is being displayed at, so that both items render in accordance to when only one do render
(#135326)
Problem: New translation file has been added, and not all places have been updated Solution: Update portal to make use of new translations Add check to show total unread count and only if there is any unread messages
Notifications
(#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
(#135313)
Problem: Communication portal is currently open to any client with any one being able to create new chats Solution: Implement a new setup where each client can configure for there ruleset if discussions should be enabled or not, with addition new setting to allow for people groups or everyone to start new chats
(#135326)
Problem: Currently the modal is opened inside a wrapper, which causes it to not behave like a modal, and needing 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 vlaue be received back from the v8 iframe. Give option to the user to create new chat or group chat regarding the eLearning pathway content.
Performance Management
(#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 validation check accommodate the 2 cases where the check is needed.
Report Builder
(#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 that any jquery or convertions being done are reapplied with the current clients 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, 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
(#135407)
**Problem:** When a login URL is used the ruleset code forms part of the URL many users bookmark. When the ruleset code is change 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 the users will using the url will be redirect to the default theme for the ruleset. The user chaning 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 previouse theme URL will automatically be redirected to the default theme key for the ruleset When the rulesetcode is changes, 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 display a message to the user that the URL is not valid and they should contact there system administrator
Imports
(#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 import with a new start date and position with the same end date as the appointment, it is processed as an new appointment causing all new appointment to fail to create. Solution: When retrieving the position code from the existing appointments include all appointment 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.
(#135776)
Problem: When an integration form opens the details are populated without the client-id, as the client-id is both shared with the same id value between payroll and powershell. Solution: Implement check as to which form is currently open and populate the client id based on that check
(#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 UserImportStaging constructor and updated related unit tests. Also added ProcessPayroll job configuration to appsettings.Development.json.
(#135772)
Problem: A new setting has been implemented to make use of for pay-space payroll connector, but within power shell this control does not exists and therefor causes an error Solution: Implement a null check to ensure the control first exists
(#134861)
Problem: When a user pulls the Import validation report, the users Start Date of Position is used to populate the StartDateInGroup Solution: Alter the check to make use of the correct field needed
(#134132)
Problem: Start Date in company is not mapped from Payspace Solution: Map the employment date from employee status API as the Start Date In Company for import
People Management
(#135931)
Problem: The default list of avatar images are 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 displayed. Solution: Always include the default avatar images onto the list of available images to choose from. No longer fallback to Ruleset 1 content but use the existing defaults avatar images folder.
(#135597)
Problem: The Load More button on the People Management card view overlaps user cards when the view port is certain resolution. Solution: Removed the height specificity on the card container causing load more button to overlap the actual cards.
(#135875)
Problem: The people group user list timesout 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 organization path information directly and sets a longer command timeout for large queries. ### Query refactoring and optimization * 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.
(#134835)
Problem: Images of filetype that are not JPG are not saving when selecting and saving 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
(#135774)
Problem: Language options are shown in duplicate on Login screen. Solution: Added safegaurd to the language publishing to not add the language to the cultures cache if it already exists.
(#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
(#135915)
Problem: The Promotion Status calculations are not calculated correctly within TermMarks Solution: Adjusted script that will calculate the TermMarks more accurately
(#125159)
Problem: There are no emails that returns the Deploy SSIS Packages results Solution: Created SQL Script C_03610_99999_GenerateDWHDeployJobResultsToBeEmailed that will return the SSIS Deployment Packages results
(#135282)
Problem: - There is no between Users and LearnerRecords within ReportBuilder - There is not notification regarding if the Deployed SSIS Packages ran successfully Solution: - Added Join between Users and LearnerRecords - Added Task to execute SQL Job that will email the SSIS Package run results
(#135629)
Problem: a New SSIS Package is required within the Datawarehouse to refresh the report data on it's own Solution: Created new SSIS Package LearningManagementReport_ETL THAT contains the required tasks to refresh school report data
Job Profiler
(#132883)
Problem: Competency analysis not showing the correct position information, only first appointment record returned resulting in older position detail displaying. Solution: Order the appointments to ensure that latest appointment information is selected to get the current position information.
(#135780)
Problem: Copy position gives a datatable error due to missing column. Solution: Refresh the position tab instead of manually adding a datattable row which can be unstable if the rows ever change.
Dashboards
(#133268)
Problem: There is no script that will do a Data Integrity check for current V10 Dashboards Solution: Created Script that return the Data Integrity data
Learning Management
(#135799)
Problem: Training matrix page does not load at certain times when server is busy Solution: Replace long running query to populate job profiles dropdown with ListJobProfiles
(#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.
(#135574)
Problem: No new login logs are viewable on the report builder Solution: Fixed backend User reference
Tenant Management
(#135653)
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 notification with the ruleset
(#135653)
Problem: When a new tenant is created it creates a support user, and a few other as well, this makes use of the bulk user import functionality, as this now do require an import id it failed to create users Solution: Parse in the import id to create the new users to proceed with tenant setup
Caching
(#134571)
Problem: When a signed in user, terminates a user or adds a new user, the cache/roles are cleared and re-materialized , thus causing authentication issues which throws a we're sorry screen Solution: Extend the duration attempt to wait as well as increase retry count to 2 times,
Date Handling
(#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.
(#135972)
Problem: The way the date formats was 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 ::brefore, rather draw span over the date input so that the correct date format is displayed.