2026.1 to 2026.2
1. ASYS_CALENDARLINK.ID column is now required
What changed
Starting with release 2026.1, the ASYS_CALENDARLINK table generally contains the ID column. Older systems sometimes omitted this column.
Why it matters
Database scripts, custom integrations, and upgrade processes that work with ASYS_CALENDARLINK may rely on the presence of the ID column. Systems that were created with the older schema can therefore fail or behave unexpectedly if the column is still missing.
Recommended actions
Review the schema of existing systems and add the ID column to ASYS_CALENDARLINK if it is missing.
2. Preferences: jditoScriptManagerNext removed
What changed
The jditoScriptManagerNext option has been removed from the available project preferences.
Why it matters
Projects can no longer activate the legacy script manager by setting jditoScriptManagerNext to false.
ScriptManagerNext has been the default for many years and has no known issues. The legacy script manager was therefore
removed.
Recommended actions
No action is required for most projects. ADITO Designer removes the jditoScriptManagerNext entry automatically when
you open the project preferences after the upgrade. If your project relies on the legacy script manager for a known
reason, please create a ticket.
3. onValidation return values handled consistently
What changed
Entity-level and EntityField-level onValidation processes now handle
return values consistently. Boolean values and their string equivalents no longer receive special handling in
Entity-level processes. EntityField-level behavior has not changed.
Why it matters
An Entity-level onValidation process that returns true or "true" now causes validation to fail. A failed validation
can prevent users from saving a record.
A validation succeeds only if the process returns no result, null, an empty string, or whitespace. Any other return
value is treated as invalid. Invalid validations should return a clear text message that tells the user how to correct
the input.
Recommended actions
Developers must review and update Entity-level onValidation processes as described in the following table.
EntityField-level processes do not require changes.
| Existing Entity-level result | Recommended action |
|---|---|
result.string("You did not specify any address information") | Leave unchanged |
result.string("") | Leave unchanged |
result.string(null) | Leave unchanged |
| No result | Leave unchanged |
result.string(true) | Pass null or remove the result.string(...) call |
result.string("true") | Pass null or remove the result.string(...) call |
result.string(false) | Replace the value with a clear validation message |
result.string("false") | Replace the value with a clear validation message |
The examples are simplified. Return a clear, actionable validation message and use the translation methods to provide the message in the user's language.
4. REST Webservices: Numeric input formats are now locale-independent
What changed
Numeric values submitted to REST Webservices are now always parsed using a locale-independent numeric format. Decimal
values must use a period (.) as the decimal separator. Locale-specific number formats, such as decimal commas or
grouping separators, are no longer interpreted.
Why it matters
This can be a breaking change for integrations that previously relied on the ADITO Server locale or on a locale
submitted with the request. For example, a server running with a German locale could previously accept locale-specific
number formats such as 1,5. These values are no longer valid numeric input values because parsing no longer changes
dynamically based on the active locale.
Recommended actions
Review clients that write numeric values through REST Webservices. Make sure they submit decimal values with a period
as the decimal separator, do not use grouping separators, and do not rely on server-side or request-specific locale
settings for numeric input parsing. For example, submit 1.5 instead of 1,5 and 1234.56 instead of 1.234,56.
5. Calendar caching: ASYS_CALENDARBACKEND is no longer used for cached entries
What changed
Starting with ADITO 2026.2.0, calendar caching no longer stores or reads cached calendar entries through the
ASYS_CALENDARBACKEND table.
Why it matters
Custom SQL queries, integrations, and maintenance scripts that use this table as a source of cached calendar data no longer receive current cache entries after the upgrade. This change applies only to calendar caching; it does not remove the table.
Recommended actions
Review custom SQL, integrations, and maintenance scripts that read or write cached calendar data in
ASYS_CALENDARBACKEND. Update them so they no longer rely on the table as a calendar-cache data source.
6. PDF Preview Service: Preview generation is handled by a global service
What changed
The creation of preview images for ODT and DOCX files is now handled by the global PDF Preview Service.
ADITO 2026.2 requires version 1.1.0 of the service (adito/pdfpreview-server:1.1.0).
Why it matters
Older versions of the PDF Preview Service cannot generate previews for ODT and DOCX files with ADITO 2026.2.
For SSP and standard ADITO Cloud systems, ADITO Cloud provides the required service. No action is required for these systems.
Recommended actions
For systems that are neither cloud-based nor managed, update the PDF Preview Service to version 1.1.0
(adito/pdfpreview-server:1.1.0) before or during the ADITO upgrade.
7. JasperReports and Groovy: Groovy is available for report definitions again
What changed
The JasperReports and Groovy versions used by ADITO have been updated.
Why it matters
Groovy can be used again when defining reports.
Recommended actions
No migration action is required. Use Groovy when defining reports where it is appropriate.
8. Handling Minimum and Maximum numeric Values
What changed
Minimum and maximum values are now validated consistently in both the frontend and the backend.
For fields with the content type NUMBER with defined minimum and maximum limits, the following rules apply:
- Required (
mandatory) fields must contain a value within the defined range. - Optional fields may remain empty. If a value is provided, it must be within the defined range.
- The backend rejects values below the minimum or above the maximum with a validation error.
In addition, number values written through web services or JDito are no longer automatically adjusted to the defined minimum or maximum. Values outside the allowed range now result in a validation error.
Why it matters
Previously, minimum and maximum values were validated only in the frontend. This caused two issues:
- Optional fields were treated like mandatory fields, requiring users to enter a value even when the field was not required.
- If the frontend validation was bypassed, values outside the allowed range could reach the backend without being rejected.
Backend validation now ensures that only valid values are accepted.
Since number values written through web services or JDito are no longer adjusted automatically, they must be within the defined range.
Recommended actions
| Target group | Recommended actions |
|---|---|
| Webservice-Clients | Enter values carefully and ensure that they are within the defined minimum and maximum limits. Values outside this range are rejected and are no longer corrected automatically. |
| Developers | Review all affected processes, configurations, and integrations to ensure that they provide valid values. For optional fields, ensure that the database column allows NULL or configure a suitable valueProcess. |
9. onValueChange processes: RECORD removed from onValueChangeTypes
What changed
The RECORD type is no longer available in onValueChangeTypes when configuring an onValueChange process in the
ADITO Designer. Previously, this type could be used to react to values loaded with a record, although it did not work
reliably.
That configuration is no longer supported.
Existing RECORD types in the onValueChangeTypes configuration of entity fields do not trigger a process. The ADITO
Designer ignores them and removes them when the entity is saved.
Why it matters
Soon, initial values will no longer trigger onValueChange processes. Reacting to values that are loaded initially
also provides little value and can cause unexpected behavior. Removing RECORD from onValueChangeTypes makes
onValueChange processing more consistent and easier to understand.
Recommended actions
Search entity fields for RECORD entries in onValueChangeTypes and remove them. To avoid individual changes when
entities are saved in the ADITO Designer, remove all affected entries in bulk before or after the upgrade.
Review affected onValueChange processes and adapt any logic that relied on reacting to initially loaded record values.