flowable/flowable-engine · error · FlowableIllegalArgumentException

No deployment id provided

Error message

No deployment id provided

What it means

FlowableIllegalArgumentException thrown by getDeploymentResourceData when the deploymentId path/query parameter is null. The REST layer cannot look up a deployment resource without knowing which deployment to query, so it fails fast before hitting the repository service.

Solutions

  1. Provide a valid deployment id in the request URL path or query parameter.
  2. Verify the request was actually sent with the id (check the raw URL in client/proxy logs, not just the controller mapping).
  3. List existing deployments first via GET /event-registry-repository/deployments to obtain a valid id.

Example fix

// before
curl http://host/flowable-rest/event-registry-repository/deployments//resources/model.json
// after
String deploymentId = "d1c33a80-7f2e-11ea-..."; // fetch from deployment list, never empty
curl http://host/flowable-rest/event-registry-repository/deployments/${deploymentId}/resources/model.json
Defensive patterns

Strategy: validation

Validate before calling

if (deploymentId == null || deploymentId.isEmpty()) throw new IllegalArgumentException("deploymentId required");

Type guard

boolean hasDeploymentId = s != null && !s.trim().isEmpty();

Try / catch

try { ... } catch (FlowableIllegalArgumentException e) { log.warn("bad request: {}", e.getMessage()); return ResponseEntity.badRequest().build(); }

Prevention

When it happens

Trigger: Calling the deployment resource data endpoint (e.g. GET /event-registry-repository/deployments/{deploymentId}/resources/{resourceName}) with a missing or empty deployment id, or invoking getDeploymentResourceData(null, resourceName, response) programmatically.

Common situations: URL templates with an unpopulated path variable, HTTP clients stripping empty path segments, proxy rewrites that drop the id, or copied curl commands with the deployment id placeholder left in place.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — 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/d97af7536f7e6709. Report an issue: GitHub.

Appendix: source

Thrown at modules/flowable-event-registry-rest/src/main/java/org/flowable/eventregistry/rest/service/api/repository/BaseDeploymentResourceDataResource.java:48

/**
 * @author Tijs Rademakers
 */
public class BaseDeploymentResourceDataResource {

    @Autowired
    protected ContentTypeResolver contentTypeResolver;

    @Autowired
    protected EventRepositoryService repositoryService;
    
    @Autowired(required=false)
    protected EventRegistryRestApiInterceptor restApiInterceptor;

    protected byte[] getDeploymentResourceData(String deploymentId, String resourceName, HttpServletResponse response) {

        if (deploymentId == null) {
            throw new FlowableIllegalArgumentException("No deployment id provided");
        }
        if (resourceName == null) {
            throw new FlowableIllegalArgumentException("No resource name provided");
        }

        // Check if deployment exists
        EventDeployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult();
        if (deployment == null) {
            throw new FlowableObjectNotFoundException("Could not find a deployment with id '" + deploymentId + "'.", EventDeployment.class);
        }
        
        if (restApiInterceptor != null) {
            restApiInterceptor.accessDeploymentById(deployment);
        }

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

        if (resourceList.contains(resourceName)) {

View on GitHub (pinned to d6d39ce1c6)