Skip to main content
For user-facing changes, see the Release notes. For information on upgrading from previous versions, see the Migration guide.
2026-09-03

Changed

  • PIVOT-14310: The incident SSE subscription (GET /limits/sse/v2/incidents/subscribe/filter) 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 incident and notification updates only when the stream ends.

Removed

  • PIVOT-14667: The Dependencies page 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

  • LIM-2278: Fixed limit evaluation considering only the default member for scopes on a slicing hierarchy (no AllMember level); every matching member, including multi-level Total subtotals, is now evaluated.
  • LIM-2346: Fixed a limit defined at the (Total) of a multi-level hierarchy’s first level (for example a dynamic tenor hierarchy) not applying to the Total row, which showed no limit status.
  • LIM-2352: Fixed the Audit Screen reporting a spurious change (for example 100 → 100) when an unchanged numeric value was deserialized as a different numeric type, such as Integer and Double.
  • LIM-2370: Querying a limit KPI (Goal or Status) on a recently created calculated measure would throw an IllegalArgumentException: Unknown measure contributors.COUNT.
  • LIM-2171: Fixed Limit Structures with no Limits minting a duplicate Scope Value ID instead of reusing the existing “N/A” ID, which could crash the scope cache with a duplicate-key error.
  • LIM-2366: Fixed the log filling with ERROR-level stack traces for every AccessDeniedException, which now logs at DEBUG while other exceptions still log at ERROR.
  • LIM-2365: Fixed the Mismatch for scope locations error not naming which limits caused a limit structure to fail loading; it now names the structure, the two limits, and the missing level.
  • LIM-2428: Fixed querying a limit KPI (Goal or Status) throwing a NullPointerException when the as-of date fell outside the date range of the limits covering the queried location.
  • LIM-2355: Fixed the Audit Screen showing no entry for a breach review or other workflow-engine task, leaving only the object’s creation entry.
  • LIM-2388: Fixed approving an update or deletion of a limit with an existing attachment failing with an error, which could leave Atoti Limits unable to restart.
  • LIM-2358: Fixed workflow buttons (“Approve”, “Reject”, “Review breach”) being enabled without the required permission, showing an “Access Forbidden” error on click instead of being disabled.
2026-07-27

Added

  • LIM-2228: Added a first-class Atoti Limits plugin for the Atoti Python SDK (atoti-limits), replacing the existing Atoti Limits Python extension as the way to connect an Atoti Python session to a running Atoti Limits server.
  • LIM-2350: Fixed a limit’s ID being reused by a new limit created with the same scope after a restart, which merged their audit histories. New limits no longer reuse a soft-deleted limit’s ID, so their audit histories stay separate.

Fixed

  • LIM-2364: Fixed creating a limit structure on a recently created calculated measure failing validation with Measure ... not in the list of measures for the cube.
  • LIM-2348: Fixed the audit history and decision buttons failing to open for expired, deleted-and-recreated, or fully-approved six-eyes limits. Those steps now simply show no available actions.