{"record":{"id":"dcb26365cc1dc902","repo":"flowable/flowable-engine","slug":"process-should-be-validated-but-no-process-valida","errorCode":null,"errorMessage":"Process should be validated, but no process validator is configured on the process engine configuration!","messagePattern":"Process should be validated, but no process validator is configured on the process engine configuration!","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"modules/flowable5-engine/src/main/java/org/activiti/engine/impl/bpmn/parser/BpmnParse.java","lineNumber":172,"sourceCode":"\n            boolean enableSafeBpmnXml = false;\n            String encoding = null;\n            if (processEngineConfiguration != null) {\n                enableSafeBpmnXml = processEngineConfiguration.isEnableSafeBpmnXml();\n                encoding = processEngineConfiguration.getXmlEncoding();\n            }\n\n            if (encoding != null) {\n                bpmnModel = converter.convertToBpmnModel(streamSource, validateSchema, enableSafeBpmnXml, encoding);\n            } else {\n                bpmnModel = converter.convertToBpmnModel(streamSource, validateSchema, enableSafeBpmnXml);\n            }\n\n            // XSD validation goes first, then process/semantic validation\n            if (validateProcess) {\n                ProcessValidator processValidator = processEngineConfiguration.getProcessValidator();\n                if (processValidator == null) {\n                    LOGGER.warn(\"Process should be validated, but no process validator is configured on the process engine configuration!\");\n                } else {\n                    List<ValidationError> validationErrors = processValidator.validate(bpmnModel);\n                    if (validationErrors != null && !validationErrors.isEmpty()) {\n\n                        StringBuilder warningBuilder = new StringBuilder();\n                        StringBuilder errorBuilder = new StringBuilder();\n\n                        for (ValidationError error : validationErrors) {\n                            if (error.isWarning()) {\n                                warningBuilder.append(error);\n                                warningBuilder.append(\"\\n\");\n                            } else {\n                                errorBuilder.append(error);\n                                errorBuilder.append(\"\\n\");\n                            }\n                        }\n\n                        // Throw exception if there is any error","sourceCodeStart":154,"sourceCodeEnd":190,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable5-engine/src/main/java/org/activiti/engine/impl/bpmn/parser/BpmnParse.java#L154-L190","documentation":"During BpmnParse.execute, if process validation is requested (validateProcess) but the ProcessEngineConfiguration has no ProcessValidator configured, this warning is logged and semantic validation is skipped; deployment continues unvalidated.","triggerScenarios":"Deploying/parsing a BPMN model with process-level validation enabled while processValidator is null on the process engine configuration (common with the Activiti 5 compatibility engine where a validator was not wired).","commonSituations":"Minimal engine configurations that omit the default validation set; custom engine configurations in flowable5-engine compatibility mode.","solutions":["Configure a ProcessValidator (e.g. DefaultProcessValidator / the core validator's validation set) on the process engine configuration","Use ProcessEngineConfiguration's default validation rules for SetKeyIsEmpty, etc.","If validation is intentionally not wanted, set validateProcess=false to silence the mismatch"],"exampleFix":"// before\nprocessEngineConfig.setProcessValidator(null);\n// after\nprocessEngineConfig.setProcessValidator(new DefaultProcessValidator());","handlingStrategy":"validation","validationCode":"if (cfg.isValidateProcess() && cfg.getProcessValidator() == null) {\n    cfg.setProcessValidator(new DefaultProcessValidator());\n}","typeGuard":"boolean validatorMissing(ProcessEngineConfiguration cfg) { return cfg.getProcessValidator() == null; }","tryCatchPattern":null,"preventionTips":["Always wire a ProcessValidator in custom engine configurations","Decide explicitly: validator configured OR validateProcess disabled","Review engine config when enabling the Activiti 5 compatibility layer"],"tags":["validation","bpmn-parse","configuration"],"backgroundTag":"missing-configuration","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"}