Version 3.8.0 of Eclipse Ditto, released on 10.10.2025
Edit this page

After a longer time than usual, publishing a minor release, we are happy to announce the availability of Eclipse Ditto 3.8.0.

This release is completely IP (intellectual property) checked by the Eclipse Foundation meaning that project code as well as all used dependencies were “[…] reviewed to ensure that the copyrights expressed are correct, licensing is valid and compatible, and that other issues have been uncovered and properly investigated.”

Changelog

Eclipse Ditto 3.8.0 focuses on the following areas:

  • Diverting Ditto connection responses to other connections (e.g. to allow multi-protocol workflows)
  • Dynamically re-configuring WoT validation settings without restarting Ditto
  • Enforcing that WoT model based thing definitions are used and match a certain pattern when creating new things
  • Support for OAuth2 “password” grant type for authenticating outbound HTTP connections
  • Configure JWT claims to be added as information to command headers
  • Added support for client certificate based authentication for Kafka and AMQP 1.0 connections
  • Extend “Normalized” connection payload mapper to include deletion events
  • Support silent token refresh in the Ditto UI when using SSO via OAuth2/OIDC
  • Enhance conditional updates for merge thing commands to contain several conditions to dynamically decide which parts of a thing to update and which not

The following non-functional work is also included:

  • Improving WoT based validation performance for merge commands
  • Enhancing distributed tracing, e.g. with a span for the authentication step and by adding the error response for failed API requests
  • Updating dependencies to their latest versions
  • Providing additional configuration options to Helm values

The following notable fixes are included:

  • Fixing nginx CORS configuration which caused Safari / iOS browsers to fail with CORS errors
  • Fixing transitive resolving of Thing Models referenced with tm:ref
  • Fixing sorting on array fields in Ditto search
  • Fixing issues around “put-metadata” in combination with merge commands
  • Fixing that certificate chains for client certificate based authentication in Ditto connection was not fully parsed
  • Fixing deployment of Ditto on OpenShift

New features

Diverting Ditto connection responses to other connections

Issue #2106 / PR #2190 enables to let Ditto divert (redirect) responses from one connection to another connection instead of sending them to the originally configured reply target.
This allows to implement multi-protocol workflows, e.g. when devices communicate via MQTT but the responses should be sent to a Kafka topic.

A deeper description of this new feature can be found in the blog post about response diversion

The documentation of the feature can be found here.

Dynamically re-configuring WoT validation settings without restarting Ditto

Issue #2147 / PR #2179 adds a new “DevOps” API to dynamically change the WoT validation settings without restarting Ditto.

This allows to enable/disable WoT validation or change the validation mode (strictly rejecting API calls not conforming to the WoT model or just logging warnings) on the fly.
This can especially be useful when e.g. (mass) migrating the definitions of existing things to a newer version of their model.

The documentation of the feature can be found here.

Enforcing that WoT model based thing definitions are used and match a certain pattern when creating new things

Issue #2189 / PR #2194 lets the Ditto administrator configure per Thing namespace that things may only be created if they contain a WoT model in the thing definition matching a certain pattern (regular expression).

With that configuration it can be ensured that only things are created which are based on a WoT model, enabling together with the WoT based validation a very strict, API first approach for managing digital twins in Ditto.

The documentation of the feature can be found here.

Support for OAuth2 “password” grant type for authenticating outbound HTTP connections

Issue #2176 / PR #2195 adds support for the OAuth2 “password” grant type for authenticating outbound HTTP connections.
Before, Ditto HTTP connections just supported the “client credentials” grant type. However, with more tools adopting PKCE (without defining a clientSecret), the password grant type is also getting more common.

The documentation of the feature can be found here.

Configure JWT claims to be added as information to command headers

Issue #2145 / PR #2216 allows the Ditto administrator to configure that certain claims of a JWT token used for authenticating to be added as custom headers to the Ditto API call.
This e.g. allows to “identify” the caller of a Ditto API based on e.g. a email claim in the JWT.

The documentation of the feature can be found here, config keyword: inject-claims-into-headers.

Added support for client certificate based authentication for Kafka and AMQP 1.0 connections

PR #2223 and #2228 add support for authenticating at AMQP 1.0 and Kafka endpoints via client certificate.
Authenticating via client certificate was already supported for MQTT and HTTP connections before - now all connection types support it.

Extend “Normalized” connection payload mapper to include deletion events

PR #2224 extends the Normalized payload mapper which can be used in Ditto connections to also include deletion events (besides creation and update events), including a field _deleted with the timestamp of thing deletion.

The existing documentation was updated accordingly.

Support silent token refresh in the Ditto UI when using SSO via OAuth2/OIDC

PR #2229 enhances the Ditto UI to support silent token refresh when using SSO via OAuth2/OIDC.
This allows to keep the user logged in without being redirected to the identity provider again when a JWT expired.

The documentation of the feature can be found here.

Enhance conditional updates for merge thing commands to contain several conditions to dynamically decide which parts of a thing to update and which not

Issue #1927 / PR #2232 enhances the existing conditional updates for Merge Thing commands (PATCH HTTP API) to contain not only one, but several conditions to dynamically decide which parts of a thing to update and which not based on the current value of the thing.

This allows to efficiently only update changed parts of a thing without the need to send multiple commands, but combine multiple modifications in one single command and effectively one database operation.

The documentation of the feature can be found here.

Changes

Improving WoT based validation performance for merge commands

PR #2211 improves the WoT validation performance when using Merge Thing commands by not validating the complete thing but only the parts which were changed with the command.

Enhancing distributed tracing, e.g. with a span for the authentication step and by adding the error response for failed API requests

Distributed tracing traces were enhanced with a span for the authentication step and additionally, failed API calls will now also contain the error response sent back to the API caller in the trace.

Updating dependencies to their latest versions

Used dependencies were updated to their latest versions to benefit from bugfixes and improvements.

Bugfixes

Fixing nginx CORS configuration which caused Safari / iOS browsers to fail with CORS errors

Safari and iOS had issues with the default CORS configuration of the provided nginx configuration for Ditto, causing CORS errors when accessing the Ditto API or UI from a different origin.
PR #2210 fixes this issue.

Fixing transitive resolving of Thing Models referenced with tm:ref

Issue #2204 / PR #2205 fixes an issue with transitive resolving of Thing Models referenced with tm:ref in the WoT model of a thing.

PR #2220 fixes the issue that sorting in the Ditto search on a JSON array caused an error.

Fixing issues around “put-metadata” in combination with merge commands

PR #2226 resolves issue #1790 and other problems around using put-metadata in combination with Merge Thing commands.

Fixing that certificate chains for client certificate based authentication in Ditto connection was not fully parsed

PR #2222 fixes that certificate chains for client certificate based authentication in Ditto connections were not fully parsed, causing issues when intermediate certificates were contained in the chain.

Fixing deployment of Ditto on OpenShift

PR #2225 fixes the reported issue #2207 that the default Ditto nginx configuration did not work out-of-the-box on OpenShift due to its stricter security policies.

Helm Chart

The Helm chart was enhanced with the configuration options of the added features of this release, in addition to that additional Helm values were added, e.g. in order to be able to configure some garbage collection settings or settings of the pod disruption budget.

Migration notes

No known migration steps are required for this release.