flowable/flowable-engine · error · FlowableException
Error reading json value " + configuration + " for job " + j
Error message
Error reading json value " + configuration + " for job " + job
What it means
Thrown by TimerActivateProcessDefinitionHandler.execute when the timer job's JSON configuration string cannot be parsed with the engine's ObjectMapper. The handler reads includeProcessInstances from the config JSON before running ActivateProcessDefinitionCmd.
Source
Thrown at modules/flowable-engine/src/main/java/org/flowable/engine/impl/jobexecutor/TimerActivateProcessDefinitionHandler.java:46
public class TimerActivateProcessDefinitionHandler extends TimerChangeProcessDefinitionSuspensionStateJobHandler {
public static final String TYPE = "activate-processdefinition";
@Override
public String getType() {
return TYPE;
}
@Override
public void execute(JobEntity job, String configuration, VariableScope variableScope, CommandContext commandContext) {
ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration(commandContext);
boolean activateProcessInstances = false;
try {
JsonNode configNode = processEngineConfiguration.getObjectMapper().readTree(configuration);
activateProcessInstances = getIncludeProcessInstances(configNode);
} catch (Exception e) {
throw new FlowableException("Error reading json value " + configuration + " for job " + job, e);
}
String processDefinitionId = job.getProcessDefinitionId();
ActivateProcessDefinitionCmd activateProcessDefinitionCmd = new ActivateProcessDefinitionCmd(processDefinitionId, null, activateProcessInstances, null, job.getTenantId());
activateProcessDefinitionCmd.execute(commandContext);
}
}
View on GitHub (pinned to d6d39ce1c6)
Solutions
- Fix the job's CONFIGURATION_ value to be valid JSON (e.g. {"includeProcessInstances":true})
- Delete and let the engine recreate the timer job (e.g. redeploy the process definition)
- Inspect the causing exception (wrapped) to pinpoint the JSON parse failure
Example fix
// before
-- UPDATE ACT_RU_JOB SET CONFIGURATION_ = 'includeProcessInstances=true' ...
// after
-- UPDATE ACT_RU_JOB SET CONFIGURATION_ = '{"includeProcessInstances":true}' ... Defensive patterns
Strategy: try-catch
Validate before calling
try { new ObjectMapper().readTree(configuration); } catch (Exception e) { /* repair CONFIGURATION_ before job fires */ } Try / catch
try { /* timer fires */ } catch (FlowableException e) { if (e.getMessage().startsWith("Error reading json value")) { /* fix job configuration JSON or recreate job */ } else throw e; } Prevention
- Never hand-edit ACT_RU_JOB.CONFIGURATION_
- Test JSON config schema across Flowable upgrades
When it happens
Trigger: A timer-activation job whose configuration string is malformed JSON or missing expected fields, read via readTree(...) which throws and is wrapped in this FlowableException.
Common situations: Manual editing of ACT_RU_JOB CONFIGURATION_ column, upgrading between versions where the config JSON schema changed, or jobs created by a different Flowable version.
Understand the failure class
Background: JSON parse error: "Unexpected token" / "not valid JSON" / "failed to parse" — what JSON parsers are really complaining about — this error's family across 45 libraries.
Related errors
- exception during timer execution for " + job
- Error reading json value " + configuration + " for " + job
- Error reading app resource
- Error writing app model to json
- Cannot aggregate overview variable: ${varInstance}
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/9bedde4c692f8ee4.
Report an issue: GitHub.