{"record":{"id":"992f3111f9bad6a2","repo":"flowable/flowable-engine","slug":"no-event-definitions-deployed-with-key-eventdef-992f31","errorCode":null,"errorMessage":"no event definitions deployed with key '${eventDefinitionKey}' for deployment id '${deploymentId}' and tenant identifier '${tenantId}'","messagePattern":"no event definitions deployed with key '(.+?)' for deployment id '(.+?)' and 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":152,"sourceCode":"        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);\n\n        if (eventDefinition == null) {\n            throw new FlowableObjectNotFoundException(\"no event definitions deployed with key '\" + eventDefinitionKey +\n                    \"' for deployment id '\" + deploymentId + \"' and tenant identifier '\" + tenantId + \"'\");\n        }\n        eventDefinition = resolveEventDefinition(eventDefinition).getEventDefinitionEntity();\n        return eventDefinition;\n    }\n\n    public EventDefinitionEntity findDeployedEventDefinitionByKeyAndVersionAndTenantId(String eventDefinitionKey, int eventVersion, String tenantId) {\n        EventDefinitionEntity eventDefinition = eventDefinitionEntityManager.findEventDefinitionByKeyAndVersionAndTenantId(eventDefinitionKey, eventVersion, tenantId);\n\n        if (eventDefinition == null) {\n            throw new FlowableObjectNotFoundException(\"no event definitions deployed with key = '\" + eventDefinitionKey + \"'\");\n        }\n\n        eventDefinition = resolveEventDefinition(eventDefinition).getEventDefinitionEntity();\n        return eventDefinition;\n    }\n\n    /**","sourceCodeStart":134,"sourceCodeEnd":170,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/persistence/deploy/EventDeploymentManager.java#L134-L170","documentation":"Thrown by EventDeploymentManager when looking up the latest deployed event definition by key, deployment id, and tenant id, but the persistence layer returns no matching EventDefinitionEntity. The Flowable Event Registry throws FlowableObjectNotFoundException because the requested definition simply does not exist in the database for that exact (key, deploymentId, tenantId) combination. It is a lookup failure, not a corruption or internal bug.","triggerScenarios":"Calling findDeployedLatestEventDefinitionByKeyDeploymentIdAndTenantId(eventDefinitionKey, deploymentId, tenantId) when no row in FLW_EV_DATABASE_DEFINITION matches all three values — e.g. wrong deploymentId, definition deployed under a different tenant, or the key never existed in that deployment.","commonSituations":"Copy-pasting a deployment id from another environment; multi-tenant setups where the definition was deployed to the default tenant but queried with a specific tenantId; querying after the deployment was deleted; typos in the event definition key.","solutions":["Verify the deploymentId exists and contains the event key: query EventDeploymentQuery / EventDefinitionQuery with deploymentId(deploymentId).list() before the lookup.","Check the tenantId matches the one used at deploy time (or pass empty/null for the default tenant).","If the deployment is missing, redeploy the event model via EventRepositoryService.createDeployment().addClasspathResource(...).tenantId(...).deploy().","Confirm the event definition key spelling against the JSON event model resource."],"exampleFix":"// before\nEventDefinitionEntity def = eventDeploymentManager\n    .findDeployedLatestEventDefinitionByKeyDeploymentIdAndTenantId(key, deploymentId, tenantId);\n// after\nEventDefinitionEntity def = managementService.getEventRepositoryService()\n    .createEventDefinitionQuery().deploymentId(deploymentId).tenantId(tenantId).listPage(0, 1)\n    .stream().findFirst()\n    .map(d -> eventDeploymentManager.findDeployedLatestEventDefinitionByKeyDeploymentIdAndTenantId(key, deploymentId, tenantId))\n    .orElse(null);","handlingStrategy":"validation","validationCode":"long count = eventRepositoryService.createEventDefinitionQuery()\n    .deploymentId(deploymentId).tenantId(tenantId).eventDefinitionKey(key).count();\nif (count == 0) throw new IllegalStateException(\"event definition \" + key + \" not in deployment \" + deploymentId + \" for tenant \" + tenantId);","typeGuard":null,"tryCatchPattern":"try {\n    def = manager.findDeployedLatestEventDefinitionByKeyDeploymentIdAndTenantId(key, deploymentId, tenantId);\n} catch (FlowableObjectNotFoundException e) {\n    def = null; // handle missing definition explicitly\n}","preventionTips":["Always confirm the deployment id and tenant with a deployment query before definition lookups.","Use constant/class references for event keys instead of string literals.","In multi-tenant apps, propagate tenantId consistently from a context holder.","Add integration tests that assert key/deployment/tenant triples used at runtime."],"tags":["flowable","event-registry","deployment","not-found"],"backgroundTag":"resource-not-found","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}