Version 9.1.148.1 (Support Release - 26 February 2025) People Management Error after appointing a new person (#128545) Problem When appointing a new user, the people groups are not busted in time of the profile page load due to eventual consistency Solution Move the busting to the job profiler service to bust the masterialised cache in the service first and then all the rest of the services. Termination reasons (#128535) When terminating an employee, choosing a termination reason and then deactivating that reason in MasterData should no longer be an option when terminating another user. Only active termination reasons should be available as options The deactivated reason should still be on the appointment history record.   Performance Management Additional API End Point (#128359) Problem Request to make additional PM endpoint accessible via Api and include review year name on overall scores endpoint   Solution Added Reviewyear name to ListUsersOverallScores and made ListReviewYears accessible via API.   Learning Management No error detail if absent notification cannot be sent to Parent/Guardian (#123832) Problem No indication anything is wrong, only an empty cell within the columns email, name and surname Solution Updated LearningManagementExportService to handle cases where recipient details (email, name, surname) might be missing using localized strings. Training Interventions Duplicating on Marksheet (#128548) Problem When viewing the mark sheet, duplicate training interventions and mark setups are shown when only 1 subject and training intervention have been linked. The problem is that when a class subject or class training intervention is deleted, the query does not filter out the deleted records. Solution Change the select mark sheet setup query to exclude deleted class training interventions and class subjects. Nextcloud error is displayed when you open the Marksheet link on an email (#124536) Problem URL is incorrect on Angelo's Sites   Solution Added import for  generateUrl  from  ../../helpers/generateUrl . Updated  axios.get  call to use  generateUrl     Attendance and Marksheet not working anymore for Teachers (#128087) Problem The teacher can't view the Attendance list since the GPRC call doesn't allow LearningAdmins   Solution Updated the [Authorize] attribute on the  ListUsersLinkedToRoles  method in the IdentityService  class to allow access for users with either the  PeopleManagementAdministrator  or  LearningAdministrator  roles. Previously, only users with the  PeopleManagementAdministrator role could access this method   Identity and Authorisation People Connect Slowness in APAC (#128284) Problem For the SSO from V8 to V9, when the identity cookie has expired, a "Too_Many_Redirects" error is shown, and the browser session is terminated. Users are then unable to continue to V9 until they delete their cookies. There are 2 problems here: This is the iterative error that happens on the error page. When the 1st failure happens, the error page is loaded. The error page uses the same base layout as other pages. It tries to access resources/information that requires an authenticated user, but since that was the initial cause of failure, the error page breaks and gets redirected to the error page from start again, which continues to fail until the browser forces a discontinuation. This is the initial failure, which is that the SSO redirect fails because MVC sees the user identity (from the webmvc) token as authenticated / still valid, but according to Identity. Api itself The user token has expired. The identity is never recreated until the cookies are physically deleted.   Solution: Added unauthenticated try catches to the base layout to handle situations where the error page is loaded without a user being authenticated. This at least prevents the browser discontinuation and displays the error page, we will need to look at improving this handling in future. Made modifications to how the SingleSignOn token is handled by always expiring and then deleting the MVC cookies and forcing the re-authentication with Identity through use of an additional ChallengeCompleted flag. This then checks whether it is a new SSO request and re-initializes the identity auth-flow regardless of whether the Identity User is seen as authenticated or not.   Imports There is an overlapping position error when terminating one employee and appointing another in the position in the same file (#126495) Problem When importing for a position that does not exist in the system, the terminated record and transfer of the terminated record are handled as new appointments. When comparing the overlap, the terminated appointment's end date was not considered, thus causing the transfer to overlap the terminated record.   Solution Change the overlap check Add a unit test for the scenario   Notifications Zoom Connect Credentials not persisting (#128180) Problem Was calling an async method while not awaiting   Solution Added await to the call