{"record":{"id":"71a7c963d4bae250","repo":"flowable/flowable-engine","slug":"invalid-http-request-field-in-plan-item-instance","errorCode":null,"errorMessage":"Invalid http request field in plan item instance ${planItemInstance.getId()} in plan item ${planItemInstance.getPlanItemDefinitionId()} in case definition ${planItemInstance.getCaseDefinitionId()}","messagePattern":"Invalid http request field in plan item instance (.+?) in plan item (.+?) in case definition (.+?)","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/behavior/impl/http/DefaultCmmnHttpActivityDelegate.java","lineNumber":78,"sourceCode":"    @Override\n    protected FlowableHttpClient createHttpClient() {\n        HttpClientConfig config = CommandContextUtil.getCmmnEngineConfiguration().getHttpClientConfig();\n        return config.determineHttpClient();\n    }\n\n    @Override\n    public CompletableFuture<ExecutionData> execute(DelegatePlanItemInstance planItemInstance, AsyncTaskInvoker taskInvoker) {\n        RequestData request;\n\n        HttpServiceTask httpServiceTask = (HttpServiceTask) planItemInstance.getPlanItemDefinition();\n        try {\n            request = createRequest(planItemInstance, httpServiceTask.getId());\n\n        } catch (Exception e) {\n            if (e instanceof FlowableException) {\n                throw (FlowableException) e;\n            } else {\n                throw new FlowableException(HTTP_TASK_REQUEST_FIELD_INVALID + \" in plan item instance \" + planItemInstance.getId() + \" in plan item \"\n                        + planItemInstance.getPlanItemDefinitionId() + \" in case definition \" + planItemInstance.getCaseDefinitionId(), e);\n            }\n        }\n\n        CmmnEngineConfiguration cmmnEngineConfiguration = CommandContextUtil.getCmmnEngineConfiguration();\n        HttpRequestHandler httpRequestHandler = createHttpRequestHandler(httpServiceTask.getHttpRequestHandler(), cmmnEngineConfiguration);\n\n        if (httpRequestHandler != null) {\n            httpRequestHandler.handleHttpRequest(planItemInstance, request.getHttpRequest(), null);\n        }\n\n        // Validate request\n        validateRequest(request.getHttpRequest());\n\n        boolean parallelInSameTransaction;\n        if (httpServiceTask.getParallelInSameTransaction() != null) {\n            parallelInSameTransaction = httpServiceTask.getParallelInSameTransaction();\n        } else {","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/behavior/impl/http/DefaultCmmnHttpActivityDelegate.java#L60-L96","documentation":"Creating the HTTP request from the CMMN http service task's configured fields failed with a non-FlowableException, which is wrapped in this FlowableException. It indicates an invalid request field configuration (URL, method, headers, body, etc.) in the plan item definition.","triggerScenarios":"DefaultCmmnHttpActivityDelegate.execute calls createRequest and the underlying builder throws (e.g. malformed URL, invalid method, bad header/field expression) for planItemInstance's httpServiceTask.","commonSituations":"Typo in the http request field name in case XML; expression in url/headers evaluating to null or malformed URL; missing required field; invalid characters in URL.","solutions":["Inspect the cause (getCause()) for the exact invalid field, then fix the http request field configuration in the case definition","Validate the request URL/fields resolve correctly at runtime (log or test the expressions)","Check field names against the FlowableHttpRequest builder API; typos silently become invalid fields","Redeploy the corrected case definition"],"exampleFix":"// before\n<flowable:http-request field=\"url\" value=\"htp://api.example.com\" />\n// after\n<flowable:http-request field=\"url\" value=\"https://api.example.com/orders\" />","handlingStrategy":"try-catch","validationCode":"try { new java.net.URI(urlExpression); } catch (e) { throw new Error('invalid http request url: ' + url); }","typeGuard":null,"tryCatchPattern":"try {\n  executeHttpPlanItem();\n} catch (FlowableException e) {\n  if (e.getMessage().startsWith('Invalid http request field')) { inspect(e.getCause()); }\n  else throw e;\n}","preventionTips":["Validate URLs and header expressions at design time","Log expression evaluation results for request fields","Keep field names matching the FlowableHttpRequest builder API exactly"],"tags":["cmmn","http","configuration"],"backgroundTag":"invalid-config-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"}