HomeDocs › Migration › Flowable

Migrate from Flowable to Priostack

Last updated: 2026-04-06 · 11 min read

Flowable 6 is the closest architectural cousin to Priostack: both support BPMN 2.0, DMN 1.3, and CMMN 1.1. Your process and decision models are largely portable — the main changes are in the extension namespace and worker implementation.

Concept Mapping

FlowablePriostackCompatibility
Flowable Engine (BPMN)Priostack BPMN EngineNative
Flowable DMN EngineBuilt-in DMN 1.3Native
Flowable CMMN EngineBuilt-in CMMN 1.1Native
JavaDelegate (Service Task)Job Worker (REST polling)Rewrite required
flowable:serviceTask (HTTP task)Job Worker calling external HTTPRewrite required
FlowableMail (mail task)Worker that calls your mailerRewrite required
Flowable REST API (/process-api)Priostack REST API (/api/v1)Path changes
Flowable IDM (users/groups)Priostack accounts + admin consoleDifferent model
Flowable ModelerCamunda Modeler (Zeebe profile)Use Camunda Modeler

BPMN: Extension Namespace Changes

Flowable uses the flowable: namespace. Replace with zeebe: task definitions:

Before (Flowable):

<serviceTask id="validate-order" name="Validate Order"
  flowable:class="com.example.ValidateOrderDelegate">
  <extensionElements>
    <flowable:field name="threshold" stringValue="500" />
  </extensionElements>
</serviceTask>

After (Priostack):

<serviceTask id="validate-order" name="Validate Order">
  <extensionElements>
    <zeebe:taskDefinition type="validate-order" />
    <zeebe:ioMapping>
      <zeebe:input source="500" target="threshold" />
    </zeebe:ioMapping>
  </extensionElements>
</serviceTask>
Remove flowable:class, flowable:expression, flowable:async, flowable:exclusive attributes. These are not parsed by Priostack and some will cause deployment errors.

DMN: Direct Compatibility

Flowable DMN 1.3 tables deploy to Priostack unchanged — same XML format. Deploy and evaluate:

# Deploy DMN
curl -X POST https://priostack.com/api/v1/deployments \
  -H "X-API-Key: ps_your_key" \
  -H "Content-Type: application/xml" \
  --data-binary @risk-score.dmn

# Evaluate
curl -X POST https://priostack.com/api/v1/decisions/evaluate \
  -H "X-API-Key: ps_your_key" \
  -d '{"decision_id":"riskScore","variables":{"age":35,"income":60000}}'

CMMN: Direct Compatibility

Flowable CMMN 1.1 case models also deploy without changes. Priostack supports:

# Deploy CMMN
curl -X POST https://priostack.com/api/v1/deployments \
  -H "X-API-Key: ps_your_key" \
  -H "Content-Type: application/xml" \
  --data-binary @investigation.cmmn

# Start a case instance
curl -X POST https://priostack.com/api/v1/case-instances \
  -H "X-API-Key: ps_your_key" \
  -d '{"case_id":"investigation","variables":{"subject":"ABC Corp"}}'

REST API Endpoint Mapping

Flowable RESTPriostack equivalent
POST /process-api/repository/deploymentsPOST /api/v1/deployments
POST /process-api/runtime/process-instancesPOST /api/v1/process-instances
GET /process-api/runtime/process-instancesGET /api/v1/process-instances
GET /process-api/runtime/tasksGET /api/v1/tasks
POST /process-api/runtime/tasks/{id} (action: complete)POST /api/v1/tasks/{key}/complete
POST /dmn-api/dmn-rule/executePOST /api/v1/decisions/evaluate
POST /cmmn-api/cmmn-runtime/case-instancesPOST /api/v1/case-instances
POST /process-api/runtime/signalsPOST /api/v1/messages (message events)

Migration Steps

Step 1 — Export definitions

From Flowable Modeler or repository, export all .bpmn, .dmn, and .cmmn files.

Step 2 — Strip Flowable extensions from BPMN

# Patterns to find and replace in .bpmn files:
flowable:class="..."           → remove
flowable:expression="..."      → remove
flowable:async="true"          → remove
flowable:exclusive="..."       → remove
flowable:formKey="..."         → remove
flowable:candidateGroups="..." → remove

For each replaced service task, add a zeebe:taskDefinition type="your-type".

Step 3 — Deploy all definitions

for f in *.bpmn *.dmn *.cmmn; do
  curl -X POST https://priostack.com/api/v1/deployments \
    -H "X-API-Key: ps_your_key" \
    -H "Content-Type: application/xml" \
    --data-binary @"$f"
  echo "Deployed $f"
done

Step 4 — Port JavaDelegates to REST workers

Each JavaDelegate class becomes a polling worker. See the Activiti migration guide for a Node.js worker example — the same pattern applies.

Step 5 — Remove Flowable Spring configuration

Remove flowable-spring-boot-starter from your dependencies. Workers only need an HTTP client to communicate with Priostack.

Step 6 — Test with representative instances

Start one instance of each process type and validate the happy path before migrating production traffic.

Flowable-specific Features: Status

Flowable featureStatus in Priostack
Async service tasks (flowable:async)All service tasks are async by default
Mail task (flowable:mail)Implement as a worker that calls your SMTP/SES
HTTP task (flowable:http)Implement as a worker that calls the target URL
Script task (flowable:script)Not supported — use a worker
Shell taskNot supported — use a worker
Camel taskNot supported — use a worker that delegates to Camel
Event registryUse message events (POST /api/v1/messages)
Content API (attachments)Not supported — store in your own object store
Flowable CMMN and DMN models are the most portable. If you use Flowable primarily for CMMN-driven case management, your migration is largely a redeploy. Contact support@priostack.com with questions.

← Activiti Migration · Back to Docs →