flowable/flowable-engine · warning

Exception while autodeploying DMN definitions. This exceptio

Error message

Exception while autodeploying DMN definitions. This exception can be ignored if the root cause indicates a unique constraint violation, which is typically caused by two (or more) servers booting up at the exact same time and deploying the same definitions. 

What it means

A WARN from DefaultAutoDeploymentStrategy.deployResourcesInternal: the DMN auto-deployment on application startup threw an exception. When throwExceptionOnDeploymentFailure is false, the exception is swallowed with this message because it is often a unique-constraint violation caused by several server instances deploying identical definitions simultaneously — which is safe to ignore.

Source

Thrown at modules/flowable-dmn-spring/src/main/java/org/flowable/dmn/spring/autodeployment/DefaultAutoDeploymentStrategy.java:71

    @Override
    protected void deployResourcesInternal(String deploymentNameHint, Resource[] resources, DmnEngine engine) {
        DmnRepositoryService repositoryService = engine.getDmnRepositoryService();

        // Create a single deployment for all resources using the name hint as the literal name
        final DmnDeploymentBuilder deploymentBuilder = repositoryService.createDeployment().enableDuplicateFiltering().name(deploymentNameHint);

        for (final Resource resource : resources) {
            addResource(resource, deploymentBuilder);
        }
        try {

            deploymentBuilder.deploy();

        } catch (Exception e) {
            if (isThrowExceptionOnDeploymentFailure()) {
                throw e;
            } else {
                LOGGER.warn("Exception while autodeploying DMN definitions. "
                    + "This exception can be ignored if the root cause indicates a unique constraint violation, "
                    + "which is typically caused by two (or more) servers booting up at the exact same time and deploying the same definitions. ", e);
            }
        }

    }

}

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Read the nested root cause: if it is a unique constraint (ACT_DMN_DEPLOYMENT / geometric UNIQUE), it is safe to ignore.
  2. If the root cause is a parse/validation error, fix the .dmn resource — the swallowed warning hides real failures.
  3. Set the deployment-failure flag (throwExceptionOnDeploymentFailure) to true during development to fail fast on bad DMN files.
  4. Stagger instance startup or use deployment name/version locking to reduce concurrent-deploy races.

Example fix

// before (application.yml)
flowable:
  dmn:
    check-definition: false
// after (fail fast during dev)
flowable:
  dmn:
    enabled: true
# ensure DMN XML validates locally before deploy:
# mvn test -Dtest=DmnDeploymentValidationTest
Defensive patterns

Strategy: try-catch

Validate before calling

// validate DMN resources before startup
DmnParser.parseAll(new ClassPathResource("dmn/decision.dmn").getInputStream()); // throws on invalid XML

Try / catch

try { dmnEngineRule.deploy(...); } catch (org.flowable.common.engine.api.FlowableException e) { if (!isUniqueConstraint(e)) throw e; /* tolerate race */ }

Prevention

When it happens

Trigger: Spring Boot startup with flowable.dmn auto-deployment enabled (classpath .dmn resources) while another node deploys the same definitions at the same moment, or a genuinely failing deployment (bad XML) with auto-deployment failure tolerated.

Common situations: Clustering several booting instances against a shared database; Kubernetes rolling restarts; misconfigured DMN files where the warning masks a real deployment failure.

Related errors


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