{"record":{"id":"e1550b9ef156cbb2","repo":"flowable/flowable-engine","slug":"no-decision-execution-id-provided","errorCode":null,"errorMessage":"No decision execution id provided","messagePattern":"No decision execution id provided","errorType":"validation","errorClass":"FlowableIllegalArgumentException","httpStatus":400,"severity":"error","filePath":"modules/flowable-dmn-rest/src/main/java/org/flowable/dmn/rest/service/api/history/BaseHistoricDecisionExecutionResource.java","lineNumber":68,"sourceCode":"        DmnHistoricDecisionExecutionQuery historicDecisionExecutionQuery = dmnHistoryService.createHistoricDecisionExecutionQuery().id(decisionExecutionId);\n\n        DmnHistoricDecisionExecution decisionExecution = historicDecisionExecutionQuery.singleResult();\n\n        if (decisionExecution == null) {\n            throw new FlowableObjectNotFoundException(\"Could not find a decision execution with id '\" + decisionExecutionId + \"'\");\n        }\n\n        if (restApiInterceptor != null) {\n            restApiInterceptor.accessDecisionHistoryInfoById(decisionExecution);\n        }\n\n        return decisionExecution;\n    }\n\n    protected String getExecutionAuditData(String decisionExecutionId, HttpServletResponse response) {\n\n        if (decisionExecutionId == null) {\n            throw new FlowableIllegalArgumentException(\"No decision execution id provided\");\n        }\n\n        // Check if deployment exists\n        DmnHistoricDecisionExecution decisionExecution = getHistoricDecisionExecutionFromRequest(decisionExecutionId);\n        response.setContentType(\"application/json\");\n        return decisionExecution.getExecutionJson();\n    }\n}\n","sourceCodeStart":50,"sourceCodeEnd":77,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-dmn-rest/src/main/java/org/flowable/dmn/rest/service/api/history/BaseHistoricDecisionExecutionResource.java#L50-L77","documentation":"Thrown by getExecutionAuditData when the decisionExecutionId path/parameter supplied to the audit-data endpoint is null. The endpoint needs an id to look up and stream the stored execution JSON. It is rejected before any database access.","triggerScenarios":"GET /dmn-history/historic-decision-executions/{decisionExecutionId}/audit-data (or similar) where the id path variable is empty/null after routing.","commonSituations":"Client building the URL without substituting the id placeholder; a proxy/gateway stripping an empty path segment; programmatic invocation passing null into the helper.","solutions":["Provide a non-null decisionExecutionId in the URL path before calling the endpoint","Build the URL from a validated variable rather than string concatenation that can yield an empty segment","Fetch a valid id from the historic-decision-executions list endpoint if unknown"],"exampleFix":"// before\nString url = \"/dmn-history/historic-decision-executions/\" + id; // id == null\n// after\nObjects.requireNonNull(id, \"decisionExecutionId must be set\");\nString url = \"/dmn-history/historic-decision-executions/\" + id;","handlingStrategy":"validation","validationCode":"if (decisionExecutionId == null || decisionExecutionId.isEmpty()) {\n    throw new IllegalArgumentException(\"decisionExecutionId must be provided\");\n}","typeGuard":"boolean hasId = id != null && !id.trim().isEmpty();","tryCatchPattern":"try {\n    audit = client.getExecutionAuditData(id);\n} catch (HttpClientErrorException e) {\n    if (e.getResponseBodyAsString().contains(\"No decision execution id provided\")) {\n        throw new IllegalArgumentException(\"audit-data call requires an id\", e);\n    }\n    throw e;\n}","preventionTips":["Interpolate the id into the URL before requesting","Never build URLs from possibly-null variables without a null check","Prefer typed client methods over manual URL strings"],"tags":["rest-api","dmn","history","missing-field","validation"],"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-18T11:17:12.947Z"}