{"record":{"id":"0e4078bdc4184d72","repo":"flowable/flowable-engine","slug":"cannot-unacquire-external-jobs-there-is-no-bpmn-o","errorCode":null,"errorMessage":"Cannot unacquire external jobs. There is no BPMN or CMMN engine available","messagePattern":"Cannot unacquire external jobs\\. There is no BPMN or CMMN engine available","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-external-job-rest/src/main/java/org/flowable/external/job/rest/service/api/acquire/ExternalWorkerUnacquireJobResource.java","lineNumber":132,"sourceCode":"    }\n    \n    protected void unaquireExternalWorkerJobs(String workerId, String tenantId) {\n        if (managementService != null) {\n            if (StringUtils.isNotEmpty(tenantId)) {\n                managementService.unacquireAllExternalWorkerJobsForWorker(workerId, tenantId);\n            } else {\n                managementService.unacquireAllExternalWorkerJobsForWorker(workerId);\n            }\n            \n        } else if (cmmnManagementService != null) {\n            if (StringUtils.isNotEmpty(tenantId)) {\n                cmmnManagementService.unacquireAllExternalWorkerJobsForWorker(workerId, tenantId);\n            } else {\n                cmmnManagementService.unacquireAllExternalWorkerJobsForWorker(workerId);\n            }\n            \n        } else {\n            throw new FlowableException(\"Cannot unacquire external jobs. There is no BPMN or CMMN engine available\");\n        }\n    }\n}\n","sourceCodeStart":114,"sourceCodeEnd":136,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-external-job-rest/src/main/java/org/flowable/external/job/rest/service/api/acquire/ExternalWorkerUnacquireJobResource.java#L114-L136","documentation":"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.","triggerScenarios":"POST /external-worker-job/unacquire/jobs (bulk path via unacquireJobs) on a deployment where both engines are absent or their services failed to inject.","commonSituations":"Standalone REST module without engine configuration; Spring Boot app with both flowable.process.enabled and flowable.cmmn.enabled set to false; engine startup failure.","solutions":["Configure at least one engine (BPMN or CMMN) so its management service is available to the REST layer.","Verify flowable.process.enabled / flowable.cmmn.enabled and the datasource configuration.","Check startup logs for engine initialization errors leaving the services null."],"exampleFix":"// before\nflowable:\n  process:\n    enabled: false\n// after\nflowable:\n  process:\n    enabled: true","handlingStrategy":"fallback","validationCode":"if (processEngine == null && cmmnEngine == null) { throw new IllegalStateException(\"Bulk unacquire unavailable: no engine configured\"); }","typeGuard":null,"tryCatchPattern":"try { unacquireJobs(request); } catch (FlowableException e) { if (e.getMessage().contains(\"Cannot unacquire external jobs\")) { alertOps(\"Engine misconfiguration\"); } }","preventionTips":["Ensure at least one engine is configured in the REST deployment","Run a startup health check on ManagementService availability","Keep engine auto-configuration enabled"],"tags":["configuration","engine","external-worker","rest-api"],"backgroundTag":"missing-dependency","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}