{"record":{"id":"c837d544901b7511","repo":"flowable/flowable-engine","slug":"no-event-definitions-deployed-with-key-eventdef","errorCode":null,"errorMessage":"no event definitions deployed with key '${eventDefinitionKey}'","messagePattern":"no event definitions deployed with key '(.+?)'","errorType":"exception","errorClass":"FlowableObjectNotFoundException","httpStatus":404,"severity":"error","filePath":"modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/persistence/deploy/EventDeploymentManager.java","lineNumber":111,"sourceCode":"        // first try the cache\n        ChannelDefinitionCacheEntry cacheEntry = channelDefinitionCache.get(channelDefinitionId);\n        ChannelDefinitionEntity channelDefinition = cacheEntry != null ? cacheEntry.getChannelDefinitionEntity() : null;\n\n        if (channelDefinition == null) {\n            channelDefinition = engineConfig.getChannelDefinitionEntityManager().findById(channelDefinitionId);\n            if (channelDefinition == null) {\n                throw new FlowableObjectNotFoundException(\"no deployed channel definition found with id '\" + channelDefinitionId + \"'\");\n            }\n            channelDefinition = resolveChannelDefinition(channelDefinition).getChannelDefinitionEntity();\n        }\n        return channelDefinition;\n    }\n\n    public EventDefinitionEntity findDeployedLatestEventDefinitionByKey(String eventDefinitionKey) {\n        EventDefinitionEntity eventDefinition = eventDefinitionEntityManager.findLatestEventDefinitionByKey(eventDefinitionKey);\n\n        if (eventDefinition == null) {\n            throw new FlowableObjectNotFoundException(\"no event definitions deployed with key '\" + eventDefinitionKey + \"'\");\n        }\n        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","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/persistence/deploy/EventDeploymentManager.java#L93-L129","documentation":"findDeployedLatestEventDefinitionByKey throws FlowableObjectNotFoundException when the event definition entity manager returns no definition for the given key, i.e. no event definition with that key has ever been deployed.","triggerScenarios":"Calling findDeployedLatestEventDefinitionByKey with a key that has no latest deployed definition: key never deployed, all deployments of it deleted, or misspelled key.","commonSituations":"Application startup wiring consumers/producers to keys not yet deployed to that database; renaming event keys without redeploying; environment where deployment scripts for the event registry were skipped.","solutions":["Verify the event key exists: SELECT from the event definition table where KEY_ = key","Deploy the event definition with that key before looking it up","Point the engine at the database where the definition was deployed","Catch FlowableObjectNotFoundException and provide a default/skip path for optional keys"],"exampleFix":"// before\nEventDefinitionEntity def = deploymentManager.findDeployedLatestEventDefinitionByKey(\"order.created\");\n// after\ntry {\n    def = deploymentManager.findDeployedLatestEventDefinitionByKey(\"order.created\");\n} catch (FlowableObjectNotFoundException e) {\n    // deploy or fail fast with context\n    throw new IllegalStateException(\"Event 'order.created' not deployed; run the event-registry migrations\", e);\n}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    def = deploymentManager.findDeployedLatestEventDefinitionByKey(key);\n} catch (org.flowable.common.engine.api.FlowableObjectNotFoundException e) {\n    throw new IllegalStateException(\"No event definition deployed for key \" + key, e);\n}","preventionTips":["Run event-registry deployment scripts as part of app startup or CI","Treat event keys as stable API; validate them against deployed keys in tests","Use consistent key naming conventions across environments"],"tags":["java","event-registry","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"}