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
- Only drop schemas for engine configurations actually registered; guard the command by checking engineConfigurations.containsKey(scope).
- Correct the engineScopeType constant to the registered key.
- Initialize/register the engine configuration before attempting the drop.
- 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
- Enumerate scopes from engineConfigurations.keySet() rather than hardcoding.
- Skip drop for engines never installed.
- Delegate teardown to engine lifecycle close methods.
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
- No flowable tables in DB. Set property "databaseSchemaUpdate
- There is no engine configuration for scope ${engineScopeType
- Schema version property is not set
- no org.flowable.app.engine.AppEngine defined in the applicat
- transactionManager is required property for SpringAppEngineC
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/b1caa1a6875253f6.
Report an issue: GitHub.