{"record":{"id":"995d0a141500503a","repo":"Activiti/Activiti","slug":"payload-cannot-be-null","errorCode":null,"errorMessage":"payload cannot be null","messagePattern":"payload cannot be null","errorType":"validation","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"activiti-core/activiti-api-impl/activiti-api-process-runtime-impl/src/main/java/org/activiti/runtime/api/impl/ProcessAdminRuntimeImpl.java","lineNumber":138,"sourceCode":"            .latestVersion()\n            .list()\n            .stream()\n            .map(org.activiti.engine.repository.Deployment::getId)\n            .collect(Collectors.toSet());\n    }\n\n    @Override\n    public Page<ProcessDefinition> processDefinitions(Pageable pageable) {\n        return processDefinitions(pageable, ProcessPayloadBuilder.processDefinitions().build());\n    }\n\n    @Override\n    public Page<ProcessDefinition> processDefinitions(\n        Pageable pageable,\n        GetProcessDefinitionsPayload getProcessDefinitionsPayload\n    ) {\n        if (getProcessDefinitionsPayload == null) {\n            throw new IllegalStateException(\"payload cannot be null\");\n        }\n        ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();\n\n        if (getProcessDefinitionsPayload.isLatestVersionOnly()) {\n            processDefinitionQuery.latestVersion();\n        }\n\n        if (getProcessDefinitionsPayload.hasDefinitionKeys()) {\n            processDefinitionQuery.processDefinitionKeys(getProcessDefinitionsPayload.getProcessDefinitionKeys());\n        }\n\n        if (getProcessDefinitionsPayload.hasDefinitionIds()) {\n            processDefinitionQuery.processDefinitionIds(getProcessDefinitionsPayload.getProcessDefinitionIds());\n        }\n\n        return new PageImpl<>(\n            processDefinitionConverter.from(\n                processDefinitionQuery.listPage(pageable.getStartIndex(), pageable.getMaxItems())","sourceCodeStart":120,"sourceCodeEnd":156,"githubUrl":"https://github.com/Activiti/Activiti/blob/56435b1a97deeafdc09dd40074b056c89fba5a8a/activiti-core/activiti-api-impl/activiti-api-process-runtime-impl/src/main/java/org/activiti/runtime/api/impl/ProcessAdminRuntimeImpl.java#L120-L156","documentation":"Thrown by ProcessAdminRuntimeImpl.processDefinitions when the GetProcessDefinitionsPayload argument is null. The admin runtime API requires a payload object (even an empty one) to query process definitions; it fails fast with IllegalStateException instead of dereferencing null.","triggerScenarios":"Calling processRuntime.processDefinitions(pageable, null) directly, or a client/integration layer passing a null payload after a failed deserialization.","commonSituations":"Hand-written REST/admin clients omitting the request body; refactoring code that dropped payload construction; binding failures in wrappers that pass the deserialized payload through as null.","solutions":["Pass a new GetProcessDefinitionsPayload() instead of null","Check the caller/integration layer for code paths that construct a null payload","If using a REST endpoint, ensure the request body is provided and deserializes correctly"],"exampleFix":"// before\nadminRuntime.processDefinitions(pageable, null);\n// after\nadminRuntime.processDefinitions(pageable, new GetProcessDefinitionsPayload());","handlingStrategy":"type-guard","validationCode":"if (payload == null) payload = new GetProcessDefinitionsPayload();","typeGuard":"boolean callable(Pageable p, GetProcessDefinitionsPayload payload) { return payload != null; }","tryCatchPattern":"try {\n    page = adminRuntime.processDefinitions(pageable, payload);\n} catch (IllegalStateException e) {\n    if (\"payload cannot be null\".equals(e.getMessage())) {\n        page = adminRuntime.processDefinitions(pageable, new GetProcessDefinitionsPayload());\n    }\n}","preventionTips":["Always construct the payload explicitly, even when no filters are needed","Wrap admin API calls in helpers that default null payloads","Check deserialization of REST request bodies so empty bodies become empty payload objects, not null"],"tags":["null-check","admin-runtime","payload"],"backgroundTag":"null-argument","analyzedSha":"56435b1a97deeafdc09dd40074b056c89fba5a8a","analyzedAt":"2026-09-09T21:00:06.703Z","contentChangedAt":"2026-09-09T21:00:06.703Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}