flowable/flowable-engine · error · FlowableIllegalArgumentException

There is no correlation parameter with name '${correlationPa

Error message

There is no correlation parameter with name '${correlationParameterName}' defined in event model with key '${eventModel.getKey()}'. You can only subscribe for an event with a combination of valid correlation parameters.

What it means

Thrown by AbstractCaseStartEventSubscriptionCmd when subscribing a case to a start event: the correlation parameter name given in the subscription request does not match any EventPayload declared in the event model's correlationParameters. Flowable validates that only correlation parameters actually defined on the event model are used, so subscriptions with unknown parameter names are rejected.

Source

Thrown at modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/cmd/AbstractCaseStartEventSubscriptionCmd.java:65

        EventModel eventModel = getEventModel(eventDefinitionKey, tenantId, commandContext);
        Map<String, Object> correlationParameters = new HashMap<>();
        for (Map.Entry<String, Object> correlationValue : correlationParameterValues.entrySet()) {
            // make sure the correlation parameter value is based on a valid, defined correlation parameter within the event model
            checkEventModelCorrelationParameter(eventModel, correlationValue.getKey());
            correlationParameters.put(correlationValue.getKey(), correlationValue.getValue());
        }

        return CommandContextUtil.getEventRegistry().generateKey(correlationParameters);
    }

    protected void checkEventModelCorrelationParameter(EventModel eventModel, String correlationParameterName) {
        Collection<EventPayload> correlationParameters = eventModel.getCorrelationParameters();
        for (EventPayload correlationParameter : correlationParameters) {
            if (correlationParameter.getName().equals(correlationParameterName)) {
                return;
            }
        }
        throw new FlowableIllegalArgumentException("There is no correlation parameter with name '" + correlationParameterName + "' defined in event model "
            + "with key '" + eventModel.getKey() + "'. You can only subscribe for an event with a combination of valid correlation parameters.");
    }

    protected CaseDefinition getLatestCaseDefinitionByKey(String caseDefinitionKey, String tenantId, CommandContext commandContext) {
        CaseDefinitionEntityManager caseDefinitionEntityManager = CommandContextUtil.getCaseDefinitionEntityManager(commandContext);
        CaseDefinition caseDefinition = null;
        if (caseDefinitionKey != null && (tenantId == null || CmmnEngineConfiguration.NO_TENANT_ID.equals(tenantId))) {
            caseDefinition = caseDefinitionEntityManager.findLatestCaseDefinitionByKey(caseDefinitionKey);

            if (caseDefinition == null) {
                throw new FlowableObjectNotFoundException("No case definition found for key '" + caseDefinitionKey + "'", CaseDefinition.class);
            }

        } else if (caseDefinitionKey != null && tenantId != null && !CmmnEngineConfiguration.NO_TENANT_ID.equals(tenantId)) {

            caseDefinition = caseDefinitionEntityManager.findLatestCaseDefinitionByKeyAndTenantId(caseDefinitionKey, tenantId);

            if (caseDefinition == null) {

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Inspect the event model JSON for the given eventModel key and use exactly the correlation parameter names declared under correlationParameters.
  2. Redeploy an updated event model that declares the missing correlation parameter, or update the subscription code to the new names.
  3. Log/echo the available correlation parameters for the event model key and compare against the requested name to find typos.

Example fix

// before
eventSubscriptionBuilder.correlationParamValue("orderId", orderId); // event model defines 'order-id'
// after
eventSubscriptionBuilder.correlationParamValue("order-id", orderId);
Defensive patterns

Strategy: validation

Validate before calling

List<String> valid = eventRepositoryService.getEventModelByKey(eventKey, tenantId)
    .getCorrelationParameters().stream().map(EventPayload::getName).collect(toList());
if (!valid.contains(paramName)) throw new IllegalArgumentException("unknown correlation param " + paramName);

Try / catch

try { subscriptionBuilder.correlationParamValue(name, value).create(); }
catch (FlowableIllegalArgumentException e) { if (e.getMessage().contains("correlation parameter")) { refreshEventModelDefinitions(); throw e; } }

Prevention

When it happens

Trigger: Calling CaseRuntimeService (or the start-event subscription command path) with a correlation parameter name that is not declared in the referenced event model, typically after renaming a parameter in the event model JSON while case subscriptions still use the old name.

Common situations: Event model was redeployed with renamed/removed correlation parameters while case definitions or clients still pass old names; typo in parameter name; subscribing with a generic 'businessKey' style parameter the event model never declared.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — 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/9519f622fb99a7eb. Report an issue: GitHub.