Release notes
New available values
BDM data retention (GDPR)
|
For Teamwork, Efficiency, Performance, Enterprise and Scale editions only. |
A new feature lets administrators configure data retention rules per BDM object type to automatically delete expired business data on a scheduled basis. For each top-level object type, you can choose the reference date (creation or last update) and a retention period in days; a scheduled cleanup job then removes every expired instance, cascading to composition children.
Rules are managed through the new Data Retention (GDPR) page in the Admin application. Each cleanup run is audited via the new BUSINESS_DATA_CLEANED_UP queriable log event, and the schedule is driven by the new bonita.runtime.retention.schedule.cron configuration property (default: 0 0 2 * * 6, every Saturday at 02:00 UTC).
Legacy BDM object instances created before this version are not tracked automatically. A migration procedure is documented to backfill them when you want them subject to retention rules.
When updating from an earlier version with the Bonita Update Tool, the new Data Retention (GDPR) page is installed automatically but must be added to your existing Admin application’s menu manually.
See BDM data retention for the complete reference.
Notable changes
BDM REST API response format standardization
Starting from this version, the response format for BDM queries via REST API has been standardized to follow REST conventions:
-
Scalar queries (COUNT, AVG, MAX, MIN, SUM): Now return
{"value": n}instead of[n] -
Single entity queries: Now return the object directly
{…}instead of wrapping it in an array[{…}] -
List queries: Unchanged, still return arrays
[{…}, {…}]
This change affects REST API consumers (JavaScript clients, UI Designer pages, external applications). Server-side Groovy code using DAO methods is not affected.
To maintain backward compatibility, you can disable the new format by setting:
bonita.runtime.business-data.serialization.standard-shape.enabled=false
|
If you are updating from a previous version of Bonita, backward compatibility is maintained for you by disabling automatically this new property. You are free to activate it when you code is compatible by modifying file |
See BDM Query Response Formats for detailed migration guidance.
Rest API refactoring
Many Rest APIs have been refactored to better prepare evolutions in the future. (Technically, we moved the implementation from unmaintained Restlet to Spring MVC).
This concerns the following endpoints:
-
/API/accessControl/bdm -
/API/bdm/businessDataReference-
⚠️ this API now returns
HTTP 400instead ofHTTP 500:-
when
caseIdfilter is not provided, or filterfcompletely absent -
when pagination parameter
pis not provided -
when pagination parameter
cis not provided
-
-
-
/API/bdm/businessDataReference/{caseId}/{dataName} -
/API/bpm/activityReplay/{activityInstanceId} -
/API/bpm/activityVariable/{activityId}/{dataName}-
⚠️ this API now returns
HTTP 404whenactivityIdordataNameis not found (instead ofHTTP 500)
-
-
/API/bpm/archivedActivityVariable/{activityId}/{variableName}-
⚠️ this API now returns
HTTP 404whenactivityIdorvariableNameis not found (instead ofHTTP 500)
-
-
/API/bpm/archivedCase/{archivedCaseId}/context -
/API/bpm/archivedCaseVariable?f=case_id=12005&p=0&c=10-
⚠️ this API now returns
HTTP 400instead ofHTTP 500:-
when
case_idfilter is not provided, or filterfcompletely absent -
when pagination parameter
pis not provided -
when pagination parameter
cis not provided
-
-
-
/API/bpm/archivedCaseVariable/{caseId}/{variableName}-
⚠️ this API now returns
HTTP 404whencaseIdorvariableNameis not found (instead ofHTTP 500)
-
-
/API/bpm/archivedUserTask/{archivedTaskId}/context -
/API/bpm/case/{caseId}/context -
/API/bpm/diagram/{processId} -
/API/bpm/message -
/API/bpm/process/{processDefinitionId}/contract -
/API/bpm/process/{processDefinitionId}/design -
/API/bpm/process/{processDefinitionId}/expression/{expressionId} -
/API/bpm/process/{processDefinitionId}/instantiation -
/API/bpm/signal -
/API/bpm/timerEventTrigger -
/API/bpm/timerEventTrigger/{id} -
/API/bpm/userTask/{taskId}/context -
/API/bpm/userTask/{taskId}/contract -
/API/bpm/userTask/{taskId}/execution -
/API/form/mapping/{id} -
/API/platform/license -
/API/system/i18ntranslation -
/API/tenant/bdm
The behaviour remains unchanged, even if some HTTP headers may be slightly different.
Deprecations and removals
Configuration changes
Ehcache upgraded from 2.x to 3.11
Bonita Runtime internal caching system has been upgraded from Ehcache 2.x to Ehcache 3.11 to benefit from improved performance, better memory management, and continued vendor support.
Impact on configuration:
The migration process automatically:
-
Removes the deprecated
cache-config.xmlfile (cache configuration is now programmatic in Java) -
Removes 4 obsolete Ehcache 2 properties from configuration files:
-
inMemoryOnly,maxElementsOnDisk -
copyOnRead,copyOnWrite
-
-
Adds new
offHeapSizeMB=0property to all cache configurations (defaults to on-heap caching)
What you need to know:
-
If you customized cache configuration in
bonita-platform-community-custom.properties,bonita-tenant-community-custom.properties, or cluster configuration files, these obsolete properties will be automatically removed during platform update -
The new Ehcache 3 configuration uses different property names and is managed programmatically - contact Bonitasoft Support if you need to tune cache behavior
-
Most Ehcache 3 properties (like
maxElementsInMemory,eternal,timeToLiveSeconds) remain compatible and will be preserved -
Off-heap caching is disabled by default (
offHeapSizeMB=0) but can be enabled for performance optimization on large-scale deployments
Affected configuration files:
-
Community edition:
bonita-platform-community-custom.properties,bonita-tenant-community-custom.properties -
Subscription edition (cluster):
bonita-platform-sp-cluster-custom.properties,bonita-tenant-sp-cluster-custom.properties
For advanced cache tuning after migration, refer to the Performance tuning documentation.
Bug fixes
Fixes in Bonita 2026.1-u0 (2026-04-28)
-
BPA-183 - Process instance never completes: row in FLOWNODE_INSTANCE table with stateid 28 and kind multi
-
BPA-199 - BDM Custom Query with Single Result Type Returns Array Instead of Single Object
-
BPA-203 - Automatic cleanup of TEMPORARY_CONTENT rows does not delete actual object stored in pg_largeobject table
-
BPA-297 - BDM REST API returns empty JSON for HibernateProxy entities
-
BPA-316 - Prograde Java policy is too restrictictive for AI connectors
-
BPA-321 - ThreadLocal EntityManager leak after JTA transaction timeout causes stale persistence context reuse
-
BPA-411 - [OIDC][Cluster] single-use refresh token invalidation causes repeated session loss
-
BPA-443 - [Cluster] NPE on HTTP API for every void method (retryTask, logout, …)
-
BPA-449 - Studio: .bar built from a process with no declared dependencies contains all project dependencies
-
Several dependencies updated