Migrate from Camunda 7 to Priostack
Last updated: 2026-04-06 · 12 min read
Concept Mapping
Before migrating, understand how Camunda 7 concepts map to Priostack equivalents.
| Camunda 7 | Priostack | Notes |
|---|---|---|
| Process Engine (embedded/server) | Priostack Engine (hosted) | No local JVM required |
| External Task Pattern | Job Worker (polling) | Same poll-activate-complete cycle |
| Java Delegate / Expression | Service Task + worker | Move logic to a worker process |
| Cockpit (monitoring) | Dashboard / Console | Web UI + REST API |
| Tasklist (user tasks) | /tasklist | Same task claim/complete model |
REST API /engine-rest | /api/v1 | Different paths — see mapping below |
| DMN Engine (decision tables) | Built-in DMN 1.3 evaluation | POST /api/v1/decisions/evaluate |
| Form Fields (embedded forms) | Variable map in task complete | Pass variables in POST /api/v1/tasks/{key}/complete |
| Tenants (multi-tenancy) | Per-account isolation | Each API key = one tenant namespace |
REST API Endpoint Mapping
| Camunda 7 endpoint | Priostack equivalent |
|---|---|
POST /engine-rest/deployment/create | POST /api/v1/deployments |
POST /engine-rest/process-definition/{id}/start | POST /api/v1/process-instances |
GET /engine-rest/process-instance | GET /api/v1/process-instances |
GET /engine-rest/external-task | POST /api/v1/jobs/activate (poll model) |
POST /engine-rest/external-task/{id}/complete | POST /api/v1/jobs/{key}/complete |
POST /engine-rest/external-task/{id}/failure | POST /api/v1/jobs/{key}/fail |
GET /engine-rest/task | GET /api/v1/tasks |
POST /engine-rest/task/{id}/complete | POST /api/v1/tasks/{key}/complete |
POST /engine-rest/message | POST /api/v1/messages |
POST /engine-rest/decision-definition/{id}/evaluate | POST /api/v1/decisions/evaluate |
Migration Steps
Step 1 — Export your process definitions
From Camunda 7 Cockpit or the filesystem, collect all .bpmn and .dmn files. Priostack accepts the same XML format.
Step 2 — Remove Java-specific extensions
Camunda 7 uses Java Delegates and expression language that Priostack does not support. Strip or replace these elements:
camunda:class, camunda:expression, camunda:delegateExpression from Service Tasks. Replace with zeebe:taskDefinition type="your-worker-type".Before (Camunda 7):
<serviceTask id="credit-check" name="Credit Check" camunda:class="com.example.CreditCheckDelegate" />
After (Priostack / Zeebe-compatible):
<serviceTask id="credit-check" name="Credit Check">
<extensionElements>
<zeebe:taskDefinition type="credit-check" />
</extensionElements>
</serviceTask>
Step 3 — Deploy to Priostack
curl -X POST https://priostack.com/api/v1/deployments \ -H "X-API-Key: ps_your_key" \ -H "Content-Type: application/xml" \ --data-binary @loan-approval.bpmn
Step 4 — Port your External Task workers
Camunda 7 External Task workers poll /engine-rest/external-task/fetchAndLock. In Priostack, poll POST /api/v1/jobs/activate:
Camunda 7 worker (conceptual):
// fetchAndLock
POST /engine-rest/external-task/fetchAndLock
{"workerId":"w1","maxTasks":10,"topics":[{"topicName":"credit-check","lockDuration":30000}]}
Priostack worker:
// activate
POST /api/v1/jobs/activate
{"type":"credit-check","worker":"w1","maxJobsToActivate":10,"timeout":30000}
// complete a job
POST /api/v1/jobs/{jobKey}/complete
{"variables":{"score":720,"approved":true}}
Step 5 — Migrate DMN decision tables
Camunda 7 DMN 1.1/1.3 tables are fully compatible. Deploy them alongside BPMN or standalone:
curl -X POST https://priostack.com/api/v1/deployments \ -H "X-API-Key: ps_your_key" \ -H "Content-Type: application/xml" \ --data-binary @credit-score.dmn
Evaluate standalone:
curl -X POST https://priostack.com/api/v1/decisions/evaluate \
-H "X-API-Key: ps_your_key" \
-H "Content-Type: application/json" \
-d '{"decision_id":"creditScore","variables":{"score":720,"employment":"full-time"}}'
Step 6 — Update User Task handling
Camunda 7 task query and claim API maps directly:
# List open tasks
GET /api/v1/tasks?process_instance_id={instanceKey}
# Complete a task (equivalent to setVariables + complete)
POST /api/v1/tasks/{taskKey}/complete
{"variables":{"approved":true,"comment":"Looks good"}}
Step 7 — Remove Spring / CDI dependencies
If your workers were embedded in a Spring Boot app using camunda-bpm-spring-boot-starter, extract the business logic into standalone worker processes. Your workers can be any language — Priostack workers speak plain HTTP.
Unsupported Features
| Camunda 7 feature | Status in Priostack |
|---|---|
| Embedded subprocess history (full audit trail) | Instance state + events — no fine-grained history DB |
| BPMN compensation events | Not yet supported (roadmap) |
| Script tasks (Groovy, JavaScript) | Not supported — use a worker process instead |
| Case execution (CMMN 1.0 embedded in Camunda 7) | CMMN 1.1 supported as a separate deployment |
| Batch operations API | Not yet supported |