For a brief overview of the changes, see our Release notes.
For information on upgrading from previous versions, see the
Migration guide.
2026-09-03
Changed
- SO-1117: Sign-Off dashboards no longer queue behind a single global reload when many task actions happen at once.
- SO-1110: Loading sign-off definitions no longer scans the workflow audit-log tables once per definition, improving performance when many definitions exist.
- SO-1138: Loading sign-off definitions no longer issues Activiti workflow queries once per definition, improving the load time of the definition and task screens when many definitions exist.
- SO-1122: The return type of
ISignOffWorkflowStatusActionManager::getPendingApprovalTaskStatuseschanged fromList<String>toMap<String, List<String>>keyed by workflow type, since pending-approval status differs per workflow; see the migration guide for details. - PIVOT-14093:
AStatusService#addRequest(String, AStatusTask)now takes aSupplier<AStatusTask>instead of a task instance; existing callers should wrap construction in a lambda, for exampleaddRequest(pId, () -> new MyStatusTask(...)). - PIVOT-14106: Improved performance of audit history filtering.
- PIVOT-14310: The dashboard and notification service SSE subscriptions now send
X-Accel-Buffering: noandCache-Control: no-cache, no-transformheaders so reverse proxies stream updates immediately instead of buffering them.
Deprecated
- PIVOT-14093:
AStatusTask#run()is deprecated since 6.2.1 in favor ofexecute(); existing overrides ofrun()still work but log a warning the first time such a task is scheduled.
Removed
- PIVOT-14667: The
Dependenciespage has been removed from the release documentation because the dependencies are now aligned with the Atoti Server version. See the Atoti Server dependencies page for the underlying Spring Boot and Java versions.
Fixed
- PIVOT-14093: The export status poller no longer cancels itself while a sign-off is
APPROVING, which previously stranded the sign-off atEXPORTINGinstead of letting it complete. - PIVOT-14093: A poller could leak past a rejected-and-re-exported sign-off and apply transitions concurrently with its replacement, causing data races; pollers are now stopped when their sign-off is rejected and re-exported.
- PIVOT-14093: Cancelling a poller mid-transition could leave the audit log and database inconsistent; cancellation now waits for an in-flight transition to finish instead of interrupting it.
- PIVOT-14093: Audit records for a completed workflow transition could store pre-transition data instead of what was actually persisted; they now reflect the transition’s actual result.
- PIVOT-14093: Attachment and comment variables could be silently dropped from the audit history under heavy load when their timestamp drifted ahead of Activiti’s clock; it is now taken from Activiti’s clock.
- SO-1116: Adjustment audit records written by the status poller stored the
executionIdin thedefinitionIdfield, breaking definition-based audit queries and correlation; thedefinitionIdis now persisted correctly. - SO-1116: The adjustment status poller could abandon an execution in a non-terminal state (e.g.
REQUESTED) after a poll failure; failures are now retried, marking the executionFAILEDafter 5 consecutive failures. - SO-1116: The export status poller could abandon a repeatedly-failing poll silently, leaving the sign-off stuck at
EXPORTING; poll failures are now retried, marking the sign-offEXPORT_FAILEDafter 5 consecutive failures. - SO-1116: A ~500ms race between the datastore cache update and the bulk publish could leave adjustment status stuck at its initial value; the update now retries briefly to bridge the race.
- SO-1119: Adjustment execution and deletion failures were silently swallowed, leaving the execution stuck in a non-terminal status (
PENDING/DELETING); uncaught exceptions are now logged and the execution is markedFAILED. - SO-1114: Creating or updating a sign-off definition as a user outside the definition’s candidate group returned HTTP 500 instead of 403 Forbidden; the access check now correctly returns 403.
- SO-1121: Task-only approvers (in the workflow’s approvers group but not the definition’s
candidateGroups) no longer receive an HTTP 403 on the SSE subscribe endpoint or the task approval window. - SO-1122: The “Pending Approval” column on the Sign-Off Task Configuration screen always showed
0for simple-workflow tasks; awaiting-approval tasks are now counted correctly regardless of workflow type. - LIM-2319: Notifications could break after running for several hours, when a new subscriber’s stream raced a publish and failed with
IllegalStateException; the notification store is now backed by a concurrent map. - SO-1144: Transactional CRUD operations no longer spawn many new threads when viewing screens in realtime mode; the maximum thread count is now sized by the
sign-off.application.sse-executor-pool-sizeproperty (default8). - SO-1144: Opening many screens at the same time no longer leaves some of them without their initial data until the page is reloaded.
- SO-1115: Adjustments could show an outdated status (e.g.
REQUESTEDafterEXECUTED) on the task screen and in API responses; the current execution version is now selected by its live range.
2026-07-27
This release does not ship any changes.