OpenL Tablets 6.2.0 Migration Notes
Contents
Most installations upgrade to 6.2.0 without changes. Review the items below if you run the Docker images, build multi-module projects with the OpenL Maven Plugin, or have clients generated from the OpenL Studio OpenAPI document.
Environment
- Java — Java 21 remains the minimum supported version, unchanged from previous releases. No action is required.
- Docker logging — The default log output of the Docker images changed from plain text to ECS JSON. See the Administrators section below to keep the previous format.
Rules Authors
The “Open” button was removed from the rules editor
The Open button has been removed from the rules editor table view. Its earlier behavior of launching Microsoft Excel on the client was discontinued in a previous release. Use the Export module button to download the workbook instead. No project changes are required.
Developers
OpenL Maven Plugin: generated-classes jar in the archive
openl:package now decides automatically whether to embed the project’s generated-classes jar (lib/${finalName}.jar)
in the produced archive. The jar is excluded only for a project that both depends on other OpenL projects and
runs the generate goal — the combination that previously packed duplicate datatype classes and broke deployment with
There is no implementation in rules for interface method .... Every other project keeps the jar as before.
To override the automatic decision, set the new includeGeneratedClasspathJar parameter:
<plugin>
<groupId>org.openl.rules</groupId>
<artifactId>openl-maven-plugin</artifactId>
<configuration>
<includeGeneratedClasspathJar>true</includeGeneratedClasspathJar>
</configuration>
</plugin>
true— always pack the generated-classes jar into the archive.false— never pack it; datatype classes are regenerated at runtime from the rules.- unset (default) — the automatic decision described above. When the jar is excluded, the build log reports it with an override hint.
OpenL Maven Plugin: depend on the compiled classes
openl:package now attaches the jar built from the project classes folder as a supplementary artifact with the
classes classifier. When you previously relied on the copy embedded in the archive, declare a normal Maven dependency
on this artifact instead:
<dependency>
<groupId>com.example</groupId>
<artifactId>my-openl-project</artifactId>
<version>1.0.0</version>
<classifier>classes</classifier>
</dependency>
OpenL Studio OpenAPI document
The OpenAPI document generated by OpenL Studio now serializes deterministically — ordered tags, schemas, paths, and map
entries, minItems/maxItems for sized collections, and no implicit Accept, Content-Type, or Authorization
header parameters. Regenerate any client or stored specification that is pinned to the previous output and review the
diff.
Repository path resolution
Repository path resolution now rejects any path that escapes the repository root with an InvalidPathException. This is
a security hardening of file-based repositories and affects only integrations that previously passed absolute paths or
.. segments outside the root.
Administrators
Docker log output format
The Docker images route the Jetty server, the web application, and java.util.logging-based libraries through a single
Log4j2 logging system. The output format is selected with the LOGGING_FORMAT environment variable, which now defaults
to ECS (Elastic Common Schema) JSON on stdout.
To keep the previous human-readable text output, set the format to plain:
LOGGING_FORMAT=plain
LOGGING_LEVEL_ROOT=INFO
Supported LOGGING_FORMAT values:
ecs(default) — Elastic Common Schema JSON on stdout for log aggregation tools.plain— human-readable text, the same layout bundled in the.war.none— discard all log events.otel— mute the Log4j2 console and let the OpenTelemetry agent export log events to stdout as OTLP JSON.
LOGGING_LEVEL_ROOT sets the root log level (default INFO). These variables apply only inside the Docker image;
non-Docker .war deployments keep their bundled plain-text configuration.