This content is dedicated to our next version. It is work in progress: its content will evolve until the new version is released.

Before that time, it cannot be considered as official.

Release notes

The 2025.1 version is in development.

New available values

Enhanced Log Tracing and Filtering

Log tracing and filtering in Bonita have been enhanced using MDC (Mapped Diagnostic Context) to add contextual information across all scopes. This improvement ensures higher-quality, more readable logs and simplifies integration with third-party monitoring tools, helping customers troubleshoot issues and monitor performance more effectively.

This extra information also means more volume for logs.
If you have limited space for logs and do not wish this information, you may deactivate this feature by removing { - %X} from the logging configuration.

You can see the logging configuration for more details.

Improved Admin application

The Admin application has been improved to provide a better user experience and a better way to identify and recover from errors
The task and case details pages have been redesigned to provide clearer information and new error sections when there are some failures at task or case level (For Access, Performance, Enterprise and Scale editions only).
It is now possible to see child cases (started by call activities) and not just root cases from the case details and the case list page. This improves the consistency of the whole application and allows an administrator to understand more easily what is happening in a case by navigating to the child cases details and diagram visualisation or list of tasks

New BPM Failures recording and API

For Access, Performance, Enterprise and Scale editions only.

All failures happening in a task or a case are now recorded in the database (and archived when the task/case is archived). The records include a scope (e.g.: Data initialization, Connector, etc), a detailed context (e.g.: data name, connector name, script name etc..) and the exception and its stacktrace.
Those failures with detailed information are visible in the Admin application in the case details and task details pages.
New bpm/failure and bpm/archivedFailure REST API resources have been added to retrieve the failures of a task, a case or a root case (including all the child cases).
Java API also includes new methods to retrieve those failures (see getProcessInstanceFailures or getFlowNodeInstanceFailures in ProcessRuntimeAPI).

Notable changes

Update tool script has been renamed

To simplify and rationalize the naming of the scripts, the update tool script has been renamed.

The formerly named bonita-update-tool(.bat) script has been renamed to bonita-update(.bat).

Moreover, the Subscription version of the script is also named bonita-update(.bat). (there is no -sp suffix anymore)

Purge tool script has been renamed

For Subscription editions only.

To simplify and rationalize the naming of the scripts, the purge tool script has been renamed.

The formerly named bonita-purge-tool(.bat) script has been renamed to bonita-purge(.bat).

Setup Tool (aka Platform Setup) file structure has been simplified

The setup tool file structure has been simplified to better fit the multitenancy removal. For those who were used to fetch their configuration files under platform_conf/current/tenants/<TENANT_ID>/tenant_engine, for instance, the path is now platform_conf/current/tenant_engine. All the documentation has been updated accordingly.
For the curious ones, here is the full comparison:

Up to 2024.3 (10.2)

Content of the setup/ folder:

