Release Notes — Cumulocity Dynamic Mapper 6.4.3
August 2026 · Dynamic Mapper
This release reworks the AI Assistant's review-vs-generate flow, fixes a class of MQTT
wildcard-topic validation bugs, and includes a broader internal code review pass across
the processor, stepper, and subscription/substitution code paths, plus platform SDK
updates and a documentation format migration.
👤 Customer-Facing Changes
Changes that affect what users see or how the product behaves.
✨ New Features
- Inline suggestion chips replace the full-screen review/generate choice #541
- Opening the AI Assistant for a mapping that already has a Smart Function or substitutions used to show a separate, blocking full-screen choice ("What would you like to do?") before any chat was visible.
- Replaced with small clickable suggestion chips ("Review / Refine existing…" / "Generate new… from scratch") rendered inline in the chat itself, so the chat is visible immediately and the user picks intent from within it.
- Brand-new mappings (nothing to review yet, e.g. created from Message Explorer or "+Add mapping") are unaffected — generation still starts immediately with no user interaction.
- The welcome area also now explains what each choice does, instead of showing just a bare headline/title.
🔧 Improvements
-
explorerSessionTTLMinutesnow configurable- The Message Explorer session TTL is now exposed as a setting in the service configuration UI, instead of being hardcoded in the backend.
-
Removed the "session started" toast in Message Explorer
- Starting a new Message Explorer session no longer pops up a success toast; the "session stopped"/"session updated"/"session expired" notifications are unchanged.
-
Documented
parentIdlimitation withautoCreateDeviceMO- Clarified in the Smart Function runtime type definitions that
parentIdis not yet honored whenautoCreateDeviceMOcreates a device — tracked further under #537.
- Clarified in the Smart Function runtime type definitions that
🐛 Bug Fixes
-
Mapping topic
#wildcard validation incorrectly rejected valid MQTT topic samples #538- The mapping topic and topic-sample were compared for exact segment-count equality before ever applying
#-wildcard semantics, so a trailing#only matched when the sample happened to have the same number of levels as the topic pattern — e.g.fridgeNew/#rejectedfridgeNew/east/sensor-ny-99, blocking the mapping wizard's "Next" button. - Per MQTT semantics, a trailing
#now correctly matches any number (including zero) of remaining levels.
- The mapping topic and topic-sample were compared for exact segment-count equality before ever applying
-
AI Assistant silently dropped the first message when generating a brand-new Smart Function #540
- The very first AI generation prompt for a new mapping was silently dropped with no visible error, due to an Angular component-lifecycle timing issue. Fixed so generation now reliably starts.
-
Don't implicitly create devices when a Smart Function's
externalIdisnull/undefined#482- A JavaScript
null/undefinedexternalIdwas silently coerced into the literal strings"null"/"undefined", which then passed downstream device-resolution checks and triggered implicit device creation for devices that were never meant to exist.
- A JavaScript
-
Fixed JSON ↔ Map parsing for Smart Functions
- Fixed a round-tripping bug converting between JSON and the Smart Function runtime's internal Map representation, which could produce incorrect payload data in some Smart Functions.
-
Fixed inconsistencies in
RepairStrategyhandling- Substitution repair strategies were not always applied consistently between JSONata processing and the edit-substitution UI; behavior is now consistent, and the JSONata documentation page now documents the available strategies.
⚙️ Internal / Implementation Changes
Refactoring, code-quality, and platform maintenance work with no intended change in
customer-visible behavior.
-
MappingTreeNodedeletion scanned every sibling branch instead of the matching topic level #539- Deleting a mapping scanned all sibling branches at the same tree depth to find the node to remove, instead of scoping to the matching topic level like the equivalent inner-node deletion path already did. Only mapping-ID uniqueness prevented this from ever producing an observable bug, but it was the wrong operation regardless. Also removed a latent NPE risk on
MappingTreeNode.mappingNodeand some dead code.
- Deleting a mapping scanned all sibling branches at the same tree depth to find the node to remove, instead of scoping to the matching topic level like the equivalent inner-node deletion path already did. Only mapping-ID uniqueness prevented this from ever producing an observable bug, but it was the wrong operation regardless. Also removed a latent NPE risk on
-
Reviewed and simplified the processor package
AbstractExtensibleResultProcessor,ExtensionResultProcessor,BaseProcessor/SendInboundProcessor, andDynamicMapperInboundRouteswere cleaned up; the now-unusedExecutionContextclass was removed and its responsibilities folded intoProcessingContext.- The JSONata inbound/outbound processors (
AbstractJSONataExtractionProcessor,JSONataInboundProcessor,JSONataOutboundProcessor) were reviewed and had significant duplicated logic consolidated. - Unused methods removed from
SubstitutionContextandSubstitutionEvaluation.
-
Reviewed the mapping stepper and unified editor
MappingStepperService,MappingStepperComponent, andMappingUnifiedEditorComponentwere simplified and had dead code removed.
-
Reviewed the subscription and substitution UI components
SubscriptionService,SubstitutionManagementService,MappingTransformationStepComponent,MappingStepperComponent, andTypeSelectorComponentwere cleaned up, with a large amount of now-unused subscription-handling code removed.
-
Documentation migrated to Markdown
- The plugin's in-app documentation (overview, JSONata reference) was converted from its previous format to Markdown, split into
overview-part1.md/overview-part2.md, matching the rest of the docs.
- The plugin's in-app documentation (overview, JSONata reference) was converted from its previous format to Markdown, split into
-
Migrated to Cumulocity 2026.43.0 (bootstrap 4.0.7) and updated the web SDK
- Backend
c8y.versionraised to2026.43.0,BootstrapServiceadjusted accordingly. - Frontend Cumulocity Web SDK dependencies updated (including
vanilla-jsoneditorand related Angular/@c8ypackages).
- Backend
Cumulocity Dynamic Mapper · v6.4.3 · August 2026
All releases on GitHub
Full Changelog: v6.4.2...develop