flowable/flowable-engine · error · FlowableObjectNotFoundException
no resource found with name '' in deployment ''
Error message
no resource found with name '' in deployment ''
What it means
When the resource lookup by deploymentId+resourceName finds nothing but the deployment itself exists, the command throws FlowableObjectNotFoundException stating no resource with that name exists in the deployment. The deployment is valid, only the resource name does not match.
Solutions
- Call cmmnRepositoryService.getDeploymentResourceNames(deploymentId) and use an exact returned name
- Check spelling/extension/case of resourceName against what was deployed
- Redeploy with the resource included
Example fix
// before
InputStream is = cmmnRepositoryService.getResource(deploymentId, "myCase.cmmn"); // typo
// after
List<String> names = cmmnRepositoryService.getDeploymentResourceNames(deploymentId);
if (names.contains("my-case.cmmn")) {
InputStream is = cmmnRepositoryService.getResource(deploymentId, "my-case.cmmn");
} Defensive patterns
Strategy: fallback
Validate before calling
List<String> names = cmmnRepositoryService.getDeploymentResourceNames(deploymentId); boolean present = names != null && names.contains(resourceName);
Try / catch
try { return cmmnRepositoryService.getResource(deploymentId, name); } catch (FlowableObjectNotFoundException e) { return fallbackResource(name); } Prevention
- Always list deployment resource names before fetching a resource
- Deploy resources with fixed, well-known file names
- Remember matching is exact (case and extension sensitive)
When it happens
Trigger: Calling CmmnRepositoryService.getResource(deploymentId, resourceName) where the deployment exists but no resource row matches that exact resource name (typo, wrong extension, resource removed, or name case mismatch).
Common situations: Guessing the resource name instead of listing it; deployment packaged without the .cmmn/.png file; using the model key instead of the file name; database migration dropping resource rows.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- Cannot find case definition for id:
- Cannot find case definition with id
- Cannot find case definition with id
- Cannot find case instance for id
- Cannot find case instance with id
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/67e2b51ab09207d0.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/cmd/GetDeploymentResourceCmd.java:54
this.resourceName = resourceName;
}
@Override
public InputStream execute(CommandContext commandContext) {
if (deploymentId == null) {
throw new FlowableIllegalArgumentException("deploymentId is null");
}
if (resourceName == null) {
throw new FlowableIllegalArgumentException("resourceName is null");
}
CmmnResourceEntity resource = CommandContextUtil.getCmmnResourceEntityManager(commandContext)
.findResourceByDeploymentIdAndResourceName(deploymentId, resourceName);
if (resource == null) {
if (CommandContextUtil.getCmmnDeploymentEntityManager(commandContext).findById(deploymentId) == null) {
throw new FlowableObjectNotFoundException("deployment does not exist: " + deploymentId, CmmnDeploymentEntity.class);
} else {
throw new FlowableObjectNotFoundException("no resource found with name '" + resourceName + "' in deployment '" + deploymentId + "'", CmmnResourceEntity.class);
}
}
return new ByteArrayInputStream(resource.getBytes());
}
}
View on GitHub (pinned to d6d39ce1c6)