Skip to main content
Version: 8.10 (unreleased)

Camunda 8.10 APIs & Tools migration guide

Learn how to migrate your API integrations, SDKs, and generated clients to Camunda 8.10.

About

This guide details the API and SDK changes introduced in Camunda 8.10 that require customer action, including breaking changes, deprecations, and step-by-step migration actions.

Details are provided for each integration type, including what changed, why, and what action you must take.

Integration typeDescription
Official SDK usersJava client, TypeScript SDK, Python SDK, and C# SDK.
Generated-client usersClients generated from the Camunda OpenAPI specification.
Custom integrationsCustom code that calls the Camunda REST API directly.

Upgrade steps

Complete the following steps in this guide:

  1. Upgrade to the latest official Camunda SDK versions.
  2. If you generate clients from OpenAPI, regenerate them from the 8.10 specification.
  3. Re-run compilation/type checks and address any errors.
  4. Review and apply fixes for the breaking changes, deprecations, and supported environment changes below.

Camunda 8.10 breaking changes, deprecations, and supported environment changes

Review the actions required for the following 8.10 changes:

TypeChange
Breaking changeSearch filters: UserTaskFilter process filters converted into advanced search filters
Breaking changePOST /v2/message-subscriptions/search returns start event subscriptions
Behavioral changeElement instance search: advanced filters on elementId / elementName and $or support
Behavioral changeResource API now uses eventual consistency
DeprecatedDeprecated: GET resource content API

Breaking changes

Review actions required for the following breaking changes:

Search filters: UserTaskFilter process filters converted into advanced search filters

Change

The search filter criteria for processDefinitionKey, processInstanceKey, and bpmnProcessId in UserTaskFilter have been converted into advanced search filters.

Why

As a result of the V1 API removal, advanced process filtering for user tasks was no longer supported. These changes let you use advanced process filters with the V2 User Tasks API again.

Impact

This affects the Java client because io.camunda.client.api.search.filter.UserTaskFilter now accepts advanced filters for processDefinitionKey, processInstanceKey, and bpmnProcessId.

Action

Update to the latest SDK version. The new SDK version includes advanced filters for processDefinitionKey, processInstanceKey, and bpmnProcessId in UserTaskFilter.

POST /v2/message-subscriptions/search returns start event subscriptions

Change

The POST /v2/message-subscriptions/search endpoint now returns both start event and intermediate event message subscriptions. Previously, only intermediate event subscriptions were returned.

Why

This change provides complete visibility into all active message subscriptions for a process, including start event subscriptions that were previously excluded.

New field

Each result includes a new messageSubscriptionType enum field:

ValueDescription
START_EVENTA start event message subscription.
PROCESS_EVENTAn intermediate catch event message subscription.

In existing legacy data, this field is NULL.

Impact

Integrations that consume results from POST /v2/message-subscriptions/search will now receive start event subscriptions in addition to intermediate event subscriptions. Code that assumes only intermediate events may produce unexpected behavior.

Action

Update to the latest SDK version. If your code relies on the endpoint returning only intermediate event subscriptions, add a filter to exclude start events when constructing your search query.

Behavioral changes

Element instance search: advanced filters on elementId / elementName and $or support

Change

The element instance search endpoint (POST /v2/element-instances/search) gained two filtering capabilities:

  • The elementId and elementName filter fields now accept advanced search filter objects in addition to plain string equality. Supported operators: $eq, $neq, $exists, $in, $notIn, $like (wildcard pattern with * and ?).
  • The request body's filter object now accepts a top-level $or property that takes an array of alternative filter groups combined with OR logic. Top-level filter fields and $or are combined with AND logic.

Why

These additions let you express the queries the user interface (UI) needs (for example, "match any element whose name or ID contains a substring") in a single request, avoiding multiple round trips and client-side merging.

Impact

The change is additive and backward compatible — existing exact-match requests continue to work unchanged. New requests can now use advanced operators and $or to express richer queries:

{
"filter": {
"processInstanceKey": "2251799813685323",
"$or": [
{ "elementName": { "$like": "*Order*" } },
{ "elementId": { "$like": "*Order*" } }
]
}
}

The example matches element instances where processInstanceKey equals the given value AND either elementName or elementId contains the substring Order.

note

Complex $or conditions may impact performance in high-volume environments; use them with care.

The elementName filter only matches instances created in 8.8 or later, since earlier runtimes did not persist this field on element instances.

Action

Update to the latest SDK version. The new SDK exposes advanced filters for elementId and elementName, and the $or filter on ElementInstanceFilter.

Resource API now uses eventual consistency

The Get resource and Get resource content APIs now retrieve from secondary storage, resulting in eventual consistency. After a resource is deployed, there may be a brief delay before it becomes retrievable via these endpoints.

If your application assumes immediate resource retrieval after deployment, add retry logic or a short delay before querying resources.

Deprecations

Review the actions required for the following deprecations:

Deprecated: GET resource content API

The Get resource content endpoint is deprecated. Use Get resource content binary instead, which provides the same functionality and also returns generic resources.

Next steps

Once you have completed the upgrade steps in this guide, you should:

  1. Re-compile and run your test suite against the 8.10 API.