flowable/flowable-engine · error · FlowableObjectNotFoundException

no event definitions deployed with key

Error message

no event definitions deployed with key '${eventDefinitionKey}' for deployment id '${deploymentId}'

What it means

findDeployedLatestEventDefinitionByKeyAndDeploymentId throws FlowableObjectNotFoundException when no event definition matches both the given deployment id and key, i.e. that specific deployment does not contain a definition with that key.

Solutions

  1. Verify the deployment actually contains the key (query event definitions by DEPLOYMENT_ID_ and KEY_)
  2. Use the correct deploymentId, or switch to findDeployedLatestEventDefinitionByKey for the latest version
  3. Redeploy if the definition was moved/removed from the deployment
  4. Catch FlowableObjectNotFoundException to handle version-mismatch cases

Example fix

// before
def = deploymentManager.findDeployedLatestEventDefinitionByKeyAndDeploymentId("order.created", deploymentId);
// after
try {
    def = deploymentManager.findDeployedLatestEventDefinitionByKeyAndDeploymentId("order.created", deploymentId);
} catch (FlowableObjectNotFoundException e) {
    def = deploymentManager.findDeployedLatestEventDefinitionByKey("order.created"); // fall back to latest
}
Defensive patterns

Strategy: try-catch

Try / catch

try {
    def = deploymentManager.findDeployedLatestEventDefinitionByKeyAndDeploymentId(key, deploymentId);
} catch (org.flowable.common.engine.api.FlowableObjectNotFoundException e) {
    def = deploymentManager.findDeployedLatestEventDefinitionByKey(key); // fall back to latest
}

Prevention

When it happens

Trigger: Calling findDeployedLatestEventDefinitionByKeyAndDeploymentId for a deploymentId that never included the key (wrong deployment resolved), a deployment id that does not exist, or a key renamed after the deployment was made.

Common situations: Redeploy/resume logic reusing an old deploymentId while definitions moved to a newer deployment; referencing a deployment from a different engine/database; model refactors that changed the event key.

Understand the failure class

Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.

Related errors


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

Appendix: source

Thrown at modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/persistence/deploy/EventDeploymentManager.java:141

        channelDefinition = resolveChannelDefinition(channelDefinition).getChannelDefinitionEntity();
        return channelDefinition;
    }

    public EventDefinitionEntity findDeployedLatestEventDefinitionByKeyAndTenantId(String eventDefinitionKey, String tenantId) {
        EventDefinitionEntity eventDefinition = eventDefinitionEntityManager.findLatestEventDefinitionByKeyAndTenantId(eventDefinitionKey, tenantId);

        if (eventDefinition == null) {
            throw new FlowableObjectNotFoundException("no event definitions deployed with key '" + eventDefinitionKey + "' for tenant identifier '" + tenantId + "'");
        }
        eventDefinition = resolveEventDefinition(eventDefinition).getEventDefinitionEntity();
        return eventDefinition;
    }

    public EventDefinitionEntity findDeployedLatestEventDefinitionByKeyAndDeploymentId(String eventDefinitionKey, String deploymentId) {
        EventDefinitionEntity eventDefinition = eventDefinitionEntityManager.findEventDefinitionByDeploymentAndKey(deploymentId, eventDefinitionKey);

        if (eventDefinition == null) {
            throw new FlowableObjectNotFoundException("no event definitions deployed with key '" + eventDefinitionKey +
                    "' for deployment id '" + deploymentId + "'");
        }
        eventDefinition = resolveEventDefinition(eventDefinition).getEventDefinitionEntity();
        return eventDefinition;
    }

    public EventDefinitionEntity findDeployedLatestEventDefinitionByKeyDeploymentIdAndTenantId(String eventDefinitionKey, String deploymentId, String tenantId) {
        EventDefinitionEntity eventDefinition = eventDefinitionEntityManager.findEventDefinitionByDeploymentAndKeyAndTenantId(deploymentId, eventDefinitionKey, tenantId);

        if (eventDefinition == null) {
            throw new FlowableObjectNotFoundException("no event definitions deployed with key '" + eventDefinitionKey +
                    "' for deployment id '" + deploymentId + "' and tenant identifier '" + tenantId + "'");
        }
        eventDefinition = resolveEventDefinition(eventDefinition).getEventDefinitionEntity();
        return eventDefinition;
    }

    public EventDefinitionEntity findDeployedEventDefinitionByKeyAndVersionAndTenantId(String eventDefinitionKey, int eventVersion, String tenantId) {

View on GitHub (pinned to d6d39ce1c6)