platform_conf
├── current
│  ├── platform_engine
│  │  ├── bonita-platform-community-custom.properties
│  │  ├── bonita-platform-custom.xml
│  │  ├── bonita-platform-sp-cluster-custom.properties
│  │  ├── bonita-platform-sp-custom.properties
│  │  ├── bonita-platform-sp-custom.xml
│  │  └── hazelcast.xml
│  ├── platform_portal
│  │  ├── cache-config.xml
│  │  ├── platform-tenant-config.properties
│  │  └── security-config.properties
│  ├── tenants
│  │  └── 1
│  │      ├── tenant_engine
│  │      │  ├── bonita-tenant-community-custom.properties
│  │      │  ├── bonita-tenants-custom.xml
│  │      │  ├── bonita-tenant-sp-cluster-custom.properties
│  │      │  ├── bonita-tenant-sp-custom.properties
│  │      │  └── bonita-tenant-sp-custom.xml
│  │      ├── tenant_portal
│  │      │  ├── authenticationManager-config.properties
│  │      │  ├── compound-permissions-mapping-custom.properties
│  │      │  ├── compound-permissions-mapping-internal.properties
│  │      │  ├── compound-permissions-mapping.properties
│  │      │  ├── console-config.properties
│  │      │  ├── custom-permissions-mapping.properties
│  │      │  ├── dynamic-permissions-checks-custom.properties
│  │      │  ├── dynamic-permissions-checks.properties
│  │      │  ├── keycloak-oidc.json
│  │      │  ├── keycloak-saml.xml
│  │      │  ├── resources-permissions-mapping-custom.properties
│  │      │  ├── resources-permissions-mapping-internal.properties
│  │      │  ├── resources-permissions-mapping.properties
│  │      │  ├── security-config.properties
│  │      │  ├── spnego-config.properties
│  │      │  ├── user-creation-attribute-mapping-custom.properties
│  │      │  ├── user-creation-attribute-mapping.properties
│  │      │  ├── user-creation-group-mapping.properties
│  │      │  └── user-creation-group-profile-mapping.properties
│  │      └── tenant_security_scripts
│  │          └── SamplePermissionRule.groovy.sample
│  ├── tenant_template_engine
│  │  ├── bonita-tenant-community-custom.properties
│  │  ├── bonita-tenants-custom.xml
│  │  ├── bonita-tenant-sp-cluster-custom.properties
│  │  ├── bonita-tenant-sp-custom.properties
│  │  └── bonita-tenant-sp-custom.xml
│  ├── tenant_template_portal
│  │  ├── authenticationManager-config.properties
│  │  ├── compound-permissions-mapping-custom.properties
│  │  ├── compound-permissions-mapping-internal.properties
│  │  ├── compound-permissions-mapping.properties
│  │  ├── console-config.properties
│  │  ├── custom-permissions-mapping.properties
│  │  ├── dynamic-permissions-checks-custom.properties
│  │  ├── dynamic-permissions-checks.properties
│  │  ├── keycloak-oidc.json
│  │  ├── keycloak-saml.xml
│  │  ├── resources-permissions-mapping-custom.properties
│  │  ├── resources-permissions-mapping-internal.properties
│  │  ├── resources-permissions-mapping.properties
│  │  ├── security-config.properties
│  │  ├── spnego-config.properties
│  │  ├── user-creation-attribute-mapping-custom.properties
│  │  ├── user-creation-attribute-mapping.properties
│  │  ├── user-creation-group-mapping.properties
│  │  └── user-creation-group-profile-mapping.properties
│  └── tenant_template_security_scripts
│      └── SamplePermissionRule.groovy.sample
├── initial
│  ├── platform_engine
│  │  ├── bonita-platform-community-custom.properties
│  │  ├── bonita-platform-custom.xml
│  │  ├── bonita-platform-sp-cluster-custom.properties
│  │  ├── bonita-platform-sp-custom.properties
│  │  ├── bonita-platform-sp-custom.xml
│  │  └── hazelcast.xml
│  ├── PLATFORM_ENGINE_VERSION
│  ├── platform_portal
│  │  ├── cache-config.xml
│  │  ├── platform-tenant-config.properties
│  │  └── security-config.properties
│  ├── tenant_template_engine
│  │  ├── bonita-tenant-community-custom.properties
│  │  ├── bonita-tenants-custom.xml
│  │  ├── bonita-tenant-sp-cluster-custom.properties
│  │  ├── bonita-tenant-sp-custom.properties
│  │  └── bonita-tenant-sp-custom.xml
│  ├── tenant_template_portal
│  │  ├── authenticationManager-config.properties
│  │  ├── compound-permissions-mapping-custom.properties
│  │  ├── compound-permissions-mapping-internal.properties
│  │  ├── compound-permissions-mapping.properties
│  │  ├── console-config.properties
│  │  ├── custom-permissions-mapping.properties
│  │  ├── dynamic-permissions-checks-custom.properties
│  │  ├── dynamic-permissions-checks.properties
│  │  ├── keycloak-oidc.json
│  │  ├── keycloak-saml.xml
│  │  ├── resources-permissions-mapping-custom.properties
│  │  ├── resources-permissions-mapping-internal.properties
│  │  ├── resources-permissions-mapping.properties
│  │  ├── security-config.properties
│  │  ├── spnego-config.properties
│  │  ├── user-creation-attribute-mapping-custom.properties
│  │  ├── user-creation-attribute-mapping.properties
│  │  ├── user-creation-group-mapping.properties
│  │  └── user-creation-group-profile-mapping.properties
│  └── tenant_template_security_scripts
│      └── SamplePermissionRule.groovy.sample
├── licenses
│  └── team-license-21230624-10.2-003-enterprise.lic
└── sql
    ├── h2
    │  ├── cleanTables.sql
    │  ├── createQuartzTables.sql
    │  ├── createTables.sql
    │  ├── dropQuartzTables.sql
    │  ├── dropTables.sql
    │  ├── initTables.sql
    │  ├── postCreateStructure.sql
    │  └── preDropStructure.sql
    ├── mysql
    │  ├── cleanTables.sql
    │  ├── createQuartzTables.sql
    │  ├── createTables.sql
    │  ├── dropQuartzTables.sql
    │  ├── dropTables.sql
    │  ├── initTables.sql
    │  ├── postCreateStructure.sql
    │  └── preDropStructure.sql
    ├── oracle
    │  ├── cleanTables.sql
    │  ├── createQuartzTables.sql
    │  ├── createTables.sql
    │  ├── dropQuartzTables.sql
    │  ├── dropTables.sql
    │  ├── initTables.sql
    │  ├── postCreateStructure.sql
    │  └── preDropStructure.sql
    ├── postgres
    │  ├── cleanTables.sql
    │  ├── createQuartzTables.sql
    │  ├── createTables.sql
    │  ├── dropQuartzTables.sql
    │  ├── dropTables.sql
    │  ├── initTables.sql
    │  ├── postCreateStructure.sql
    │  └── preDropStructure.sql
    └── sqlserver
        ├── cleanTables.sql
        ├── createQuartzTables.sql
        ├── createTables.sql
        ├── dropQuartzTables.sql
        ├── dropTables.sql
        ├── initTables.sql
        ├── postCreateStructure.sql
        └── preDropStructure.sql
