flowable/flowable-engine · error · FlowableIllegalArgumentException

There is no engine configuration for scope ${engineScopeType

Error message

There is no engine configuration for scope ${engineScopeType}

What it means

Same lookup failure as the build command but in SchemaOperationsEngineDropDbCmd.execute: dropping the DB schema for an engine scope whose AbstractEngineConfiguration is not registered in CommandContext.getEngineConfigurations(). Flowable cannot find the schema managers to perform the drop.

Source

Thrown at modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/db/SchemaOperationsEngineDropDbCmd.java:42

/**
 * @author Filip Hrisafov
 */
public class SchemaOperationsEngineDropDbCmd implements Command<Void> {

    protected final String engineScopeType;

    public SchemaOperationsEngineDropDbCmd(String engineScopeType) {
        this.engineScopeType = engineScopeType;
    }

    @Override
    public Void execute(CommandContext commandContext) {

        AbstractEngineConfiguration engineConfiguration = commandContext.getEngineConfigurations()
                .get(engineScopeType);
        if (engineConfiguration == null) {
            throw new FlowableIllegalArgumentException("There is no engine configuration for scope " + engineScopeType);
        }

        List<SchemaManager> schemaManagers = new ArrayList<>();
        schemaManagers.add(engineConfiguration.getCommonSchemaManager());
        schemaManagers.add(engineConfiguration.getSchemaManager());

        Map<String, SchemaManager> additionalSchemaManagers = engineConfiguration.getAdditionalSchemaManagers();

        if (additionalSchemaManagers != null) {
            schemaManagers.addAll(additionalSchemaManagers.values());
        }

        // The drop is executed in the reverse order
        ListIterator<SchemaManager> listIterator = schemaManagers.listIterator(schemaManagers.size());
        while (listIterator.hasPrevious()) {
            SchemaManager schemaManager = listIterator.previous();
            try {
                schemaManager.schemaDrop();

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Only drop schemas for engine configurations actually registered; guard the command by checking engineConfigurations.containsKey(scope).
  2. Correct the engineScopeType constant to the registered key.
  3. Initialize/register the engine configuration before attempting the drop.
  4. Rely on engine-provided close/destroy lifecycle methods rather than manual drop commands.

Example fix

// before
executor.execute(new SchemaOperationsEngineDropDbCmd("dmn")); // dmn not installed
// after
if (engineConfigurations.containsKey("dmn")) {
  executor.execute(new SchemaOperationsEngineDropDbCmd("dmn"));
}
Defensive patterns

Strategy: validation

Validate before calling

if (engineConfigurations.containsKey(scope)) { executor.execute(new SchemaOperationsEngineDropDbCmd(scope)); }

Try / catch

catch (FlowableIllegalArgumentException e) { if (e.getMessage().startsWith("There is no engine configuration for scope")) { log.warn("skipping drop for uninstalled scope"); return; } throw e; }

Prevention

When it happens

Trigger: Running SchemaOperationsEngineDropDbCmd with an engineScopeType that has no registered configuration — e.g. invoking schema drop during shutdown/cleanup for an engine that was never configured, or a misnamed scope constant.

Common situations: Custom teardown code dropping schemas for all known scope types when only some engines are installed; test cleanup calling drop for 'cmmn'/'dmn' in a process-only setup; typos in scope type constants.

Related errors


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