{"record":{"id":"0d17fde1321fd280","repo":"flowable/flowable-engine","slug":"could-not-find-org-flowable-http-httpactivitybehav","errorCode":null,"errorMessage":"Could not find org.flowable.http.HttpActivityBehavior: ","messagePattern":"Could not find org\\.flowable\\.http\\.HttpActivityBehavior: ","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/parser/DefaultCmmnActivityBehaviorFactory.java","lineNumber":192,"sourceCode":"                    theClass = Class.forName(fieldExtension.getStringValue());\n                    behaviorExtension = fieldExtension;\n                    break;\n                }\n            }\n\n            if (behaviorExtension != null) {\n                task.getFieldExtensions().remove(behaviorExtension);\n            }\n\n            // Default Http behavior class\n            if (theClass == null) {\n                return createDefaultHttpActivityBehaviour(planItem, task);\n            }\n\n            return classDelegateFactory.create(theClass.getName(), task.getFieldExtensions());\n\n        } catch (ClassNotFoundException e) {\n            throw new FlowableException(\"Could not find org.flowable.http.HttpActivityBehavior: \", e);\n        }\n    }\n\n    protected CmmnActivityBehavior createDefaultHttpActivityBehaviour(PlanItem planItem, ServiceTask serviceTask) {\n        if (ImplementationType.IMPLEMENTATION_TYPE_CLASS.equals(serviceTask.getImplementationType())) {\n            return createCmmnClassDelegate(planItem, serviceTask);\n        } else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION.equals(serviceTask.getImplementationType())) {\n            return createPlanItemDelegateExpressionActivityBehavior(planItem, serviceTask);\n        } else {\n            return classDelegateFactory.create(DefaultCmmnHttpActivityDelegate.class.getName(), serviceTask.getFieldExtensions());\n        }\n    }\n\n    @Override\n    public CmmnActivityBehavior createEmailActivityBehavior(PlanItem planItem, ServiceTask task) {\n        return classDelegateFactory.create(CmmnMailActivityDelegate.class.getName(), task.getFieldExtensions());\n    }\n","sourceCodeStart":174,"sourceCodeEnd":210,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/parser/DefaultCmmnActivityBehaviorFactory.java#L174-L210","documentation":"For an HTTP service task whose class delegate is used, DefaultCmmnActivityBehaviorFactory.createHttpActivityBehavior tries to load the HttpActivityBehavior class via ClassUtils. If the class is not on the classpath (ClassNotFoundException) it throws this FlowableException naming org.flowable.http.HttpActivityBehavior.","triggerScenarios":"A CMMN model contains an HTTP service task (or a class reference to an HttpActivityBehavior) but the flowable-http module is not on the runtime classpath, so the class-delegate class cannot be loaded.","commonSituations":"Missing org.flowable:flowable-http dependency in the application; deployment moved to a slimmer runtime without the http module; version mismatch where the class was relocated/renamed across Flowable versions.","solutions":["Add the flowable-http module dependency (org.flowable:flowable-http) matching your Flowable version.","Remove/replace the HTTP service task in the CMMN model if HTTP calls aren't needed.","If using a custom behavior class, fix the class reference so it points to an existing class on the classpath.","Check for shaded/moved packages after upgrading Flowable (class relocation)."],"exampleFix":"// before\n<dependency><groupId>org.flowable</groupId><artifactId>flowable-cmmn-engine</artifactId></dependency>\n// after\n<dependency><groupId>org.flowable</groupId><artifactId>flowable-cmmn-engine</artifactId></dependency>\n<dependency><groupId>org.flowable</groupId><artifactId>flowable-http</artifactId><version>${flowable.version}</version></dependency>","handlingStrategy":"validation","validationCode":"try {\n    Class.forName(\"org.flowable.http.HttpActivityBehavior\");\n} catch (ClassNotFoundException e) {\n    throw new IllegalStateException(\"Add org.flowable:flowable-http to the classpath\");\n}","typeGuard":null,"tryCatchPattern":"try { deploy(...); } catch (FlowableException e) { if (e.getMessage().startsWith(\"Could not find org.flowable.http.HttpActivityBehavior\")) { /* add flowable-http dependency */ } throw e; }","preventionTips":["Include flowable-http whenever CMMN models use HTTP tasks.","Keep engine module versions aligned on upgrades.","Scan deployed models for HTTP tasks during startup and fail fast with a clear message.","Avoid hardcoding class-delegate class names that may be relocated between versions."],"tags":["cmmn","classpath","http","missing-dependency"],"backgroundTag":"class-not-found","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}