# Version 9.1.248 (17 August 2026)

#### **Notifications**

##### Update materialised birthday column to Alias 'Birthday', else query can't find the column (#153450)

**Problem**

- Manager Birthdays and Work Anniversaries email template not firing on scheduled jobs

**Solution**

- Update the materialised birthday column to Alias 'Birthday', else query can't find the column

##### Implement end-of-service warning notifications for month and day period warnings (#138602)

**Problem**

- The Line Manager is not warned on user is ending their service soon

**Solution**

- Introduced new functionality to support manager notifications about subordinates' upcoming end of service, both for short-term (days) and longer-term (months) periods.
- It adds new event and recipient codes, extends the data model and queries, and updates the notification service to deliver these new types of notifications.
- Additionally, it introduces a bi-weekly schedule type and improves code structure by refactoring repeated logic.

---

#### **Performance Management**

##### Fixing mdb script reference (#153492)

**Problem**

- Models do not open because the MDB script reference is incorrect.

**Solution**

- Fixed the MDB script reference. Modals open as expected again.

##### Resolved issue where Overall Final Score label mappings were not showing (#153405)

**Problem**

- Score label mappings for Overall Final Score were not showing

**Solution**

- Fixed condition check that determines whether to display for overall final score

---

#### **Job Management**

##### Insert missing UserCompanyDates records during user import (#146950)

**Problem**

- `ImportUserDatesAsync` (used by the JobProfiler user import) only ever `UPDATE`d existing `JobProfiler.UserCompanyDates` rows. Since the materialisation rework, `UserCompanyDates` is no longer created as part of the User aggregate, so newly imported users never got a `UserCompanyDates` row created for them — their start dates were silently dropped.

**Solution**

- Added an `INSERT INTO JobProfiler.UserCompanyDates` step (before the existing `UPDATE`) that creates a row for any imported user matched by username who doesn't already have one for that ruleset, using the same create-vs-update semantics as `UserDomainService.UpdateUserCompanyDatesIfRequiredAsync`.
- Replaced the row-by-row string-concatenated `INSERT` loop used to populate the `#UserDates` temp table with a `SqlBulkCopy`, matching the pattern already used elsewhere in `UserQueries.cs` (e.g. `ListUserOrgPathsAsync`). This also removes the manual string escaping that was needed for the old concatenation approach.

---

#### **Communication Portal**

##### Resolved archived items not shown when collapsed (#151781)

**Problem**

- Archived items can not be seen when the system alert has elapsed

**Solution**

- Add a change to the query that, when searching archived, ignores the dates of the system alert to be shown

##### Resolved flatpickr that caused errors on communication portal banners (#153083)

**Problem**

- flatpickr injects a hidden type="number" minute input with step="5". If the banner datetime has a minute like 17, browser validation marks that hidden control invalid and blocks submission before the AJAX save handler runs.

**Solution**

- Set minuteIncrement: 1, so all valid minute values 0-59 pass native validation

---

#### **Data Warehouse**

##### Added ID fields within lmEvent tables (#151434)

**Problem**

- Field EventStatusID needs to be added within lmEventSchedules
- Field AttendanceStateID needs to be added within lmEventScheduleSessions
- Field BookingStatusID needs to be added within lmEventScheduleAttendees

**Solution**

- Added the field EventStatusID within lmEventSchedules
- Added field AttendanceStateID within lmEventScheduleSessions
- Added field BookingStatusID within lmEventScheduleAttendees

##### Updated Insert step for lmEventScheduleSessions\_Staging\_V9 (#153307)

**Problem**

- Duplicate results are returned
- The #Source is not needed in Insert lmEventScheduleSessions\_Staging\_V9

**Solution**

- Added DISTINCT and removed #Source within Insert lmEventScheduleSessions\_Staging\_V9

---