flowable/flowable-engine · warning
property not found in task description expression
Error message
property not found in task description expression {} What it means
Logged by UserTaskActivityBehavior when evaluating the task's description expression throws an ActivitiException (e.g. the referenced property is missing). The literal expression text becomes the description as fallback and execution proceeds.
Solutions
- Initialize or guarantee the referenced variable before the user task
- Use a null-safe EL default in the description expression
- Fix the expression path in the BPMN model
Example fix
// before
<userTask documentation="Handle ${issue.code}" />
// after
<userTask documentation="Handle ${issue != null ? issue.code : 'unassigned'}" /> Defensive patterns
Strategy: validation
Validate before calling
if (execution.getVariable("issue") == null) { execution.setVariable("issue", defaultIssue); } Try / catch
try { desc = (String) expr.getValue(execution); } catch (ActivitiException e) { desc = expr.getExpressionText(); LOGGER.warn(...); } Prevention
- Use null-safe EL defaults in description expressions
- Ensure required variables exist before task creation
- Add model checks that verify expression variables exist in the process
When it happens
Trigger: A user task with a documentation/description expression such as ${task.doc.reason} where the property does not resolve at runtime.
Common situations: Variables removed or not yet set when the task is created; EL path typos; refactorings that renamed process variables.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- property not found in task name expression
- Cannot set value of '', it's readonly!
- Category expression does not resolve to a string
- Due date expression does not resolve to a Date, Instant…
- Due date expression does not resolve to a Date or Date…
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/61a3c5e6d827b018.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable5-engine/src/main/java/org/activiti/engine/impl/bpmn/behavior/UserTaskActivityBehavior.java:147
if (activeNameExpression != null) {
String name = null;
try {
name = (String) activeNameExpression.getValue(execution);
} catch (ActivitiException e) {
name = activeNameExpression.getExpressionText();
LOGGER.warn("property not found in task name expression {}", e.getMessage());
}
task.setName(name);
}
if (activeDescriptionExpression != null) {
String description = null;
try {
description = (String) activeDescriptionExpression.getValue(execution);
} catch (ActivitiException e) {
description = activeDescriptionExpression.getExpressionText();
LOGGER.warn("property not found in task description expression {}", e.getMessage());
}
task.setDescription(description);
}
if (activeDueDateExpression != null) {
Object dueDate = activeDueDateExpression.getValue(execution);
if (dueDate != null) {
if (dueDate instanceof Date) {
task.setDueDate((Date) dueDate);
} else if (dueDate instanceof String) {
BusinessCalendar businessCalendar = Context
.getProcessEngineConfiguration()
.getBusinessCalendarManager()
.getBusinessCalendar(taskDefinition.getBusinessCalendarNameExpression().getValue(execution).toString());
task.setDueDate(businessCalendar.resolveDuedate((String) dueDate));
} else {
throw new ActivitiIllegalArgumentException("Due date expression does not resolve to a Date or Date string: " +
activeDueDateExpression.getExpressionText());View on GitHub (pinned to d6d39ce1c6)