flowable/flowable-engine · error · FlowableObjectNotFoundException
Could not find a table with name
Error message
Could not find a table with name '${tableName}'. What it means
GET /management/tables/{tableName} (single table metadata) iterates the table name/count map from managementService and, if no entry matches the requested tableName, throws FlowableObjectNotFoundException. Unlike the data endpoint this checks against the exposed table list rather than metadata lookup, but the meaning is the same: no such table exists.
Solutions
- Call GET /management/tables to enumerate valid table names and pick the exact one.
- Correct spelling and casing of the table name.
- Verify datasource configuration targets the intended flowable database.
- Catch the resulting HTTP 404 client-side and show a helpful 'table not found' message.
Example fix
// before GET /management/tables/act_ru_task // after GET /management/tables/ACT_RU_TASK
Defensive patterns
Strategy: validation
Validate before calling
const names = (await get('/management/tables')).data.map(t => t.name);
if (!names.includes(tableName)) throw new Error(`Unknown table ${tableName}`); Try / catch
try { return await getTable(name); } catch (e) { if (e.status === 404) return null; throw e; } Prevention
- Cache the table list from GET /management/tables and validate against it.
- Use exact-case names as returned by the API.
- After flowable upgrades, re-check table names.
When it happens
Trigger: GET /management/tables/{tableName} where {tableName} is not among the names returned by GET /management/tables (typo, wrong schema, or case mismatch).
Common situations: Typo or wrong-case table name; querying after a flowable upgrade changed table names; wrong database configured in the REST application properties.
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
- Could not find a table with name
- ${aonfe.getMessage()}
- Batch part with id ' ' does not have a batch part document.
- Batch with id ' ' does not have a batch document.
- Case definition does not have a start form defined
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/2c9e9a4f26403a0e.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-rest/src/main/java/org/flowable/rest/service/api/management/TableResource.java:73
})
@GetMapping(value = "/management/tables/{tableName}", produces = "application/json")
public TableResponse getTable(@ApiParam(name = "tableName") @PathVariable String tableName) {
if (restApiInterceptor != null) {
restApiInterceptor.accessTableInfo();
}
Map<String, Long> tableCounts = managementService.getTableCount();
TableResponse response = null;
for (Entry<String, Long> entry : tableCounts.entrySet()) {
if (entry.getKey().equals(tableName)) {
response = restResponseFactory.createTableResponse(entry.getKey(), entry.getValue());
break;
}
}
if (response == null) {
throw new FlowableObjectNotFoundException("Could not find a table with name '" + tableName + "'.", String.class);
}
return response;
}
}
View on GitHub (pinned to d6d39ce1c6)