From 2025.1 (10.3) and above

Content of the setup/ folder:

platform_conf
├── current
│  ├── platform_engine
│  │  ├── bonita-platform-community-custom.properties
│  │  ├── bonita-platform-custom.xml
│  │  ├── bonita-platform-sp-cluster-custom.properties
│  │  ├── bonita-platform-sp-custom.properties
│  │  ├── bonita-platform-sp-custom.xml
│  │  └── hazelcast.xml
│  ├── platform_portal
│  │  ├── cache-config.xml
│  │  └── security-config.properties
│  ├── tenant_engine
│  │  ├── bonita-tenant-community-custom.properties
│  │  ├── bonita-tenants-custom.xml
│  │  ├── bonita-tenant-sp-cluster-custom.properties
│  │  ├── bonita-tenant-sp-custom.properties
│  │  └── bonita-tenant-sp-custom.xml
│  ├── tenant_portal
│  │  ├── authenticationManager-config.properties
│  │  ├── compound-permissions-mapping-custom.properties
│  │  ├── compound-permissions-mapping-internal.properties
│  │  ├── compound-permissions-mapping.properties
│  │  ├── console-config.properties
│  │  ├── custom-permissions-mapping.properties
│  │  ├── dynamic-permissions-checks-custom.properties
│  │  ├── dynamic-permissions-checks.properties
│  │  ├── keycloak-oidc.json
│  │  ├── keycloak-saml.xml
│  │  ├── resources-permissions-mapping-custom.properties
│  │  ├── resources-permissions-mapping-internal.properties
│  │  ├── resources-permissions-mapping.properties
│  │  ├── security-config.properties
│  │  ├── spnego-config.properties
│  │  ├── user-creation-attribute-mapping-custom.properties
│  │  ├── user-creation-attribute-mapping.properties
│  │  ├── user-creation-group-mapping.properties
│  │  └── user-creation-group-profile-mapping.properties
│  └── tenant_security_scripts
│      └── SamplePermissionRule.groovy.sample
├── initial
│  ├── platform_engine
│  │  ├── bonita-platform-community-custom.properties
│  │  ├── bonita-platform-custom.xml
│  │  ├── bonita-platform-sp-cluster-custom.properties
│  │  ├── bonita-platform-sp-custom.properties
│  │  ├── bonita-platform-sp-custom.xml
│  │  └── hazelcast.xml
│  ├── PLATFORM_ENGINE_VERSION
│  ├── platform_portal
│  │  ├── cache-config.xml
│  │  └── security-config.properties
│  ├── tenant_engine
│  │  ├── bonita-tenant-community-custom.properties
│  │  ├── bonita-tenants-custom.xml
│  │  ├── bonita-tenant-sp-cluster-custom.properties
│  │  ├── bonita-tenant-sp-custom.properties
│  │  └── bonita-tenant-sp-custom.xml
│  ├── tenant_portal
│  │  ├── authenticationManager-config.properties
│  │  ├── compound-permissions-mapping-custom.properties
│  │  ├── compound-permissions-mapping-internal.properties
│  │  ├── compound-permissions-mapping.properties
│  │  ├── console-config.properties
│  │  ├── custom-permissions-mapping.properties
│  │  ├── dynamic-permissions-checks-custom.properties
│  │  ├── dynamic-permissions-checks.properties
│  │  ├── keycloak-oidc.json
│  │  ├── keycloak-saml.xml
│  │  ├── resources-permissions-mapping-custom.properties
│  │  ├── resources-permissions-mapping-internal.properties
│  │  ├── resources-permissions-mapping.properties
│  │  ├── security-config.properties
│  │  ├── spnego-config.properties
│  │  ├── user-creation-attribute-mapping-custom.properties
│  │  ├── user-creation-attribute-mapping.properties
│  │  ├── user-creation-group-mapping.properties
│  │  └── user-creation-group-profile-mapping.properties
│  └── tenant_security_scripts
│      └── SamplePermissionRule.groovy.sample
├── licenses
│  └── team-license-21230624-10.2-003-enterprise.lic
└── sql
    ├── h2
    │  ├── cleanTables.sql
    │  ├── createQuartzTables.sql
    │  ├── createTables.sql
    │  ├── dropQuartzTables.sql
    │  ├── dropTables.sql
    │  ├── initTables.sql
    │  └── preDropStructure.sql
    ├── mysql
    │  ├── cleanTables.sql
    │  ├── createQuartzTables.sql
    │  ├── createTables.sql
    │  ├── dropQuartzTables.sql
    │  ├── dropTables.sql
    │  ├── initTables.sql
    │  └── preDropStructure.sql
    ├── oracle
    │  ├── cleanTables.sql
    │  ├── createQuartzTables.sql
    │  ├── createTables.sql
    │  ├── dropQuartzTables.sql
    │  ├── dropTables.sql
    │  ├── initTables.sql
    │  └── preDropStructure.sql
    ├── postgres
    │  ├── cleanTables.sql
    │  ├── createQuartzTables.sql
    │  ├── createTables.sql
    │  ├── dropQuartzTables.sql
    │  ├── dropTables.sql
    │  ├── initTables.sql
    │  └── preDropStructure.sql
    └── sqlserver
        ├── cleanTables.sql
        ├── createQuartzTables.sql
        ├── createTables.sql
        ├── dropQuartzTables.sql
        ├── dropTables.sql
        ├── initTables.sql
        └── preDropStructure.sql

