{"record":{"id":"6a42b76dc691c4c7","repo":"flowable/flowable-engine","slug":"invalid-event-type-typename","errorCode":null,"errorMessage":"Invalid event-type: ${typeName}","messagePattern":"Invalid event-type: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable-idm-api/src/main/java/org/flowable/idm/api/event/FlowableIdmEventType.java","lineNumber":102,"sourceCode":"     * @return an array of {@link FlowableIdmEventType} based on the given string.\n     * @throws IllegalArgumentException\n     *             when one of the given string is not a valid type name\n     */\n    public static FlowableIdmEventType[] getTypesFromString(String string) {\n        List<FlowableIdmEventType> result = new ArrayList<>();\n        if (string != null && !string.isEmpty()) {\n            String[] split = string.split(\",\");\n            for (String typeName : split) {\n                boolean found = false;\n                for (FlowableIdmEventType type : values()) {\n                    if (typeName.equals(type.name())) {\n                        result.add(type);\n                        found = true;\n                        break;\n                    }\n                }\n                if (!found) {\n                    throw new IllegalArgumentException(\"Invalid event-type: \" + typeName);\n                }\n            }\n        }\n\n        return result.toArray(EMPTY_ARRAY);\n    }\n}\n","sourceCodeStart":84,"sourceCodeEnd":110,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-idm-api/src/main/java/org/flowable/idm/api/event/FlowableIdmEventType.java#L84-L110","documentation":"FlowableIdmEventType.getTypesFromString parses a comma-separated list of event-type names into FlowableIdmEventType values. If any token does not match a known event type constant, it throws this IllegalArgumentException naming the unknown type. This typically runs while parsing event-listener configuration for the IDM engine.","triggerScenarios":"Calling getTypesFromString (or configuring IDM event listeners) with a type name that is not one of the enum's supported names, e.g. 'USER_CREATED' when only 'USER_INITIALIZED' variants exist, or a typo/case mismatch.","commonSituations":"Typo in flowable.idm.cfg.xml or Spring event-listener XML/property config; upgrading Flowable where an event type was renamed or removed; using engine event names in IDM listener config interchangeably.","solutions":["Correct the event-type string to one of the supported FlowableIdmEventType constant names.","Check the FlowableIdmEventType class for the exact valid names in your version.","If migrating versions, update renamed event types in your listener configuration."],"exampleFix":"// before\nFlowableIdmEventType.getTypesFromString(\"USER_CREATED,USER_DELETED\");\n\n// after\nFlowableIdmEventType.getTypesFromString(\"USER_INITIALIZED,USER_DELETED\"); // names must match enum constants","handlingStrategy":"validation","validationCode":"Set<String> valid = Arrays.stream(FlowableIdmEventType.values())\n    .flatMap(t -> Arrays.stream(t.getTypes()))\n    .collect(Collectors.toSet());\nfor (String name : typeString.split(\",\")) {\n    if (!valid.contains(name.trim())) {\n        throw new IllegalArgumentException(\"Unknown IDM event type: \" + name.trim());\n    }\n}","typeGuard":null,"tryCatchPattern":"try {\n    FlowableIdmEventType.getTypesFromString(cfg);\n} catch (IllegalArgumentException e) {\n    logger.error(\"Unknown event type in config: {}\", e.getMessage());\n}","preventionTips":["Copy event-type names exactly from the FlowableIdmEventType constants in your Flowable version.","Trim whitespace and check case when splitting comma lists in config.","Re-check event type names after upgrading Flowable."],"tags":["enum","idm","event-type","configuration"],"backgroundTag":"invalid-enum-value","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"}