{"record":{"id":"ae7d74ff2c8ad776","repo":"flowable/flowable-engine","slug":"no-decision-found-with-id-decisionid","errorCode":null,"errorMessage":"no decision found with id '${decisionId}'","messagePattern":"no decision found with id '(.+?)'","errorType":"exception","errorClass":"FlowableObjectNotFoundException","httpStatus":null,"severity":"error","filePath":"modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/impl/persistence/deploy/DeploymentManager.java","lineNumber":74,"sourceCode":"    public void deploy(DmnDeploymentEntity deployment, Map<String, Object> deploymentSettings) {\n        for (Deployer deployer : deployers) {\n            deployer.deploy(deployment, deploymentSettings);\n        }\n    }\n\n    public DecisionEntity findDeployedDecisionById(String decisionId) {\n        if (decisionId == null) {\n            throw new FlowableException(\"Invalid decision id : null\");\n        }\n\n        // first try the cache\n        DecisionCacheEntry cacheEntry = decisionCache.get(decisionId);\n        DecisionEntity decision = cacheEntry != null ? cacheEntry.getDecisionEntity() : null;\n\n        if (decision == null) {\n            decision = engineConfig.getDecisionEntityManager().findById(decisionId);\n            if (decision == null) {\n                throw new FlowableObjectNotFoundException(\"no decision found with id '\" + decisionId + \"'\");\n            }\n            decision = resolveDecision(decision).getDecisionEntity();\n        }\n        return decision;\n    }\n\n    public DecisionEntity findDeployedLatestDefinitionByKey(String definitionKey) {\n        DecisionEntity definition = decisionEntityManager.findLatestDecisionByKey(definitionKey);\n\n        if (definition == null) {\n            throw new FlowableObjectNotFoundException(\"no decisions deployed with key '\" + definitionKey + \"'\");\n        }\n        definition = resolveDecision(definition).getDecisionEntity();\n        return definition;\n    }\n\n    public DecisionEntity findDeployedLatestDefinitionByKeyAndTenantId(String definitionKey, String tenantId) {\n        DecisionEntity definition = decisionEntityManager.findLatestDecisionByKeyAndTenantId(definitionKey, tenantId);","sourceCodeStart":56,"sourceCodeEnd":92,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/impl/persistence/deploy/DeploymentManager.java#L56-L92","documentation":"findDeployedDecisionById throws FlowableObjectNotFoundException('no decision found with id ...') when neither the decision cache nor the database (findById) returns a DecisionEntity for the given id. It signals that the id references nothing that was ever deployed.","triggerScenarios":"Calling findDeployedDecisionById (directly or via decisionTableEntity resolution) with a decisionId that has no matching row in ACT_DMN_DECISION.","commonSituations":"Decision deleted or deployment removed while a decision-table rule still references the old id; wrong database/schema or tenant environment; typo in the referenced decision id; redeploying with a changed decision key so old ids dangle.","solutions":["Verify the decision id exists: query the DmnRepositoryService (createDecisionQuery().decisionId(id)) before executing.","Re-deploy the DMN deployment containing the decision, or repair the decision-table reference to point at an existing decision.","Confirm you are connected to the database/environment where the decision was actually deployed."],"exampleFix":"// before\nDecisionEntity d = deploymentManager.findDeployedDecisionById(decisionId);\n// after\nDmnDecision d = dmnRepositoryService.createDecisionQuery().decisionId(decisionId).singleResult();\nif (d == null) {\n    throw new FlowableObjectNotFoundException(\"decision \" + decisionId + \" is not deployed\");\n}\nDecisionEntity entity = deploymentManager.findDeployedDecisionById(decisionId);","handlingStrategy":"try-catch","validationCode":"DmnDecision d = dmnRepositoryService.createDecisionQuery().decisionId(decisionId).singleResult();\nboolean decisionExists = d != null;","typeGuard":null,"tryCatchPattern":"try { return manager.findDeployedDecisionById(decisionId); } catch (FlowableObjectNotFoundException e) { log.warn(\"decision {} not deployed\", decisionId); return null; /* or redeploy */ }","preventionTips":["Query DecisionQuery by id before executing","Never delete deployments still referenced by decision tables","Keep environments' databases consistent with what your rules reference"],"tags":["flowable-dmn","not-found","decision-lookup","stale-reference"],"backgroundTag":"entity-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"}