flowable/flowable-engine · error · FlowableIllegalArgumentException

No decision execution id provided

Error message

No decision execution id provided

What it means

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.

Solutions

  1. Provide a non-null decisionExecutionId in the URL path before calling the endpoint
  2. Build the URL from a validated variable rather than string concatenation that can yield an empty segment
  3. Fetch a valid id from the historic-decision-executions list endpoint if unknown

Example fix

// before
String url = "/dmn-history/historic-decision-executions/" + id; // id == null
// after
Objects.requireNonNull(id, "decisionExecutionId must be set");
String url = "/dmn-history/historic-decision-executions/" + id;
Defensive patterns

Strategy: validation

Validate before calling

if (decisionExecutionId == null || decisionExecutionId.isEmpty()) {
    throw new IllegalArgumentException("decisionExecutionId must be provided");
}

Type guard

boolean hasId = id != null && !id.trim().isEmpty();

Try / catch

try {
    audit = client.getExecutionAuditData(id);
} catch (HttpClientErrorException e) {
    if (e.getResponseBodyAsString().contains("No decision execution id provided")) {
        throw new IllegalArgumentException("audit-data call requires an id", e);
    }
    throw e;
}

Prevention

When it happens

Trigger: GET /dmn-history/historic-decision-executions/{decisionExecutionId}/audit-data (or similar) where the id path variable is empty/null after routing.

Common situations: Client building the URL without substituting the id placeholder; a proxy/gateway stripping an empty path segment; programmatic invocation passing null into the helper.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/e1550b9ef156cbb2. Report an issue: GitHub.

Appendix: source

Thrown at modules/flowable-dmn-rest/src/main/java/org/flowable/dmn/rest/service/api/history/BaseHistoricDecisionExecutionResource.java:68

        DmnHistoricDecisionExecutionQuery historicDecisionExecutionQuery = dmnHistoryService.createHistoricDecisionExecutionQuery().id(decisionExecutionId);

        DmnHistoricDecisionExecution decisionExecution = historicDecisionExecutionQuery.singleResult();

        if (decisionExecution == null) {
            throw new FlowableObjectNotFoundException("Could not find a decision execution with id '" + decisionExecutionId + "'");
        }

        if (restApiInterceptor != null) {
            restApiInterceptor.accessDecisionHistoryInfoById(decisionExecution);
        }

        return decisionExecution;
    }

    protected String getExecutionAuditData(String decisionExecutionId, HttpServletResponse response) {

        if (decisionExecutionId == null) {
            throw new FlowableIllegalArgumentException("No decision execution id provided");
        }

        // Check if deployment exists
        DmnHistoricDecisionExecution decisionExecution = getHistoricDecisionExecutionFromRequest(decisionExecutionId);
        response.setContentType("application/json");
        return decisionExecution.getExecutionJson();
    }
}

View on GitHub (pinned to d6d39ce1c6)