flowable/flowable-engine · error · FlowableException

Cannot unacquire external jobs. There is no BPMN or CMMN…

Error message

Cannot unacquire external jobs. There is no BPMN or CMMN engine available

What it means

FlowableException thrown by unaquireExternalWorkerJobs when neither the BPMN managementService nor the CMMN cmmnManagementService is available while trying to unacquire all jobs for a worker. Bulk unacquire needs at least one engine to execute against. Indicates the REST resource has no engine wired.

Solutions

  1. Configure at least one engine (BPMN or CMMN) so its management service is available to the REST layer.
  2. Verify flowable.process.enabled / flowable.cmmn.enabled and the datasource configuration.
  3. Check startup logs for engine initialization errors leaving the services null.

Example fix

// before
flowable:
  process:
    enabled: false
// after
flowable:
  process:
    enabled: true
Defensive patterns

Strategy: fallback

Validate before calling

if (processEngine == null && cmmnEngine == null) { throw new IllegalStateException("Bulk unacquire unavailable: no engine configured"); }

Try / catch

try { unacquireJobs(request); } catch (FlowableException e) { if (e.getMessage().contains("Cannot unacquire external jobs")) { alertOps("Engine misconfiguration"); } }

Prevention

When it happens

Trigger: POST /external-worker-job/unacquire/jobs (bulk path via unacquireJobs) on a deployment where both engines are absent or their services failed to inject.

Common situations: Standalone REST module without engine configuration; Spring Boot app with both flowable.process.enabled and flowable.cmmn.enabled set to false; engine startup failure.

Understand the failure class

Background: "not installed", "pip install", "required for": how missing-dependency errors surface across open-source libraries — this error's family across 34 libraries.

Related errors


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/0e4078bdc4184d72. Report an issue: GitHub.

Appendix: source

Thrown at modules/flowable-external-job-rest/src/main/java/org/flowable/external/job/rest/service/api/acquire/ExternalWorkerUnacquireJobResource.java:132

    }
    
    protected void unaquireExternalWorkerJobs(String workerId, String tenantId) {
        if (managementService != null) {
            if (StringUtils.isNotEmpty(tenantId)) {
                managementService.unacquireAllExternalWorkerJobsForWorker(workerId, tenantId);
            } else {
                managementService.unacquireAllExternalWorkerJobsForWorker(workerId);
            }
            
        } else if (cmmnManagementService != null) {
            if (StringUtils.isNotEmpty(tenantId)) {
                cmmnManagementService.unacquireAllExternalWorkerJobsForWorker(workerId, tenantId);
            } else {
                cmmnManagementService.unacquireAllExternalWorkerJobsForWorker(workerId);
            }
            
        } else {
            throw new FlowableException("Cannot unacquire external jobs. There is no BPMN or CMMN engine available");
        }
    }
}

View on GitHub (pinned to d6d39ce1c6)