{"record":{"id":"0c4b7e44e6d9f108","repo":"flowable/flowable-engine","slug":"no-channel-definitions-deployed-with-key-channe","errorCode":null,"errorMessage":"no channel definitions deployed with key '${channelDefinitionKey}'","messagePattern":"no channel 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":121,"sourceCode":"        }\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\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","sourceCodeStart":103,"sourceCodeEnd":139,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/persistence/deploy/EventDeploymentManager.java#L103-L139","documentation":"findDeployedLatestChannelDefinitionByKey throws FlowableObjectNotFoundException when no channel definition has been deployed with the given channel key. The lookup is by latest key; nothing matching exists in the database.","triggerScenarios":"Calling findDeployedLatestChannelDefinitionByKey with a channel key that was never deployed, whose deployments were deleted, or which is misspelled relative to the deployed key.","commonSituations":"Bootstrap code resolving channels before the event-registry deployments ran; channel key renames; environment drift where one env has the channel deployed and another does not.","solutions":["Verify the channel key is deployed in the target database","Deploy the channel model with that key first","Check for typos / case differences in the key","Catch FlowableObjectNotFoundException if the channel is optional"],"exampleFix":"// before\nChannelDefinitionEntity ch = deploymentManager.findDeployedLatestChannelDefinitionByKey(\"orders-jms\");\n// after\ntry {\n    ch = deploymentManager.findDeployedLatestChannelDefinitionByKey(\"orders-jms\");\n} catch (FlowableObjectNotFoundException e) {\n    throw new IllegalStateException(\"Channel 'orders-jms' is not deployed\", e);\n}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    ch = deploymentManager.findDeployedLatestChannelDefinitionByKey(key);\n} catch (org.flowable.common.engine.api.FlowableObjectNotFoundException e) {\n    throw new IllegalStateException(\"No channel definition deployed for key \" + key, e);\n}","preventionTips":["Deploy channel models before any runtime code resolves them","Add integration tests asserting required channel keys exist","Synchronize channel deployments across all 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"}