6.2.2 to 6.2.3
Deployment of limit-process-expiry.bpmn
If you restrict where Activiti loads processes from
(spring.activiti.process-definition-location-prefix), or do not deploy the processes/*.bpmn
files of limits-starter, also deploy limit-process-expiry.bpmn. Otherwise, limits using a
workflow of the workflow service never expire.
Four-eyes requester check moved to isCurrentUserTheRequester
In the default four-eyes workflow (limit-process-instance.four-eyes), LimitsProcessInstanceWorkflowService#roleValidation now calls the new protected method isCurrentUserTheRequester(LimitsProcessInstance) instead of isCurrentUserTheSameAsPreviousActor. The user who opened the pending request can no longer approve it, even after a rejection, and the rejecting approver can approve it later. See limit-process-four-eyes.bpmn.
Action is needed only if your project:
- overrides
isCurrentUserTheSameAsPreviousActorto change who counts as the creator: move that logic to an override ofisCurrentUserTheRequester. Other workflows still use the former. - relied on a creator approving their own limit after a rejection: another approver must now approve it, or set
limits.workflow.workflow-rules.can-approver-be-same-as-creatortotrue, which disables the four-eyes rule.
DefaultLimitsFileLoadingService#createAsOfDateFile() removed
The protected method DefaultLimitsFileLoadingService#createAsOfDateFile() no longer exists.
Subclasses of DefaultLimitsFileLoadingService that override it no longer compile: remove the override.
By default, Atoti Limits still generates the as_of_date.csv file in limits.initial-load.root-dir when this file does not exist.
The default file initial as-of-date provider, instead of the file loading service, now writes this file at startup.
Deployments that do not override the method need no change.
To adapt code that overrode the method:
- To change how the initial as-of-date is produced, declare an
ILimitsInitialAsOfDateProviderbean. With such a bean, Atoti Limits ignores the as-of-date file. See How to choose the initial as-of-date. - To stop generating the file, set
limits.as-of-date.initial-providertoutc-time(the as-of-date file is then ignored) ornone(the as-of-date file is also ignored, and the as-of-date must come from anILimitsInitialAsOfDateProviderbean). See How does Atoti Limits choose the initial AsOfDate?.
Widening the mdx column of the incident table
This change affects persistent data mode only. You need to act on it only if saving incidents has failed
because of the size of the mdx column. Widening the column is recommended if your limit structures are
large enough to reach that size.
Atoti Limits now maps the mdx column of the incident table with a length of 1,000,000
characters. Atoti Limits 6.2.3 starts against an existing incident table without any database
change, including with Hibernate schema validation (hbm2ddl.auto: validate). Until you widen the
column in the database, it keeps its VARCHAR(1000) type, and incidents whose evaluation MDX
exceeds 1,000 characters still fail to be saved or updated.
The evaluation MDX grows with every limit of a structure: about 16 single-level limits, or 5 to 7
limits scoped on several levels, are enough to exceed 1,000 characters. If your structures reach this
size, widen the column.
Schema managed with Liquibase
The new Liquibase changeset limits-6-2-3-changelog-1.yaml widens the column to
VARCHAR(1000000). Liquibase creates it as MEDIUMTEXT on MySQL and MariaDB, and as
varchar(max) on SQL Server.
- Shipped
master-changelog.yaml: it already includes the changeset. - Custom
master-changelog.yaml: addlimits-6-2-3-changelog-1.yamlto it, afterlimits-4-2-0-changelog-2.yaml.
spring.liquibase.enabled is
false in application.yml), so apply the changeset to the database explicitly, for example with
mvn liquibase:update. See
Migrate your schema.
Schema not managed with Liquibase
Change the type of the mdx column of the incident table to a character type that holds at
least 1,000,000 characters, such as the long text type of the database. Apply this change with
the schema migration process already in place for the database. To derive the SQL from the
Atoti Limits changeset instead, see
Case 3: Default schema without Liquibase.
Level path service deprecated
The REST service behind/services/rest/v1/levelPath, which the Atoti Limits Auto-Config modules add
to the connected Atoti Server, is deprecated and will be removed in 6.3.0. Atoti Server 6.2.3 ships
an equivalent service at the same path. The path, the requests and the responses are unchanged, so
Atoti Limits and its UI need no change.
Until you switch, the Auto-Config modules keep providing the deprecated service:
- Atoti Server 6.1.x, or 6.2.x before 6.2.3: the server has no level path service. The deprecated service is used, and a message is logged at startup. No action is possible until you upgrade the server.
- Atoti Server 6.2.3 or later: the server ships the service, but it is disabled by default. The deprecated service is used, and a warning is logged at startup.
limits.autoconfiguration.security.enabled is true,
Atoti Limits secures /services/rest/v1/levelPath whichever service serves it. Set
atoti.server.endpoint.level-path.security.enabled to true to let Atoti Server secure it with its
own role-based security filter chain instead.
The LimitsConnectedServerSecurityAutoConfiguration.LEVEL_PATH_PATTERN constant is removed, and
LIMITS_SECURED_PATTERNS no longer lists the level path. If your security configuration referenced
either one for the level path, use the /services/rest/v1/levelPath path directly.
6.2.1 to 6.2.2
Support for 6.0.x and 6.0.x-sb3 Atoti Servers removed
Atoti Limits has removed support for connecting to Atoti Server 6.0.x and 6.0.x-sb3, which have
reached end of support. This affects anyone using
limits-auto-config-60 or limits-auto-config-60-sb3. The connected Atoti Server instance must be
upgraded to 6.1.x or 6.2.x. For that upgrade, see the
Atoti Server migration notes.
After upgrading the connected server, switch the Maven dependency to the matching artifact:
- For Atoti Server 6.1.x, use
limits-auto-config-61. - For Atoti Server 6.2.x, use
limits-auto-config-62.
limits-common module removed
The limits-common Maven module no longer exists. Its classes keep their packages
(com.activeviam.limits.core.shared.*) and now ship with the module that uses them:
limits-activeviamon the Atoti Limits server,limits-integration-commonon a connected Atoti Server (pulled in bylimits-auto-config-<version>).
limits-common directly, as it was already a transitive
dependency of both. If your pom.xml declares it anyway, remove the dependency: the classes are
available through limits-activeviam or limits-auto-config-<version>. Classes you override keep
their fully qualified names, so no import changes are needed.
6.2.0 to 6.2.1
No migration necessary.6.1.23 to 6.2.0
Atoti Limits now requires Java 25. Update your project to build and run with Java 25. Spring Security Kerberos is now published in theorg.springframework.security group, and released with Spring Security
itself. If your project declares a spring-security-kerberos-* dependency of its own, for instance to set up
Kerberos machine-to-machine authentication,
change its groupId to org.springframework.security and drop its version, which Spring Boot’s dependency management now
provides. The 2.x releases of the retired org.springframework.security.kerberos group are compiled against
org.springframework.security.crypto.codec.Base64, a class Spring Security 7 removed, so authenticating a request with them
fails at runtime with java.lang.ClassNotFoundException.
No code migration is necessary.