Skip to main content
From version 6.1.20 onwards, Atoti Sign-Off version numbers are aligned with the Atoti Java SDK. Previously, Atoti Sign-Off used its own versioning scheme which had moved ahead of the Atoti Java SDK. The last release under the old scheme was Atoti Sign-Off 6.2.1.Although the version number appears to go backwards, this is not a rollback or downgrade. It reflects the realignment with the Atoti Java SDK release track.
For a brief overview of the changes, see our Release notes. For information on upgrading from previous versions, see the Migration guide.
2026-07-09

Changed

  • SO-1110: Loading sign-off definitions no longer scans the workflow audit-log tables once per definition. Their history is now bulk-loaded for the required keys in a bounded number of queries, significantly improving performance when many definitions exist.
  • SO-1122: The return type of ISignOffWorkflowStatusActionManager::getPendingApprovalTaskStatuses changed from a List<String> to a Map<String, List<String>> keyed by workflow type, because the pending-approval status differs per workflow. If you have implemented your own statuses you will need to change the type. See the migration guide for details.
  • PIVOT-14106 Improved performance of audit history filtering.

Fixed

  • LIM-2319: Fixed notifications breaking after running for several hours, where streaming the stored notifications for a new subscriber while another thread published could fail with IllegalStateException: Accept exceeded fixed size. The notification store is now backed by a concurrent map.
  • SO-1122: Fixed the “Pending Approval” column on the Sign-Off Task Configuration screen always showing 0 for tasks created with the simple workflow. The simple workflow’s awaiting-approval state is INITIATED, but the count only considered PENDING (the awaiting-approval state for four-eyes workflows). Simple-workflow tasks awaiting approval are now counted correctly.
2026-06-18

Fixed

  • SO-1121: Task-only approvers (users in the workflow instance approvers group but not in the definition candidateGroups) no longer receive an HTTP 403 on the SSE subscribe endpoint (GET /sign-off/rest/v2/sse/subscribe) or when opening the process task approval window. The dashboard now loads correctly for users who can approve tasks but do not manage definitions.
  • 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 with their stack trace and the execution is marked FAILED.
  • SO-1116: Adjustment audit records written by the status poller stored the executionId in the definitionId field, breaking definition-based audit queries and correlation. The definitionId is now persisted correctly.
2026-06-17

Added

  • SO-1118: POST /sign-off/rest/v2/adjustments and POST /sign-off/rest/v2/adjustment now return the identifiers of the created adjustments (id, executionId, and definitionId), in request order, so that clients can track the execution status of each adjustment.

Changed

  • SO-1118: IAdjustmentService::createAdjustment and IAdjustmentService::createAdjustments now return the identifiers of the created adjustments instead of void.

Fixed

  • SO-1118: ISignOffAdjustmentExecutionService::requestAdjustmentExecutionsAndPersistDefinitions returned an empty list instead of the created adjustment executions.
2026-05-28

Changed

Group IDs of dependencies have changed and must be updated. See the migration guide for more details.

Fixed

  • SO-1082: Fixed SignOff task getting stuck at EXPORTING due to a race condition where the export status poller could check the workflow instance state before the export details were persisted.
  • SO-1090: JPA rollbacks not being handled correctly.
  • SO-1111 Dashboard: Fixed the dashboard becoming unusable when the Sign-off server is unavailable.
  • SO-1112 Dashboard: Fixed widget type switching not working in the adjustment analysis dashboard.