If you’re starting Bonita with the Docker image and using custom scripts, please check the scripts to make sure they use the new file structure.
Otherwise, script execution may fail, preventing Bonita from starting.

The changes mainly involve removing _template from the Bonita paths used in scripts.

Support matrix changes

Ubuntu update

Support for Ubuntu has been updated to version 24.04. See hardware and software requirements for the full matrix support.

Deprecations and removals

API deprecations

As part of the multi-tenancy remove, some APIs have been deprecated and will be removed in the future:

  • com.bonitasoft.engine.api.APIClient

    • getLoginAPI

    • 2 login methods using a tenantId parameter

  • com.bonitasoft.engine.api.TenantAPIAccessor#getLoginAPI

API removals

Command API

Up to 2024.3, you could implement custom commands by inheriting either from the org.bonitasoft.engine.api.TenantCommand interface or from the org.bonitasoft.engine.command.PlatformCommand interface. With multitenancy removal, those two commands have been merged into org.bonitasoft.engine.command.RuntimeCommand
If you have not done it yet, recompile your custom commands by changing parent class to RuntimeCommand, unregister the previous one and register the new one.

Platform API

The following deprecated methods have been removed:

  • com.bonitasoft.engine.api.PlatformAPI#updateTenant()

  • com.bonitasoft.engine.api.PlatformAPI#getDefaultTenantId()

