flowable/flowable-engine · error · FlowableObjectNotFoundException

Could not find a resource with name '<resourceName>' in depl

Error message

Could not find a resource with name '<resourceName>' in deployment '<deploymentId>

What it means

FlowableObjectNotFoundException thrown when the requested resourceName is not present in the deployment's resource list. The deployment exists but contains no resource with that exact (case-sensitive) name.

Source

Thrown at modules/flowable-app-engine-rest/src/main/java/org/flowable/app/rest/service/api/repository/AppDeploymentResourceDataResource.java:94

        
        if (restApiInterceptor != null) {
            restApiInterceptor.accessDeploymentById(deployment);
        }

        List<String> resourceList = appRepositoryService.getDeploymentResourceNames(deploymentId);

        if (resourceList.contains(resourceName)) {
            response.setContentType("application/json");
            try (final InputStream resourceStream = appRepositoryService.getResourceAsStream(deploymentId, resourceName)) {
                return IOUtils.toByteArray(resourceStream);
                
            } catch (Exception e) {
                throw new FlowableException("Error converting resource stream", e);
            }
            
        } else {
            // Resource not found in deployment
            throw new FlowableObjectNotFoundException("Could not find a resource with name '" + resourceName + "' in deployment '" + deploymentId);
        }
    }
}

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. First call GET .../app-deployments/{deploymentId}/resources to list valid resource names
  2. Copy the exact resource name from that listing
  3. Check URL encoding if the name contains slashes or spaces

Example fix

// before
GET /app-repository/app-deployments/123/resources/App.json
// after (per resource listing)
GET /app-repository/app-deployments/123/resources/app.json
Defensive patterns

Strategy: validation

Validate before calling

List<String> names = appRepositoryService.getDeploymentResourceNames(deploymentId);
if (!names.contains(resourceName)) { throw new IllegalArgumentException(resourceName + " not in deployment " + deploymentId); }

Try / catch

try { ... } catch (FlowableObjectNotFoundException e) { return ResponseEntity.status(404).body("Unknown resource name"); }

Prevention

When it happens

Trigger: GET /app-repository/app-deployments/{deploymentId}/resources/{resourceName} where resourceName is misspelled or was never part of the deployment.

Common situations: Case-sensitive mismatch (App.json vs app.json), requesting a resource from the wrong deployment, path-encoding issues mangling slashes or special characters in the name.

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


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/a6342ad724960bad. Report an issue: GitHub.