{"record":{"id":"1acdbf54e1bfe95a","repo":"flowable/flowable-engine","slug":"no-event-definitions-deployed-with-key-eventdef-1acdbf","errorCode":null,"errorMessage":"no event definitions deployed with key '${eventDefinitionKey}' for tenant identifier '${tenantId}'","messagePattern":"no event definitions deployed with key '(.+?)' for tenant identifier '(.+?)'","errorType":"exception","errorClass":"FlowableObjectNotFoundException","httpStatus":null,"severity":"error","filePath":"modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/persistence/deploy/EventDeploymentManager.java","lineNumber":131,"sourceCode":"        eventDefinition = resolveEventDefinition(eventDefinition).getEventDefinitionEntity();\n        return eventDefinition;\n    }\n    \n    public ChannelDefinitionEntity findDeployedLatestChannelDefinitionByKey(String channelDefinitionKey) {\n        ChannelDefinitionEntity channelDefinition = channelDefinitionEntityManager.findLatestChannelDefinitionByKey(channelDefinitionKey);\n\n        if (channelDefinition == null) {\n            throw new FlowableObjectNotFoundException(\"no channel definitions deployed with key '\" + channelDefinitionKey + \"'\");\n        }\n        channelDefinition = resolveChannelDefinition(channelDefinition).getChannelDefinitionEntity();\n        return channelDefinition;\n    }\n\n    public EventDefinitionEntity findDeployedLatestEventDefinitionByKeyAndTenantId(String eventDefinitionKey, String tenantId) {\n        EventDefinitionEntity eventDefinition = eventDefinitionEntityManager.findLatestEventDefinitionByKeyAndTenantId(eventDefinitionKey, tenantId);\n\n        if (eventDefinition == null) {\n            throw new FlowableObjectNotFoundException(\"no event definitions deployed with key '\" + eventDefinitionKey + \"' for tenant identifier '\" + tenantId + \"'\");\n        }\n        eventDefinition = resolveEventDefinition(eventDefinition).getEventDefinitionEntity();\n        return eventDefinition;\n    }\n\n    public EventDefinitionEntity findDeployedLatestEventDefinitionByKeyAndDeploymentId(String eventDefinitionKey, String deploymentId) {\n        EventDefinitionEntity eventDefinition = eventDefinitionEntityManager.findEventDefinitionByDeploymentAndKey(deploymentId, eventDefinitionKey);\n\n        if (eventDefinition == null) {\n            throw new FlowableObjectNotFoundException(\"no event definitions deployed with key '\" + eventDefinitionKey +\n                    \"' for deployment id '\" + deploymentId + \"'\");\n        }\n        eventDefinition = resolveEventDefinition(eventDefinition).getEventDefinitionEntity();\n        return eventDefinition;\n    }\n\n    public EventDefinitionEntity findDeployedLatestEventDefinitionByKeyDeploymentIdAndTenantId(String eventDefinitionKey, String deploymentId, String tenantId) {\n        EventDefinitionEntity eventDefinition = eventDefinitionEntityManager.findEventDefinitionByDeploymentAndKeyAndTenantId(deploymentId, eventDefinitionKey, tenantId);","sourceCodeStart":113,"sourceCodeEnd":149,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/persistence/deploy/EventDeploymentManager.java#L113-L149","documentation":"findDeployedLatestEventDefinitionByKeyAndTenantId throws FlowableObjectNotFoundException when no event definition with the given key is deployed for the given tenant. The combined key+tenant lookup in the database returned nothing.","triggerScenarios":"Calling findDeployedLatestEventDefinitionByKeyAndTenantId with a key/tenant pair where the definition was deployed under a different tenant (or with a null/empty tenant), or not deployed at all in that tenant's scope.","commonSituations":"Multi-tenant setups where deployments only ran for tenant 'acme' but the runtime looks up tenant 'other'; missing tenantId propagation so the default tenant is used; definitions deployed without tenant but queried with one.","solutions":["Verify the definition is deployed with that exact key and TENANT_ID_ value","Deploy the event definition for the specific tenant if missing","Fall back to the non-tenant lookup (findDeployedLatestEventDefinitionByKey) when the tenant-scoped lookup is allowed to miss","Check that the tenantId passed matches how deployments set tenant (null vs empty-string semantics)"],"exampleFix":"// before\ndef = deploymentManager.findDeployedLatestEventDefinitionByKeyAndTenantId(\"order.created\", tenantId);\n// after\ntry {\n    def = deploymentManager.findDeployedLatestEventDefinitionByKeyAndTenantId(\"order.created\", tenantId);\n} catch (FlowableObjectNotFoundException e) {\n    def = deploymentManager.findDeployedLatestEventDefinitionByKey(\"order.created\"); // tenant fallback\n}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    def = deploymentManager.findDeployedLatestEventDefinitionByKeyAndTenantId(key, tenantId);\n} catch (org.flowable.common.engine.api.FlowableObjectNotFoundException e) {\n    def = deploymentManager.findDeployedLatestEventDefinitionByKey(key); // tenant fallback if applicable\n}","preventionTips":["Deploy definitions per tenant for every tenant that will use them","Normalize tenant ids (avoid null vs \"\" mismatches) when deploying and querying","Log tenantId alongside the key on failure for faster diagnosis"],"tags":["java","event-registry","multitenancy","not-found"],"backgroundTag":"record-not-found","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"}