Changelog 4.1
info
For a brief overview of the changes, see our Release notes.
For information on upgrading from previous versions, see the
Atoti Limits Migration Notes.
4.1.0
2025-05-28
Added
Issue Key | Details |
---|---|
LIM-1335 | Data permissions in Atoti Limits are now applied to the KPIs and calculated members created by the module in the business cube. |
LIM-1378 | Added a cache service to store structures/limits that exist on the business server to speed up evaluations. |
LIM-1403 | Atoti Limits now sends notifications to the UI when the initial data load completes, limit evaluations complete, and to users with the approval role when a FourEyes limit is created. |
LIM-1444 | The newly developed Audit Service has been added and updated the version of workflow-core . |
LIM-1488 | Moved the IAuthenticatedLimitsUserService to limits-common and created a new implementation in limits-activeviam to assist with tasks requiring unrestricted access to Atoti Limits data. |
LIM-1489 | Updated dependencies for the Common Spring Services (audit-service and notification-service ) to import the services from common-spring-services-bom . |
LIM-1494 | Added an FAQ page in the Roles and Permissions documentation. |
LIM-1511 | Updating Limit KPIs will now trigger a refresh of the application server’s data model in the UI. |
LIM-1514 | Atoti Limits has been upgraded to Atoti Server 6.1.3. The 6.0.X and 6.0.X-sb3 modules have been upgraded to use Atoti Server 6.0.18 and 6.0.18-sb3 respectively. |
LIM-1517 | sourceLimitId is now validated when temporary limits are created. This field should reference the limitId of the parent limit. |
LIM-1531 | Added a property limits.cube.scope-hierarchies-enabled that can be used to disable scope hierarchies to improve loading performance for large cardinalities of limit scopes. |
LIM-1538 | Added the Audit screen to the Atoti Limits UI. |
LIM-1565 | A new service, JfrService , has been added to enable recording Java Flight Recordings (JFRs) on the fly. |
LIM-1573 | Added properties for controlling which user roles will receive the server started and evaluation completed notifications. |
LIM-1596 | Files can now be saved as attachments at each step of the default workflows. |
LIM-1600 | Incident differences are now visible in the audit history. |
LIM-1601 | Limit incidents can be reviewed directly from an incident’s linked dashboard. |
LIM-1604 | Files saved as attachments in the workflow are now restricted to certain file types which are defined by the ‘limits.workflow.allowed-file-upload-extensions’ property |
LIM-1756 | Updated the version of common-spring-services-bom to 1.0.1 and workflow-core to 2.5.0 . |
Changed
Issue Key | Details |
---|---|
LIM-1241 | Errors that occur during the validation of limits and incidents are now reported in a more consistent format. |
LIM-1434 | Temporary limits are now grouped under their source limit. |
LIM-1456 | Atoti Limits now uses the IConfigurationService instead of REST requests to execute MDX statements when creating Atoti Limits calculated measures to improve performance. |
LIM-1469 | Server-side limit structure errors are shown alongside the offending field in the UI. |
LIM-1490 | The Inter Server event service that sends events from Atoti Limits to the connected server has been extracted into it’s own module. |
LIM-1501 | Migrated workflow-related constants to dedicated class, WorkflowConstants . |
LIM-1525 | Improved performance of limit evaluations by skipping unnecessary retrieval of limit workflow information. |
LIM-1552 | Only required folders are now fetched from the connected server when resolving calculated measures. |
LIM-1560 | Use one global CalculatedMeasuresResolver to speed up queries on limits on calculated measures. |
LIM-1592 | The APIs for validation errors and error handlers have been updated to improve error handling. See the 4.1 migration notes for the list of changes to migrate your custom errors and/or error handlers. |
LIM-1603 | Improved the default validation error messages provided by Atoti Limits to have a more consistent format and better readability. |
LIM-1635 | The logic to filter objects based on user data permissions has been changed to use the Spring @PostFilter and @PostAuthorize annotations in ILimitsRetrievalService . |
LIM-1659 | The ILimitsRestClientProvider , ILimitsRestTemplateProvider and ILimitsRestClientBuilderProvider have all been updated to return builders and now they have been renamed to ILimitsRestClientBuilder , ILimitsRestTemplateBuilder and ILimitsRestClientBuilder respectively. |
Removed
Issue Key | Details |
---|---|
LIM-1070 | Removed evaluationDate field from Incident that was redundant to the evaluationTimestamp field. |
LIM-1407 | limits-activeviam no longer has a dependency on limits-integration-common . Classes previously imported from limits-integration-common are now imported from limits-common . |
LIM-1493 | Removed default value for property limits.autoconfiguration.content-service.limits-created-measures-owners . This property should be auto-configured, and if it is not then it should be explicitly set in the application configuration. |
LIM-1591 | Removed the deprecated RemoteCubeRestService as calculated measures are now fetched directly from the application server. |
LIM-1581 | The limits-activeviam source code has been removed from the released artifacts in an effort to ease client migrations. The javadoc sources are still available for download. |
LIM-1629 | Removed deprecated code for Basic authentication in favor of using JWT authentication as the default for machine-to-machine communication. |
LIM-1634 | Removed the LimitsPermissionOverrideUtil class and replaced its usage with queries that set LimitsQueryPayload::checkuserPermissions to false . |
LIM-1636 | Removed the runWithAuthorization and decodeBase64EncodedAuthentication methods from IAuthenticatedLimitsUserService that are no longer used since the removal of the Basic authentication logic. |
Fixed
Issue Key | Details |
---|---|
LIM-1468 | Fixed an issue where trying to create a limit structure with the same key fields as an existing limit structure would be treated as an update. |
LIM-1483 | Fixed an issue where KPIs were not refreshed after restarting Atoti Limits in persistent mode. |
LIM-1486 | Attempting to edit a temporary limit on the Limits Viewer screen no longer produces duplicate temporary limits. |
LIM-1492 | Fixed an issue where Atoti Limits calculated measures were being created on connected server KPIs that did not belong to Atoti Limits. |
LIM-1498 | Fixed an issue where the connected application would not start if Atoti Limits Auto-configuration was disabled via limits.autoconfiguration.enabled=false . |
LIM-1509 | Fixed an issue where the differences in historical versions of incidents were not being returned in the status screen |
LIM-1512 | Fixed an issue where KPIs were not being created unless restricted users were defined. |
LIM-1522 | Fixed an issue where generated IDs for limits created via the UI could collide with IDs for limits created via file upload if the uploaded limits respected the ordering of the generated IDs. |
LIM-1533 | Fixed tooltip message inside of the Limits Viewer screen, which suggested that the user is not authorized to delete limits. |
LIM-1536 | Fixed an issue where having multiple valid temporary limits on the same official limit could cause errors when evaluating. |
LIM-1542 | Fixed an issue where workflow actions were not set on retrieved limits if property limits.workflow.workflow-rules.can-approver-be-same-as-creator was set to false . |
LIM-1550 | Fixed an issue where users with the ROLE_CREATE_ANY_LIMIT permission role were blocked when attempting to create a limit via the UI or REST. |
LIM-1551 | Fixed an issue where filtering on a limit with scope (Total) or (For each) would display no data. |
LIM-1578 | Non-limit features now remain accessible even if the Atoti Limits server is unavailable. |
LIM-1605 | Fixed an issue where updating a limit structure with no differences from the existing limit structure would result in an exception. |
LIM-1612 | Fixed an issue where some actions were not disabled when a limit was deleted or expired. |
Known issues
Issue Key | Details |
---|---|
BAS-1330 | Deleting the last limit value deletes the limit structure. As a workaround, don’t delete all limits on a limit structure unless you are sure that the structure won’t be used again. Alternatively, if you do need to reuse the structure, you can create a limit on it using the endpoint /modules/limits-module/limits/rest/v2/limitDefinition/limits/save . The key of the limit structure will still be visible in the admin-ui. |
LIM-846 | Complex Scopes: Currently, a limit with an aggregated scope and a limit with a non-aggregated scope cannot be created on the same limit structure. As a workaround, create the limits on two separate structures. |
LIM-840 | Complex Scopes: Currently, limits can’t be defined with an aggregated scope location and another scope location. As a workaround, create two separate limits on two separate structures. |
LIM-813 | Managers can incorrectly upload Limit Structures through the REST endpoint. |
LIM-594 | Having email notifications enabled for breaches causes decreased limit evaluation performance. See Configuring the breach email on how to disable breach emails. |
LIM-357 | The Six Eyes workflow is currently not implemented. |
LIM-346 | Limits on calculated measures only work through File Upload, not through the UI. |
LIM-320 | Calculated measures need to be included in Pivot Table Query in order to view a Limit’s KPI in the Pivot Table. See Measures for more on how to create a query for Limits on calculated measures. |