Release 6.4.2
Release Notes — Cumulocity Dynamic Mapper v6.4.2
July 2026 · Dynamic Mapper Service
This release focuses on connector resilience: the Dynamic Mapper now recovers cleanly
from temporary Cumulocity backend outages instead of getting stuck in a failed or
partially-functional state. It also adds backfill for outbound type subscriptions,
a faster/smaller web app bundle, visible AI token usage, and server-side search for
subscriptions.
✨ New Features
-
Backfill existing devices into outbound type subscriptions #526
- Outbound subscriptions scoped to a device type previously only applied to devices created after the subscription was set up.
- A new resync action backfills already-existing devices of that type into the subscription, triggered on demand from the subscription UI and processed as a background job with progress reported via logging events.
-
Server-side search for subscriptions #532
- Searching for devices in the outbound subscription view is now performed server-side via a new
SubscriptionQueryService, with wildcard support added shortly after. - Previously search was limited to whatever was loaded client-side, so large device populations were only partially searchable.
- Searching for devices in the outbound subscription view is now performed server-side via a new
-
Token usage shown in AI-prompt #533
- The AI-prompt panel used to auto-generate Smart Functions now displays token usage for the request, giving visibility into cost/consumption per generation.
🔧 Improvements
-
Smaller web app bundle #534
- Images bundled with the web app plugin are now optimized as part of the build (
optimize-images.jsprebuild step), reducing the overall plugin size.
- Images bundled with the web app plugin are now optimized as part of the build (
-
Quieter logging during backend outages
- When the Cumulocity platform is temporarily unavailable, the service now avoids logging the full stack trace for the resulting errors, cutting down log noise during an already-noisy incident.
🐛 Bug Fixes
-
Connector reconnect & lifecycle fixes after temporary backend unavailability #530
- Fixes a class of failures where, after a brief Cumulocity platform outage or gateway hiccup, a connector's underlying transport (e.g. MQTT) recovered but the Dynamic Mapper itself remained stuck or only partially functional:
- 401 WebSocket reconnect loop. The management/cache-inventory notification WebSockets (
ManagementSubscriptionClient,CacheInventoryUpdateClient) failed their reconnect handshake as unauthorized on every attempt. The underlying WebSocket library reports a rejected upgrade as close code1002, not401, so the old disconnect handler never detected the unauthorized state and kept reusing an expired token indefinitely. Reconnect now also detectsreason.contains("401")and prefers a stored/refreshed token before minting a new one. - 502/503/504 during subscription initialization. After reconnect, the Dynamic Mapper rebuilds its mapping/subscription caches via a Cumulocity Inventory API call that can transiently return
502 Bad Gateway(or 503/504) during a brief outage. This previously aborted subscription initialization entirely with no retry, even though the connector transport was healthy. Retryable status codes are now detected, the connector is markedRETRYING(newConnectorStatusvalue) instead ofFAILED, and initialization is retried with exponential backoff (10s initial, doubling, capped at 300s) until it succeeds or a non-retryable error occurs.
- 401 WebSocket reconnect loop. The management/cache-inventory notification WebSockets (
- The underlying lifecycle/concurrency fixes were then rolled out consistently across all broker connectors (AMQP 1.0, AMQP, HTTP, Kafka, MQTT v3/v5, Cumulocity MQTT Service/Pulsar), and SSL support plus explorer-listener handling were extracted out of
AConnectorClientinto dedicated classes (ConnectorSslSupport,ExplorerListenerRegistry) to make that logic easier to test and reuse. - A new integration test setup and fault-injection script (
resources/script/backend/TEST-SETUP-C8Y-UNAVAILABLE.md,resources/script/backend/fault_inject.py) reproduce both failure modes for verification.
- Fixes a class of failures where, after a brief Cumulocity platform outage or gateway hiccup, a connector's underlying transport (e.g. MQTT) recovered but the Dynamic Mapper itself remained stuck or only partially functional:
-
AMQTTClient inconsistency #535
- Fixed an inconsistency in
AMQTTClient(Cumulocity MQTT Service connector) uncovered while hardening the connector lifecycle.
- Fixed an inconsistency in
-
Race condition updating mapping statistics #536
- Fixed a race condition when concurrently updating the message-count statistic on
MappingStatus.
- Fixed a race condition when concurrently updating the message-count statistic on
Cumulocity Dynamic Mapper · v6.4.2 · July 2026
All releases on GitHub
Full Changelog: v6.4.1...v6.4.2