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.

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)

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
│  │  ├── platform-tenant-config.properties
│  │  └── 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
│  │  ├── platform-tenant-config.properties
│  │  └── 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.

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()

REST API

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

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.

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)