For user-facing changes, see the Release notes.
For information on upgrading from previous versions, see the
Migration guide.
2026-09-30
Follow this link to download the zipped distribution files for:
- UI source code
- UI build
- Source files to build the module
- Maven repository required to build the project and run the tests.
Added
- LIM-2432: Added the
limits.scope.allow-multiple-not-in-limitsproperty. Setting it tofalseallows at most one “NOT IN” scoped limit per structure at a time. Defaults totrue, preserving prior behavior.
Changed
- LIM-2361: The
ApproveandRejectactions of the default Six-Eyes limit approval workflow now include aCommentfield, as in the Sign-off workflows.
Deprecated
- PIVOT-15188:
IncidentEvaluator.evaluateIncidentswithout measure names is deprecated. It reads the KPI value from the limit’s measure, which is wrong for aTOTAL EXCEPTorTOTAL EQUALSscope. Use the overload that takes the status and value measure names selected by the MDX query.
Removed
- LIM-2438: The
limits-commonMaven module - which store duplicate classes shared by both Atoti Limits and the connected server - has been removed. Its classes, in thecom.activeviam.limits.core.sharedpackages, now belong tolimits-activeviam, while the connected Atoti Server keeps its own copies inlimits-integration-common. Package and class names are unchanged. See the Migration guide. - PIVOT-14850: Removed support for connecting to Atoti Server 6.0.x and 6.0.x-sb3. The
limits-auto-config-60,limits-auto-config-60-sb3,limits-atoti-server-60, andlimits-atoti-server-60-sb3artifacts have been deleted.
Fixed
- LIM-2346: Fixed a limit scoped at a
(Total)of a slicing hierarchy never being applied, leaving those rows with no limit status. - LIM-2346: Fixed the scheduled evaluation never raising an incident for a limit scoped at the
(Total)of the first level of a slicing hierarchy, whether the scope uses theAllMemberor an aggregated operator (TOTAL EQUALS,TOTAL EXCEPT). - LIM-2356: When a six-eyes workflow update or deletion is approved, any earlier workflow still active for that limit is now cancelled; the cancelled workflow is marked as superseded and keeps its audit history, so the limit’s original creation request remains visible in the audit trail.
- LIM-2442: A scheduled evaluation with limit failures sent the same
Limits Evaluation Completednotification as a successful run, so failures went unnoticed outside the server log. The notification now reports the number of errors and its severity is raised to high when there were errors. - LIM-2432: Creating limits on the same structure with overlapping dates and overlapping “for each in” scopes - for example a limit on Book in
[A, B]and a limit on Book in[B, C]- would have passed but should not have been allowed. - LIM-2433: Fixed a limit scoped with
(Total) of selectedor(Total) excluding selectedon a multi-level hierarchy being evaluated over every member of the level. The members the scope selects or excludes were ignored, so a(Total) excludinglimit was evaluated against the unfiltered total and breached on it; such scopes now aggregate only the members they select. - PIVOT-15188: Evaluating a limit with a
TOTAL EXCEPTscope failed with aNullPointerExceptionand raised no incident. Such incidents now report the exposure without the excluded members.
Security
2026-09-03
Follow this link
to download the zipped distribution files for:
- UI source code
- UI build
- Source files to build the module
- Maven repository required to build the project and run the tests.
Added
- PIVOT-14095: Added an opt-in security filter chain for the Atoti Limits REST endpoints of a Connected Server. Setting
limits.autoconfiguration.security.enabledtotrueregisters aSecurityFilterChainbuilt with the Connected Server’sMachineToMachineSecurityDslthat accepts any authenticated request, so applications no longer need to write their own chain for these endpoints. The property isfalseby default and leaves existing applications unchanged. See the Auto-configuration properties reference.
Changed
- PIVOT-14310: The incident SSE subscription (
GET /limits/sse/v2/incidents/subscribe/filter) and the notification service SSE subscription now carryX-Accel-Buffering: noandCache-Control: no-cache, no-transformso 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
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
- 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 asIntegerandDouble. - LIM-2357: Fixed the connection request from an Atoti server timing out when the limits data load is slow, which made the server retry and pile up blocked threads on the Limits server. The limits data load now runs in the background, one load at a time per server, and the connection request returns immediately.
- 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 everyAccessDeniedException, which now logs atDEBUGwhile other exceptions still log atERROR. - LIM-2365: Fixed the
Mismatch for scope locationserror 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
NullPointerExceptionwhen the as-of date fell outside the date range of the limits covering the queried location. - LIM-2355: The Audit Screen showed no entry for a breach review, or for any other workflow task completed on the new workflow engine, leaving only the object’s creation entry.
- LIM-2357: Saving a limit took several minutes for a user with scope restrictions. The permission check loaded the whole limit inventory and re-resolved the user’s accessible scopes for every limit in it; it now looks up only the submitted limit and reuses the resolved scopes until a scope is added or removed. An existing limit outside the caller’s scope is also no longer mistaken for a new limit, so updating it requires the update permission rather than the creation one.
- LIM-2358: Workflow buttons - such as “Approve”, “Reject” and “Review breach” - were enabled for users without permission to approve/reject limits or process incidents, which failed with an “Access Forbidden” error on click instead of being disabled.
- LIM-2388: Approving an update or deletion of a limit that already had an attachment failed with an error and could leave Atoti Limits unable to restart.
- LIM-2439: Deleting a limit did not stop its KPIs from being evaluated on the connected Atoti Server until that server was restarted.
- PIVOT-14979: Uploading a CSV file that creates a large number of limits failed with a database parameter limit error.
- PIVOT-15169: When the two Six-Eyes approvers entered different comments, the Audit Screen showed the second comment as a change of the first one. Values entered in a workflow action’s input fields, such as
Comment, are now shown as entered on each task. - PIVOT-15170: When the two Six-Eyes approvers entered the same comment, the second approver’s comment was missing from the limit’s history and from the Audit Screen.
Security
2026-07-27
Follow this link
to download the zipped distribution files for:
- UI source code
- UI build
- Source files to build the module
- Maven repository required to build the project and run the tests.
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.