{"record":{"id":"7f437c8c602fbdbd","repo":"flowable/flowable-engine","slug":"dmnengineconfiguration-is-required","errorCode":null,"errorMessage":"DmnEngineConfiguration is required","messagePattern":"DmnEngineConfiguration is required","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-dmn-engine-configurator/src/main/java/org/flowable/dmn/engine/configurator/DmnEngineConfigurator.java","lineNumber":81,"sourceCode":"        initEngine();\n        \n        initServiceConfigurations(engineConfiguration, dmnEngineConfiguration);\n    }\n    \n    @Override\n    protected List<Class<? extends Entity>> getEntityInsertionOrder() {\n        return EntityDependencyOrder.INSERT_ORDER;\n    }\n    \n    @Override\n    protected List<Class<? extends Entity>> getEntityDeletionOrder() {\n        return EntityDependencyOrder.DELETE_ORDER;\n    }\n\n    @Override\n    protected DmnEngine buildEngine() {\n        if (dmnEngineConfiguration == null) {\n            throw new FlowableException(\"DmnEngineConfiguration is required\");\n        }\n\n        return dmnEngineConfiguration.buildDmnEngine();\n    }\n\n    public DmnEngineConfiguration getDmnEngineConfiguration() {\n        return dmnEngineConfiguration;\n    }\n\n    public DmnEngineConfigurator setDmnEngineConfiguration(DmnEngineConfiguration dmnEngineConfiguration) {\n        this.dmnEngineConfiguration = dmnEngineConfiguration;\n        return this;\n    }\n\n}\n","sourceCodeStart":63,"sourceCodeEnd":97,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-dmn-engine-configurator/src/main/java/org/flowable/dmn/engine/configurator/DmnEngineConfigurator.java#L63-L97","documentation":"DmnEngineConfigurator.buildEngine() requires a DmnEngineConfiguration to be set before building the DMN engine during ProcessEngine configuration. If the configurator was registered without providing its configuration, engine boot fails. This is a mandatory wiring check.","triggerScenarios":"Registering new DmnEngineConfigurator() in a process engine configuration without calling setDmnEngineConfiguration(...), then building the process engine.","commonSituations":"Programmatic engine configuration missing the setter, Spring XML config not injecting the dmnEngineConfiguration property, copying configurator setup from examples incompletely.","solutions":["Create a DmnEngineConfiguration and call configurator.setDmnEngineConfiguration(dmnEngineConfiguration) before engine init.","In Spring XML, inject the dmnEngineConfiguration property on the configurator bean.","Use the provided helper (e.g. DmnEngineConfiguration.createDefaultDmnEngineConfiguration()) instead of a bare configurator."],"exampleFix":"// before\nconfigurator = new DmnEngineConfigurator();\nprocessEngineConfig.addConfigurator(configurator);\n// after\nDmnEngineConfiguration dmnCfg = DmnEngineConfiguration.createDefaultDmnEngineConfiguration();\nconfigurator.setDmnEngineConfiguration(dmnCfg);\nprocessEngineConfig.addConfigurator(configurator);","handlingStrategy":"validation","validationCode":"DmnEngineConfigurator configurator = new DmnEngineConfigurator();\nif (configurator.getDmnEngineConfiguration() == null) {\n    configurator.setDmnEngineConfiguration(DmnEngineConfiguration.createDefaultDmnEngineConfiguration());\n}\nprocessEngineConfiguration.addConfigurator(configurator);","typeGuard":null,"tryCatchPattern":"try { processEngine.buildProcessEngine(); } catch (FlowableException e) { if (e.getMessage().contains(\"DmnEngineConfiguration is required\")) { /* wire the config */ } else { throw e; } }","preventionTips":["Always call setDmnEngineConfiguration after creating the configurator","In Spring, inject the dmnEngineConfiguration property","Boot engines in a smoke test early in CI"],"tags":["dmn","configuration","engine-bootstrap"],"backgroundTag":"missing-required-config","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}