Skip to content

Repository files navigation

Cumulocity Dynamic Mapper

Map arbitrary broker payloads to and from the Cumulocity domain model using a graphical editor or JavaScript-based mappings.

What It Does

The Dynamic Mapper connects to external brokers and APIs, subscribes to topics, transforms payloads, and routes data bidirectionally:

  • Inbound: Broker -> Cumulocity
  • Outbound: Cumulocity -> Broker/API

It supports zero-code mapping, code-based mapping, and AI-assisted mapping suggestions.

Core Features

  • Connect multiple brokers/connectors at the same time
  • Create bidirectional mappings between broker payloads and Cumulocity APIs
  • Build mappings in a graphical editor or with JavaScript
  • Transform payloads with JSONata or JavaScript
  • Filter by topics and expressions
  • Explore live traffic via Message Explorer
  • Use AI agents to propose mapping definitions from observed/provided payloads
  • Run in multi-tenant environments

Supported Connectors

Connector Purpose
AMQP 0-9-1 Connect to brokers like RabbitMQ
AMQP 1.0 Connect to AMQP 1.0 systems (Azure Service Bus, Artemis, Solace, etc.)
Apache Kafka Integrate with Kafka topics
Apache Pulsar Integrate with Pulsar topics
Cumulocity API Create/update/delete managed objects, events, alarms, measurements
Cumulocity MQTT Service Use Cumulocity's built-in MQTT broker with device isolation
Google Cloud Pub/Sub Publish/subscribe data via a Google Cloud Pub/Sub topic and subscription, e.g. for ingestion into Google's Manufacturing Data Engine (MDE)
HTTP Connector Receive payloads via REST endpoints
MQTT Broker Connect to third-party MQTT brokers (HiveMQ, Mosquitto, etc.)
Webhook Forward data to external REST APIs

Documentation

Everything beyond this page, CHANGES.md, and FAQ.md lives under docs/ — see docs/README.md for the full index. Frequently needed pages:

API

Build and Test

Project modules and common commands are documented in AGENTS.md and module docs.

# Build all modules (from repo root)
mvn clean package

# Backend tests
cd dynamic-mapper-service
mvn test

# Frontend dev / tests
cd ../dynamic-mapper-ui
npm start
npm test

Test Assets and Sample Data

Load Test

Sample Mappings

Import and export mappings from the Inbound Mappings / Outbound Mappings table in the UI, individually or all at once — there is no longer a standalone import script. Ready-made sets to start from:

Security Notes for Code-Based Mappings (JavaScript)

User-defined JavaScript is executed inside the backend JVM with sandbox restrictions. The GraalVM context is configured to minimize guest-code access to host resources.

The sandbox behavior has been validated with examples such as:

  • Accessing process.env from JavaScript (blocked)
  • Accessing host class java.lang.System via Java.type(...) (blocked)

Reference: GraalVM Sandboxing


These tools are provided as-is and without warranty or support. They do not constitute part of the product suite. Users are free to use, fork and modify them, subject to the license agreement. While we welcome contributions, we cannot guarantee to include every contribution in the main project.

For more information, see cumulocity.com or ask a question in the Cumulocity Community.

About

The ultimate Mapper for building the bridge between any Message Broker and Cumulocity IoT in a zero-code approach!

Topics

Resources

Contributing

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages