{"record":{"id":"da5a8d90e16d36d0","repo":"flowable/flowable-engine","slug":"variablename-is-null-da5a8d","errorCode":null,"errorMessage":"variableName is null","messagePattern":"variableName is null","errorType":"validation","errorClass":"FlowableIllegalArgumentException","httpStatus":null,"severity":"warning","filePath":"modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/cmd/RemoveLocalVariableCmd.java","lineNumber":41,"sourceCode":" * @author Tijs Rademakers\n */\npublic class RemoveLocalVariableCmd implements Command<Void> {\n    \n    protected String planItemInstanceId;\n    protected String variableName;\n    \n    public RemoveLocalVariableCmd(String planItemInstanceId, String variableName) {\n        this.planItemInstanceId = planItemInstanceId;\n        this.variableName = variableName;\n    }\n    \n    @Override\n    public Void execute(CommandContext commandContext) {\n        if (planItemInstanceId == null) {\n            throw new FlowableIllegalArgumentException(\"planItemInstanceId is null\");\n        }\n        if (variableName == null) {\n            throw new FlowableIllegalArgumentException(\"variableName is null\");\n        }\n     \n        PlanItemInstanceEntity planItemInstanceEntity = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext).findById(planItemInstanceId);\n        if (planItemInstanceEntity == null) {\n            throw new FlowableObjectNotFoundException(\"No plan item instance found for id \" + planItemInstanceId, PlanItemInstanceEntity.class);\n        }\n        planItemInstanceEntity.removeVariable(variableName);\n        \n        return null;\n    }\n\n}\n","sourceCodeStart":23,"sourceCodeEnd":54,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/cmd/RemoveLocalVariableCmd.java#L23-L54","documentation":"Thrown as FlowableIllegalArgumentException by RemoveLocalVariableCmd when the variableName to remove from the plan item instance is null. Both planItemInstanceId and variableName must be non-null for the command to proceed.","triggerScenarios":"Calling CmmnRuntimeService.removeLocalVariable(planItemInstanceId, null).","commonSituations":"Variable name kept in a config/field that was never set; string built dynamically and ended up null; copying the wrong variable from a template.","solutions":["Pass a concrete non-null variable name; check it before invoking","Verify the variable exists via planItemInstance/variable queries if removal should be conditional","Fix the source of the null name (config key, constant, lookup)"],"exampleFix":"// before\nruntimeService.removeLocalVariable(instanceId, variableName); // variableName null\n// after\nif (variableName != null && !variableName.isEmpty()) {\n    runtimeService.removeLocalVariable(instanceId, variableName);\n}","handlingStrategy":"type-guard","validationCode":null,"typeGuard":"boolean canRemove = variableName != null && !variableName.isEmpty();","tryCatchPattern":"try { runtimeService.removeLocalVariable(id, variableName); }\ncatch (FlowableIllegalArgumentException e) { /* variableName was null */ }","preventionTips":["Store variable names as constants","Null-check names sourced from config or external input","Distinguish between removing a null name and removing a non-existent variable"],"tags":["null","variable","argument"],"backgroundTag":"missing-required-argument","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T16:17:23.245Z"}