{"record":{"id":"ac59db4093da6db8","repo":"flowable/flowable-engine","slug":"configuration-is-null","errorCode":null,"errorMessage":"configuration is null","messagePattern":"configuration is null","errorType":"validation","errorClass":"FlowableIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable-eventsubscription-service/src/main/java/org/flowable/eventsubscription/service/impl/EventSubscriptionQueryImpl.java","lineNumber":434,"sourceCode":"        }\n\n        return this;\n    }\n\n    @Override\n    public EventSubscriptionQuery withoutTenantId() {\n        if (inOrStatement) {\n            this.currentOrQueryObject.withoutTenantId = true;\n        } else {\n            this.withoutTenantId = true;\n        }\n        return this;\n    }\n\n    @Override\n    public EventSubscriptionQueryImpl configuration(String configuration) {\n        if (configuration == null) {\n            throw new FlowableIllegalArgumentException(\"configuration is null\");\n        }\n\n        if (inOrStatement) {\n            this.currentOrQueryObject.configuration = configuration;\n        } else {\n            this.configuration = configuration;\n        }\n\n        return this;\n    }\n\n    @Override\n    public EventSubscriptionQueryImpl configurations(Collection<String> configurations) {\n        if (configurations == null) {\n            throw new FlowableIllegalArgumentException(\"configurations are null\");\n        }\n\n        if (inOrStatement) {","sourceCodeStart":416,"sourceCodeEnd":452,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-eventsubscription-service/src/main/java/org/flowable/eventsubscription/service/impl/EventSubscriptionQueryImpl.java#L416-L452","documentation":"EventSubscriptionQueryImpl.configuration() validates that the configuration value (typically the correlation/configuration column of an event subscription, e.g. a signal or message key) is non-null. Flowable throws FlowableIllegalArgumentException because null configuration cannot be matched in the generated SQL predicate.","triggerScenarios":"Calling eventSubscriptionQuery.configuration(null), usually when the configuration value originates from an unset variable, a message/signal name that was not provided, or a lookup miss.","commonSituations":"Filtering event subscriptions by signal/message name where the name is supplied by a caller, a process variable, or an API payload that omitted it.","solutions":["Validate the configuration string before calling configuration(), and reject or default at the caller boundary","Skip the configuration() call when filtering by configuration is not intended","Fix the upstream source (variable, request field) to always carry the expected value"],"exampleFix":"// before\nquery.configuration(signalName);\n\n// after\nObjects.requireNonNull(signalName, \"signalName required\");\nquery.configuration(signalName);","handlingStrategy":"validation","validationCode":"Objects.requireNonNull(configuration, \"configuration must not be null\");","typeGuard":"boolean hasConfiguration(String c) { return c != null && !c.isBlank(); }","tryCatchPattern":"try {\n    query.configuration(configuration);\n} catch (FlowableIllegalArgumentException e) {\n    throw new BadRequestException(\"configuration is required\", e);\n}","preventionTips":["Validate request/variable payloads at the boundary","Skip configuration() when filtering by configuration is not intended","Use Objects.requireNonNull early to localize failures"],"tags":["flowable","query","null-check","event-subscription"],"backgroundTag":"null-argument","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}