Deprecated method org.bonitasoft.engine.platform.Platform#getPreviousVersion() has been removed.

REST API

  • Deprecated resource system/tenant has been removed. You can use API system/maintenance instead to enable/disable maintenance mode.

  • Deprecated attribute isHidden has been removed from the resource portal/page

  • Deprecated attribute iconPath has been removed from the resource living/application

EntityMember (aka. External Identity Mapping)

This concept has been completely removed because the associated feature was not used internally and was not documented. It was used to map arbitrary external IDs to Bonita identity (user, group, role, membership).
Event keys EXTERNAL_IDENTITY_MAPPING_CREATED and EXTERNAL_IDENTITY_MAPPING_DELETED have been removed from the event API and cannot be listened to anymore.

Custom component changes

If you used custom Spring beans, to customize Bonita event handlers, authentication, authorization rules, etc., you may need to update your code and your bean configuration to adapt to the removal of the tenant notion.
Check the following configuration files:

  • bonita-tenants-custom.xml

  • bonita-tenant-sp-custom.xml

  • bonita-platform-custom.xml

  • bonita-platform-sp-custom.xml

for customizations you may have done there. In particular, if you have inherited from Bonita Spring beans with specialized behaviour, make sure the tenantId constructor parameter is removed from the bean definition. If relevant, redeploy a fixed version of your custom component and change its declaration.

Configuration changes

JAAS / CAS SSO configuration

With the removal of the multi-tenancy feature, the configuration of the JAAS / CAS SSO has been simplified.
The notable change is that the configuration module is now named BonitaAuthentication (without -<TENANT_ID> suffix).

Ldap Synchronizer configuration

With the removal of the multi-tenancy feature, the configuration of the LDAP Synchronizer has been simplified.
The notable changes are:

  • in the bonita.properties configuration file, the technicalPassword, technicalUser and tenantId properties are no longer used

  • when using the Docker image, the BONITA_PLATFORM_LOGIN, BONITA_PLATFORM_PASSWORD and BONITA_TENANT_ID environment variables are no longer used

Bug fixes

Fixes in Bonita 2025.1 (! DATE TO ADD HERE !)

Fixes in Bonita Runtime (including Bonita Applications)

  • RUNTIME-28 - The deletion of a running process instance leaves lines in the DOCUMENT table.
    Before this fix, when a process instance was deleted, the documents associated with it were not deleted. As a consequence, this behavior creates orphan documents that are unused and not linked to any other object. Note that it was not the case for archived process instances where documents were correctly deleted.
    If you have a lot of orphan documents in your database, you can use the latest version of the Purge Tool to remove them.

Fixes in Bonita Studio (including Bonita UI Designer)