{"record":{"id":"d051869bda03875d","repo":"flowable/flowable-engine","slug":"could-not-start-process-instance-no","errorCode":null,"errorMessage":"Could not start process instance: no ","messagePattern":"Could not start process instance: no ","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"critical","filePath":"modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/behavior/impl/ProcessTaskActivityBehavior.java","lineNumber":74,"sourceCode":"    protected boolean sameDeployment;\n    protected ProcessTask processTask;\n\n    public ProcessTaskActivityBehavior(Process process, Expression processRefExpression, ProcessTask processTask) {\n        super(processTask.isBlocking(), processTask.getBlockingExpression(), processTask.getInParameters(), processTask.getOutParameters());\n        this.process = process;\n        this.processRefExpression = processRefExpression;\n        this.processRef = processTask.getProcessRef();\n        this.fallbackToDefaultTenant = processTask.getFallbackToDefaultTenant();\n        this.sameDeployment = processTask.isSameDeployment();\n        this.processTask = processTask;\n    }\n\n    @Override\n    public void execute(CommandContext commandContext, PlanItemInstanceEntity planItemInstanceEntity, ChildTaskActivityBehavior.VariableInfo variableInfo) {\n        CmmnEngineConfiguration cmmnEngineConfiguration = CommandContextUtil.getCmmnEngineConfiguration(commandContext);\n        ProcessInstanceService processInstanceService = cmmnEngineConfiguration.getProcessInstanceService();\n        if (processInstanceService == null) {\n            throw new FlowableException(\"Could not start process instance: no \" + ProcessInstanceService.class + \" implementation found for \" + planItemInstanceEntity);\n        }\n\n        String externalRef = null;\n        if (process != null) {\n            externalRef = process.getExternalRef();\n        } else if (processRefExpression != null) {\n            externalRef = processRefExpression.getValue(planItemInstanceEntity).toString();\n        } else if (processRef != null) {\n            externalRef = processRef;\n        }\n        if (StringUtils.isEmpty(externalRef)) {\n            throw new FlowableException(\"Could not start process instance: no externalRef defined for \" + planItemInstanceEntity);\n        }\n\n        Map<String, Object> inParametersMap = new HashMap<>();\n        handleInParameters(planItemInstanceEntity, cmmnEngineConfiguration, inParametersMap, cmmnEngineConfiguration.getExpressionManager());\n\n        FormInfo variableFormInfo = null;","sourceCodeStart":56,"sourceCodeEnd":92,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/behavior/impl/ProcessTaskActivityBehavior.java#L56-L92","documentation":"Flowable's CMMN engine throws this when a process task plan item must start a child BPMN process instance, but the CmmnEngineConfiguration has no ProcessInstanceService implementation registered. Without that service the engine cannot delegate process instantiation, so execute() aborts with a FlowableException naming the plan item instance.","triggerScenarios":"A case definition containing a process task plan item reaches activation and ProcessTaskActivityBehavior.execute() runs while cmmnEngineConfiguration.getProcessInstanceService() returns null.","commonSituations":"Embedding the CMMN engine standalone (CmmnEngineConfiguration) without the BPMN engine integration that supplies ProcessInstanceService; custom engine configuration that removed or never installed the process-instance module; using the cmmn engine in tests with only partial configuration.","solutions":["Run the CMMN engine together with the BPMN engine integration (e.g. use ProcessEngineConfiguration with CMMN enabled, or the combined app engine) so a ProcessInstanceService is registered","Verify the engine configuration actually wires ProcessInstanceService: call cmmnEngineConfiguration.getProcessInstanceService() at startup and assert non-null","If using a custom CmmnEngineConfiguration subclass, call the configuration hook that installs the process instance service (or set it explicitly: cmmnEngineConfiguration.setProcessInstanceService(...))","Check dependency set: flowable-cmmn-spring / flowable-spring-boot-starter-process + cmmn bring the integration; a minimal flowable-cmmn-engine-only setup will not have it"],"exampleFix":"// before (standalone cmmn engine, no bpmn integration)\nCmmnEngineConfiguration cfg = CmmnEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();\nCmmnEngine cmmnEngine = cfg.buildEngine(); // process tasks fail at runtime\n// after (combined engine config registers ProcessInstanceService)\nCmmnEngineConfiguration cfg = CmmnEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();\ncfg.setProcessInstanceService(new DefaultProcessInstanceService()); // or use the combined engine config\nCmmnEngine cmmnEngine = cfg.buildEngine();","handlingStrategy":"validation","validationCode":"// at engine bootstrap\nif (cmmnEngineConfiguration.getProcessInstanceService() == null) {\n    throw new IllegalStateException(\"CMMN engine misconfigured: ProcessInstanceService missing; process tasks will fail\");\n}","typeGuard":"boolean canRunProcessTasks =\n    org.flowable.cmmn.engine.CmmnEngineConfiguration cfg != null && cfg.getProcessInstanceService() != null;","tryCatchPattern":null,"preventionTips":["Deploy CMMN and BPMN engines together via the combined/app engine configuration","Add a startup assertion that ProcessInstanceService is registered","Keep integration dependencies (flowable-cmmn-spring / starters) in the build","Cover process-task execution in a smoke test"],"tags":["cmmn","process-task","missing-dependency","configuration"],"backgroundTag":"missing-dependency","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}