Version 9.1.260.2 (15 October 2026)
Event Scheduling
Fix event scheduling calendar infinite-height scrolling (#157675)
Problem
- When zooming in on the calendar (or on smaller screens), the calendar view would sometimes go into infinite vertical height growth.
Solution
- Decouple the calendar’s container height from its internal content sizing to prevent resize feedback loops while preserving responsive layouts.
Imports
Implement robust bulk populate when retrieving existing job profiles based on externalid, job code and title (#156374)
Problem
- When passing parameters by position, each parameter can only be referenced once at Dapper within ListJobProfilesByIdentifiersQuery
Solution
- Refactor the ListJobProfilesByIdentifiersQueryHandler to improve how job profile identifiers are loaded into the database for querying. The main change is replacing the previous string concatenation approach with a more robust and efficient use of a DataTable and SqlBulkCopy, which should improve performance and security when handling large batches of identifiers.
Performance Management
Resolved Action Plan integration event not triggering (#157414)
Problem
- The integration consumer event was not defined; it was never executed to send a request to create a PDP within V8
Solution
- Added missing definition and consumer to trigger
System Access
Prevent Redis subscription delays from blocking authentication (#157410)
Problem
- The Redis logout-notification listener subscribed synchronously in its constructor. When Redis was slow, or the subscription stalled, authentication requests queued behind the shared service's construction lock.
Solution
- Start the subscription asynchronously in a hosted background service so requests can resolve the service without waiting for Redis.
- Log subscription failures through `ISignifyLogger` and retry after five seconds. Remove the previous handler before retrying to avoid duplicate notifications.
- Only report the subscription as available after it succeeds. Ignore a late completion if the connection failed or shutdown started while subscribing.
- Mark the listener unavailable and abort tracked SignalR connections when its subscription connection fails. Await subscription cleanup during shutdown and log cleanup failures.