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

  1. Call GET /management/tables to enumerate valid table names and pick the exact one.
  2. Correct spelling and casing of the table name.
  3. Verify datasource configuration targets the intended flowable database.
  4. 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

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


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)