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-08-13

Changed

  • SO-1138: Opening the Definitions, Tasks and Task Configuration screens no longer queries the workflow engine once per definition and per task. The running workflow instances, their workflow actions, their variables, their current tasks, their audit history and the adjustment executions are now resolved upfront in a bounded number of queries, significantly improving screen loading times when the databases are reached over the network.
  • PIVOT-14310: The dashboard SSE subscription (GET /sign-off/rest/v2/sse/subscribe) and the notification service SSE subscription now carry X-Accel-Buffering: no and Cache-Control: no-cache, no-transform so that reverse proxies do not buffer or compress the event stream. A buffering proxy delivers the sign-off and notification updates only when the stream ends.

Fixed

  • SO-1144: Transactional CRUD operations no longer spawn many new threads when viewing the screens in realtime mode. The max number of threads are sized by the new sign-off.application.sse-executor-pool-size property (default 8).
  • SO-1144: Opening many screens at the same time no longer leaves some of them without their initial data until the page is reloaded.
2026-07-10

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-09-07

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 notes 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.
2026-04-16

Fixed

  • SO-1073: Memory leak issue when performing bulk adjustment executions that caused increased memory usage over time.
  • SO-1089: Filtering by integers when creating adjustment dashboards.
2026-01-23

Added

  • SO-1005: Added new BulkAdjustmentExecutor in the application server for processing bulk adjustment execution logic.
  • SO-1006: Added a new BulkTaskComplete command that is used to execute Activiti tasks in bulk.
  • SO-1006: Added a new method ISignOffAdjustmentExecutionService::requestAdjustmentExecutionsAndPersistDefinitions to request adjustment executions in bulk.
  • SO-1006: Added a new method IAdjustmentsDefinitionCacheService::saveAll to save adjustment definitions in bulk to the datastore cache.
  • SO-1006: Added a new method IAdjustmentsExecutionCacheService::saveAll to save adjustment executions in bulk to the datastore cache.
  • SO-1006: Added a new method IAdjustmentExecutionService::bulkExecute and a corresponding REST endpoint /adjustments/bulk-execute on the application server to execute adjustments in bulk on the application server.
  • SO-1006: Added a new method ISignOffAdjustmentValidator::validateSignOffAdjustmentsCreation to validate adjustments in bulk when they’re created.
  • SO-1006: Added a new method ISignOffAdjustmentValidator::validateSignOffAdjustmentsUpdate to validate adjustments in bulk when they’re updated.
  • SO-1006: Added a new method IKeyedObjectService::createAll to create persistent objects in bulk.
  • SO-1006: Added a new method IAuditLogService::saveUserTaskRecords to save user task records in bulk.
  • SO-1006: Added a new method IAuditLogService::saveProcessRecords to save process records in bulk.
  • SO-1013: Added the ability to save multiple adjustment types at once.
  • SO-1020: Added optional query parameter objectTypes to the Server-Sent Events (SSE) subscription endpoint to allow for filtering events by object types.
  • SO-1020: Added new API methods in ISseEmitterService to broadcast task and adjustment events.
  • SO-1020: Added new API method ISignOffTaskService::getFilteredTasks to retrieve tasks that match specified field conditions.
  • SO-1020: Added new REST endpoint /sign-off/rest/v2/tasks/filter to retrieve tasks matching specified definition criteria.
  • SO-1020: Added new API methods in ISignOffTask to get definition information associated with the task.
  • SO-1030: Added performance improvements that reduce the time to initiate and fetch tasks as the application data grows.
  • SO-1060: Added properties to configure custom statuses for definitions and tasks. The properties are used in DefaultSignOffWorkflowStatusActionManager.

Changed

  • SO-913: Moved all tests from the signoff-starter module to a dedicated test module signoff-application-tests to reduce migration efforts and improve maintainability.
  • SO-952: The default history level of activiti has changed from full to audit.
  • SO-1002: New streamlined task and adjustment processing flow within the dashboard.
  • SO-1020: Updated endpoints to subscribe and unsubscribe to Server-Sent Events (SSE) to remove /definition/ from the URL path.
  • SO-1020: Renamed ISseEmitterService API methods subscribeToDefinitions and unsubscribeToDefinitions to subscribe and unsubscribe respectively.
  • SO-1020: Renamed SignOffDefinitionSseController to SignOffSseController.
  • SO-1020: Renamed SseDefinitionEmitter to SignOffSseEmitter.
  • SO-1031: Upgraded Atoti Server to version 6.1.15.
  • SO-1031: Upgraded Common Parent POM and Common Dependencies BOM to version 2.4.0.
  • SO-1034: Released code is now formatted using the Spotless maven plugin with the Palantir Java Format.
  • SO-1044: Adjustments are now only allowed in the cube if there is a selected task and if the user is authorized to make adjustments.

Fixed

  • SO-961: Fixed an issue where instances of the Sign-Off server running longer than 12 hours would fail to connect to the application server.
  • SO-1001: Fixed an issue where users could not access adjustment tasks if they did not have permission to interact with the associated definition’s workflow.
  • SO-1017: Fixed an issue in the task definition creation screen where an error is sometimes thrown for slow-loading cubes.
  • SO-1019: Fixed an issue in the tasks screen where the validity dates of an adjustment were not shown in real-time mode.
  • SO-1024: Fixed an issue where task histories weren’t being returned in the audit after the task was restarted.
  • SO-1030: Fixed an issue where initiating tasks became slower as more tasks were created.
  • SO-1033: Fixed an issue where tasks could not be initiated on a definition’s end date.
  • SO-1057: Fixed an issue where hard-coded completion statuses were used for tasks instead of the ones configured on the server.
  • SO-1066: Fixed an issue where invalid workflow actions were being displayed in the process task drawer.