flowable/flowable-engine · error · FlowableIllegalArgumentException
Illegal value for history-level:
Error message
Illegal value for history-level:
What it means
Guard in HistoryLevel.getHistoryLevelForKey: the configured history level string (flowable.history-level or process engine config) does not match any known level key (none, activity, audit, full), so the engine cannot determine what to record.
Solutions
- Set history-level to one of none, activity, audit or full
- Check for typos or legacy values like 'default' in configuration files
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/history/HistoryLevel.java:47 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/ced1fd3aa17a10f2.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/history/HistoryLevel.java:47
private HistoryLevel(String key) {
this.key = key;
}
/**
* @param key
* string representation of level
* @return {@link HistoryLevel} for the given key
* @throws FlowableException
* when passed in key doesn't correspond to existing level
*/
public static HistoryLevel getHistoryLevelForKey(String key) {
for (HistoryLevel level : values()) {
if (level.key.equalsIgnoreCase(key)) {
return level;
}
}
throw new FlowableIllegalArgumentException("Illegal value for history-level: " + key);
}
/**
* String representation of this history-level.
*/
public String getKey() {
return key;
}
/**
* Checks if the given level is the same as, or higher in order than the level this method is executed on.
*/
public boolean isAtLeast(HistoryLevel level) {
// Comparing enums actually compares the location of values declared in the enum
return this.compareTo(level) >= 0;
}
}View on GitHub (pinned to d6d39ce1c6)