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
- Inspect the event model JSON for the given eventModel key and use exactly the correlation parameter names declared under correlationParameters.
- Redeploy an updated event model that declares the missing correlation parameter, or update the subscription code to the new names.
- 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
- Keep event model correlation parameters in a shared constant class referenced by both event and case deployments
- Version event models together with case definitions that subscribe to them
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
- The case definition must be provided using the key for the s
- At least one correlation parameter value must be provided fo
- The case definition must be provided using the exact id of t
- The case definition must be provided using the exact id of t
- There can only be one reactivation listener on a case model,
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/9519f622fb99a7eb.
Report an issue: GitHub.