QuantumBPM as a Camunda Alternative
If you are evaluating a Camunda alternative, this page lays out where QuantumBPM fits and where it differs from Camunda 8.
QuantumBPM is a single-product BPMN + DMN platform: one product, one UI, one API. Self-hosted deployments can split the backend and the web UI into separate containers if you want to, but you are still operating one product against one Postgres and one Temporal, not a constellation of microservices.
Camunda 8 is the closest like-for-like comparison because it is the only mainstream stack that ships both BPMN and DMN. If you only need a decision engine and are weighing Camunda DMN against Drools or jDMN, see the DMN engine comparison instead.
Quick Overview
DMN 1.5 Level 3
Full conformance with the latest DMN specification
99.32% TCK
Industry-leading specification compliance
Sub-ms Latency
Native Go performance, no JVM overhead
Built-in Audit Trail
Every decision stored with full input/output context
Platform Comparison: QuantumBPM vs Camunda 8
Camunda 8 is the only mainstream platform that ships BPMN and DMN as one product line, so it's the natural like-for-like comparison. Camunda 8 is built around Zeebe, an event-sourced Raft-based workflow broker, and exposes BPMN through a constellation of products (Operate, Tasklist, Optimize, Identity, Modeler). QuantumBPM ships the same surface area as one product backed by Postgres and Temporal.
Architecture & Footprint
| Aspect | QuantumBPM | Camunda 8 |
|---|---|---|
| Runtime | Go services + Temporal worker | JVM stack: Zeebe broker + Operate + Tasklist + Optimize + Identity + Modeler |
| Storage | Postgres + Temporal (Postgres / MySQL / Cassandra) | Zeebe internal log + Elasticsearch / OpenSearch / RDBMS for exporters |
| Self-hosted deployment | docker-compose shipped: backend (+ optional UI container) + Postgres + Temporal | Multi-service Helm chart with ~6+ components |
| Memory footprint | ~50-200 MB for backend; Temporal sized to load | Several GB across services (Elastic alone usually >1 GB) |
| Cold start | Seconds | Minutes (waiting for Zeebe + Elastic + Operate + Tasklist) |
Modeling, Operating, and Tasks: One UI vs Many Products
| Aspect | QuantumBPM | Camunda 8 |
|---|---|---|
| BPMN modeling | Web modeler in the same app | Web Modeler + Desktop Modeler |
| DMN modeling | Web modeler in the same app, DMN 1.5 | Web Modeler, partial DMN 1.3 |
| Running instances | Built into the same UI | Operate (separate product) |
| User tasks | API only - claim, complete, query (no built-in tasklist UI; embed in your own app) | Tasklist (separate product) |
| Process analytics | Overview dashboard, Prometheus, OTel | Optimize (separate product, Enterprise) |
| Identity / RBAC | Project RBAC + OIDC claims | Identity (separate product) |
| Number of APIs to integrate against | One OpenAPI spec | Zeebe gRPC + Operate REST + Tasklist GraphQL + Optimize REST + Identity REST |
DMN Capabilities
| Aspect | QuantumBPM | Camunda 8 |
|---|---|---|
| DMN spec | Full DMN 1.5, conformance Level 3 | Partial DMN 1.3 |
| TCK pass rate | 99.32% (3367/3390) | 84.07% (DMN-Scala 1.9)[1] |
| Boxed expressions | All DMN 1.5 types (conditional, list, context, relation, filter, invocation, quantified, for) | Subset |
| FEEL editor | LSP-backed: autocomplete, hover docs, signatures, inline errors | Modeler-only autocomplete |
| Historical simulation | Built-in: replay a draft over real past executions | Not available |
| Decision services | Yes | No |
BPMN Runtime & Operations
| Aspect | QuantumBPM | Camunda 8 |
|---|---|---|
| Resolve incidents | In the same UI | Operate UI |
| Modify token state (insert / cancel tokens) | Yes (API today, UI on roadmap) | Operate UI |
| Live instance migration | Yes, with explicit migration plans | Operate UI |
| Replay scrubbing | Slider through reconstructed execution trace | Audit log |
| Resume from given state | Start a new instance already at a node set | No |
| Compensation / saga rollback | Propagates across call activities into called processes, recursive sub-process compensation (details) | Stops compensation at the call activity boundary |
| FEEL as the script language | Native (one expression language across BPMN + DMN) | Native (FEEL inside Zeebe) |
| External workers | HTTP poll API (Camunda-style) | Job workers (gRPC + REST) |
Compensation and the Saga Pattern
Long-running processes routinely need to undo work that already committed: refund a payment, release a reservation, cancel a booking. BPMN models this with compensation, and it is where QuantumBPM pulls clearly ahead of Camunda 8.
The gap shows up the moment you factor a process into reusable called processes. Camunda 8 stops compensation at the call activity boundary, so a called process's own undo logic never runs when the parent rolls back, and a rollback can silently leave a sub-process's effects in place. QuantumBPM propagates compensation into the called process by default and runs the child's own handlers, with recursive compensation through nested sub-processes. You opt into black-box behavior per call site by attaching a boundary handler to the call activity.
For teams implementing the saga pattern across services, that is the difference between a rollback that is actually complete and one that is not. See The Saga Pattern in BPMN for a worked travel-booking example, or the compensation reference for the full semantics.
Developer Experience
| Aspect | QuantumBPM | Camunda 8 |
|---|---|---|
| First-party SDKs | JS/TS, Python, Java, Go | JS/TS, Java; Go deprecated[2]; Python community |
| One platform API | Yes - single OpenAPI spec | No - separate APIs per product |
| Local dev loop | docker-compose up | Camunda Run, Self-Managed Helm, or SaaS |
Why QuantumBPM Is Built on Temporal
A BPMN engine spends most of its complexity on one thing: durable execution - surviving crashes, network partitions, retries, and weeks-long timers while keeping a long-running process consistent. Camunda 8 solves this by building Zeebe, a from-scratch Raft-based event-sourced broker. We made a different bet:
Rather than build a bespoke durable execution engine, we built BPMN on top of Temporal - a battle-tested durable execution platform run in production at Uber, Snap, Coinbase, HashiCorp, Stripe, Datadog, and others.
What Temporal Gives Us
- Durable execution out of the box. Workflow state is event-sourced and replayed automatically on worker restart. We don't write any "where was I after the crash?" recovery code.
- Deterministic replay. Every workflow run can be reconstructed event-by-event from history. This is what powers our replay scrubber in the running-instance UI.
- Native primitives we'd otherwise reinvent. Signals (BPMN messages and signals), timers (BPMN timer events), child workflows (call activities), and queries (live state inspection) are all first-class Temporal concepts.
- Operational maturity. Exactly-once activity semantics, retry policies, heartbeating, rate limiting, sticky workers, namespace isolation, observability hooks.
- Standard storage. Postgres, MySQL, or Cassandra - pick one. No proprietary log format to operate.
- Polyglot worker SDKs. Go, Java, Python, TS, Ruby, .NET, PHP. Service workers can run in any of these directly against Temporal, or via our HTTP poll API.
The practical consequence: the storage layer, replay engine, and event sourcing are not ours to maintain. Temporal is funded, well-staffed, and has a public roadmap. Our engineering effort goes into the layers that matter to our users - the BPMN/DMN spec, the modeler, simulation, and operational tooling.
What QuantumBPM Adds on Top of Temporal
Temporal alone isn't a BPMN engine. It's a primitive for writing durable workflows in code. Our engine translates BPMN semantics into Temporal workflows and adds everything an enterprise BPMN platform actually needs:
- Full BPMN 2.0 element coverage - every event type (timer, message, signal, error, escalation, compensation, link, terminate), interrupting and non-interrupting boundary events, event subprocesses, ad-hoc subprocesses, call activities, multi-instance, standard loops.
- Scope tree and event bubbling - compensation, escalation, and errors target logical scopes and traverse the active ancestry chain, so re-entered subprocesses resolve correctly. A naive Temporal implementation can't handle this.
- Concurrency-safe interpreter state -
BPMNContextand a mutex-guardedInterpreterStatemake sure parallel and inclusive gateways and non-interrupting boundary events don't race against shared variables. - Live instance modification - insert a token before a node, or cancel a token, on a running workflow without restarting it.
- Version migration - explicit migration plans move in-flight instances to a newer process version.
- Resume from given state - start a fresh instance already positioned at an arbitrary set of nodes (backfills, retries from a known checkpoint, deterministic test setups).
- Replay slider UI - reconstructs process state at any point in Temporal's event history (
GetProcessStateFromHistory) and lets operators scrub through it. - Inline DMN integration - business-rule tasks invoke registered DMN definitions in-process; no external decision-service round-trip.
- External worker queue - Camunda-style HTTP poll API for service tasks that need to live outside the Temporal worker pool (e.g. languages without a Temporal SDK, or workers behind a firewall).
- Visual modeler, projects, RBAC, audit history, multi-tenancy, OpenTelemetry, metrics - the platform layer that wraps the engine into a product.
The split is clean: Temporal owns durability and execution. QuantumBPM owns the BPMN spec, the user-facing surfaces, and the operational controls business operators expect.
When to Choose QuantumBPM
QuantumBPM is ideal if you:
- Want one product for BPMN processes, DMN decisions, and operations - with a clean user-task API to embed in your own UI - not a constellation of services
- Want full DMN 1.5 conformance with the best authoring experience for FEEL, decision tables, and boxed expressions
- Want to operate live BPMN instances from a UI: scrub through history, resolve incidents, modify token state, migrate to a new version
- Want a historical simulation to validate rule changes against your real past traffic before promoting them
- Want a built-in audit trail for every decision evaluation
- Want a polyglot SDK in JS/TS, Python, Java, or Go against a single OpenAPI spec
- Want a runtime that runs on durable execution you don't have to maintain - built on Temporal, deployed with Postgres
- Want simple deployments on Kubernetes or a VM (a handful of containers, no Elasticsearch dependency)
Sources
- Camunda DMN-Scala TCK Results - 2850/3390 tests passed (July 2024)
- Camunda Go Client - Go client for Zeebe (deprecated)
- Camunda 8 Architecture - Camunda 8 requires distributed microservices (Zeebe)
- Camunda JVM Memory - Default Optimize heap: 1GB
Frequently Asked Questions
Is QuantumBPM a good Camunda alternative?
QuantumBPM is the closest like-for-like alternative to Camunda 8 because it overlaps both surfaces. It ships a BPMN 2.0 process engine and a DMN 1.5 Level 3 decision engine as one product, backed by Postgres and Temporal, instead of Camunda 8's Zeebe broker plus a constellation of products (Operate, Tasklist, Optimize, Identity). For teams that want both standards without operating a microservice platform, it is a direct alternative.
Can I migrate my Camunda BPMN and DMN models to QuantumBPM?
BPMN 2.0 and DMN 1.5 are vendor-neutral XML standards, so models are portable at the notation level, and FEEL is the expression language in both, so decision logic carries over directly. Vendor-specific extensions (Camunda's zeebe: and camunda: namespaces) map to QuantumBPM's quantum: extension namespace and need adjusting. See the platform overview to get started.
We are on Camunda 7. Is QuantumBPM an alternative to moving to Camunda 8?
Yes, and it is a natural moment to evaluate one. Camunda 7 to Camunda 8 is not an in-place upgrade: Zeebe replaces the embedded engine, the APIs change, and the operational surface grows to several products. Since you are re-platforming either way, the migration cost to QuantumBPM is comparable, and your BPMN and DMN models plus FEEL logic carry over as standards-based XML.
Do I need Zeebe or microservices to run QuantumBPM?
No. QuantumBPM runs as a single product against one Postgres and one Temporal. Self-hosted deployments can optionally split the backend and web UI into separate containers, but there is no event-sourced broker or product constellation to operate. docker-compose up is the local dev loop.
How does QuantumBPM compare to Drools or jDMN as a DMN engine?
If you only need decisions rather than a full BPMN platform, QuantumBPM is a standalone DMN 1.5 Level 3 engine with 99.32% TCK conformance and native, non-JVM performance. Drools and jDMN are JVM-based. The DMN engine comparison covers conformance, footprint and tooling in detail.
Ready to Try QuantumBPM?
Start with Developer tier and experience quantitative decisioning today. If you have any more questions, feel free to reach out to us.