Skip to content

Release 6.4.3

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Aug 13:21

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

  • explorerSessionTTLMinutes now 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 parentId limitation with autoCreateDeviceMO

    • Clarified in the Smart Function runtime type definitions that parentId is not yet honored when autoCreateDeviceMO creates a device — tracked further under #537.

🐛 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/# rejected fridgeNew/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.
  • 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 externalId is null/undefined #482

    • A JavaScript null/undefined externalId was 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.
  • 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 RepairStrategy handling

    • 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.

  • MappingTreeNode deletion 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.mappingNode and some dead code.
  • Reviewed and simplified the processor package

    • AbstractExtensibleResultProcessor, ExtensionResultProcessor, BaseProcessor/SendInboundProcessor, and DynamicMapperInboundRoutes were cleaned up; the now-unused ExecutionContext class was removed and its responsibilities folded into ProcessingContext.
    • The JSONata inbound/outbound processors (AbstractJSONataExtractionProcessor, JSONataInboundProcessor, JSONataOutboundProcessor) were reviewed and had significant duplicated logic consolidated.
    • Unused methods removed from SubstitutionContext and SubstitutionEvaluation.
  • Reviewed the mapping stepper and unified editor

    • MappingStepperService, MappingStepperComponent, and MappingUnifiedEditorComponent were simplified and had dead code removed.
  • Reviewed the subscription and substitution UI components

    • SubscriptionService, SubstitutionManagementService, MappingTransformationStepComponent, MappingStepperComponent, and TypeSelectorComponent were 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.
  • Migrated to Cumulocity 2026.43.0 (bootstrap 4.0.7) and updated the web SDK

    • Backend c8y.version raised to 2026.43.0, BootstrapService adjusted accordingly.
    • Frontend Cumulocity Web SDK dependencies updated (including vanilla-jsoneditor and related Angular/@c8y packages).

Cumulocity Dynamic Mapper · v6.4.3 · August 2026
All releases on GitHub
Full Changelog: v6.4.2...develop