{"record":{"id":"af9725a3f35c7788","repo":"flowable/flowable-engine","slug":"multi-instance-inner-behavior-inneractivitybehav","errorCode":null,"errorMessage":"Multi instance inner behavior ${innerActivityBehavior} is not supported for ${execution}","messagePattern":"Multi instance inner behavior (.+?) is not supported for (.+?)","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-engine/src/main/java/org/flowable/engine/impl/cmd/TriggerCaseTaskCmd.java","lineNumber":72,"sourceCode":"        ExecutionEntity execution = (ExecutionEntity) processEngineConfiguration.getExecutionEntityManager().findById(executionId);\n        if (execution == null) {\n            throw new FlowableException(\"No execution could be found for id \" + executionId);\n        }\n        \n        FlowElement flowElement = execution.getCurrentFlowElement();\n        if (!(flowElement instanceof CaseServiceTask caseServiceTask)) {\n            throw new FlowableException(\"No execution could be found with a case service task for \" + execution);\n        }\n\n        Object behavior = caseServiceTask.getBehavior();\n        if (behavior instanceof CaseTaskActivityBehavior) {\n            ((CaseTaskActivityBehavior) behavior).triggerCaseTaskAndLeave(execution, variables);\n        } else if (behavior instanceof MultiInstanceActivityBehavior) {\n            AbstractBpmnActivityBehavior innerActivityBehavior = ((MultiInstanceActivityBehavior) behavior).getInnerActivityBehavior();\n            if (innerActivityBehavior instanceof CaseTaskActivityBehavior) {\n                ((CaseTaskActivityBehavior) innerActivityBehavior).triggerCaseTask(execution, variables);\n            } else {\n                throw new FlowableException(\"Multi instance inner behavior \" + innerActivityBehavior + \" is not supported for \" + execution);\n            }\n            ((MultiInstanceActivityBehavior) behavior).leave(execution);\n        } else {\n                throw new FlowableException(\"Behavior \" + behavior + \" is not supported for a case task for \" + execution);\n        }\n\n        return null;\n    }\n}\n","sourceCodeStart":54,"sourceCodeEnd":82,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-engine/src/main/java/org/flowable/engine/impl/cmd/TriggerCaseTaskCmd.java#L54-L82","documentation":"When the case task's activity behavior is a MultiInstanceActivityBehavior, only a CaseTaskActivityBehavior as the inner behavior is supported. Any other inner behavior (e.g. service task inside a multi-instance wrapping a case task) cannot be triggered via this command and throws FlowableException.","triggerScenarios":"Modeling a multi-instance activity whose inner activity is not a case task, then attempting TriggerCaseTaskCmd on an execution of that multi-instance activity.","commonSituations":"Copy-pasting multi-instance configuration from another element; refactoring the inner task type to a service/receive task while keeping the case-task trigger code; invalid BPMN modeling not caught at deployment.","solutions":["Make the multi-instance inner activity a case task (caseTask with CaseTaskActivityBehavior)","Remove multi-instance from the case task if a single trigger is intended","If the inner behavior is another task type, use the matching trigger API for that type instead of the case-task trigger","Validate the BPMN model (behavior wiring) at deployment time"],"exampleFix":"// before (BPMN): multi-instance wrapping a serviceTask\n<serviceTask id=\"st\"><multiInstanceLoopCharacteristics/></serviceTask>\n// after: multi-instance wrapping a case task\n<callActivity id=\"ct\" flowable:caseRef=\"myCase\"><multiInstanceLoopCharacteristics/></callActivity>","handlingStrategy":"validation","validationCode":"MultiInstanceActivityBehavior mi = (MultiInstanceActivityBehavior) behavior;\nif (!(mi.getInnerActivityBehavior() instanceof CaseTaskActivityBehavior)) {\n    throw new IllegalStateException(\"multi-instance inner behavior must be a case task\");\n}","typeGuard":"boolean supportsCaseTaskTrigger(ActivityBehavior b) {\n    if (b instanceof CaseTaskActivityBehavior) return true;\n    return b instanceof MultiInstanceActivityBehavior mi\n        && mi.getInnerActivityBehavior() instanceof CaseTaskActivityBehavior;\n}","tryCatchPattern":"try {\n    trigger(executionId, vars);\n} catch (FlowableException e) {\n    if (e.getMessage().startsWith(\"Multi instance inner behavior\")) {\n        // fix the BPMN model or use the correct trigger for the inner task type\n    }\n}","preventionTips":["Only wrap case tasks in multi-instance when the trigger path supports it","Review multi-instance settings after refactoring the inner activity type","Validate behavior wiring in a deployment-time model check"],"tags":["multi-instance","case-task","unsupported-operation","bpmn-modeling"],"backgroundTag":"unsupported-operation","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"}