{"record":{"id":"f34d820c55c5c9d4","repo":"pentaho/pentaho-kettle","slug":"error0006","errorCode":"ERROR0006","errorMessage":"WebServiceDialog.ERROR0006.UnsupportedOperation.MultipleArrays","messagePattern":"WebServiceDialog\\.ERROR0006\\.UnsupportedOperation\\.MultipleArrays","errorType":"error_code","errorClass":"KettleStepException","httpStatus":null,"severity":"error","filePath":"ui/src/main/java/org/pentaho/di/ui/trans/steps/webservices/WebServiceDialog.java","lineNumber":277,"sourceCode":"        if ( param.isArray() ) {\n          // setInFieldArgumentName(param.getName().getLocalPart());\n          if ( param.getItemXmlType() != null ) {\n            ComplexType type = param.getItemComplexType();\n            if ( type != null ) {\n              for ( Iterator<String> itrType = type.getElementNames().iterator(); itrType.hasNext(); ) {\n                String attributeName = itrType.next();\n                QName attributeType = type.getElementType( attributeName );\n                if ( !WebServiceMeta.XSD_NS_URI.equals( attributeType.getNamespaceURI() ) ) {\n                  throw new KettleStepException( BaseMessages.getString(\n                    PKG, \"WebServiceDialog.ERROR0007.UnsupporteOperation.ComplexType\" ) );\n                }\n              }\n            }\n            if ( ParameterMode.IN.equals( param.getMode() )\n              || ParameterMode.INOUT.equals( param.getMode() )\n              || ParameterMode.UNDEFINED.equals( param.getMode() ) ) {\n              if ( inWsdlParamContainer != null ) {\n                throw new KettleStepException( BaseMessages.getString(\n                  PKG, \"WebServiceDialog.ERROR0006.UnsupportedOperation.MultipleArrays\" ) );\n              } else {\n                inWsdlParamContainer = new WsdlOpParameterContainer( param );\n              }\n            } else if ( ParameterMode.OUT.equals( param.getMode() )\n              || ParameterMode.INOUT.equals( param.getMode() )\n              || ParameterMode.UNDEFINED.equals( param.getMode() ) ) {\n              if ( outWsdlParamContainer != null ) {\n                throw new KettleStepException( BaseMessages.getString(\n                  PKG, \"WebServiceDialog.ERROR0006.UnsupportedOperation.MultipleArrays\" ) );\n              } else {\n                outWsdlParamContainer = new WsdlOpParameterContainer( param );\n              }\n            }\n          }\n        } else {\n          if ( ParameterMode.IN.equals( param.getMode() )\n            || ParameterMode.INOUT.equals( param.getMode() ) || ParameterMode.UNDEFINED.equals( param.getMode() ) ) {","sourceCodeStart":259,"sourceCodeEnd":295,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/ui/src/main/java/org/pentaho/di/ui/trans/steps/webservices/WebServiceDialog.java#L259-L295","documentation":"WebServiceDialog.loadOperation throws ERROR0006 'Multiple arrays' when it encounters a second IN/INOUT/UNDEFINED parameter while an input parameter container was already created — the step supports at most one array-style input parameter per operation.","triggerScenarios":"Selecting a WSDL operation with two or more input parameters (or two array parameters): the first creates inWsdlParamContainer, and hitting another IN/INOUT/UNDEFINED parameter while it is non-null throws.","commonSituations":"SOAP operations with multiple request arguments (common in document/literal wrapped styles with several parts); WSDLs where each part is an array; services not designed for PDI's single-parameter limitation.","solutions":["Pick an operation with a single input parameter, or ask the service for a single-request-object variant.","Wrap multiple parameters into one complex request element on the server (single wrapper type).","Use the REST/HTTP Post step or a custom SOAP client step instead of the Web Services step.","Check 'Operation parameter' handling in the dialog and simplify the WSDL if you own the service."],"exampleFix":"// before (WSDL)\n<part name=\"a\" .../><part name=\"b\" .../>\n// after (single request wrapper)\n<part name=\"request\" type=\"tns:MyRequest\"/>","handlingStrategy":"validation","validationCode":"long inParams = wsdlOperation.getParameters().stream()\n  .filter(p -> p.getMode() == ParameterMode.IN || p.getMode() == ParameterMode.INOUT || p.getMode() == ParameterMode.UNDEFINED)\n  .count();\nif (inParams > 1) throw new KettleStepException(\"Operation has multiple input parameters; Web Services step supports at most one\");","typeGuard":"boolean singleInputParam(WsdlOperation op) { return op.getParameters().stream().filter(p -> !ParameterMode.OUT.equals(p.getMode())).count() <= 1; }","tryCatchPattern":"try { loadOperation(op); } catch (KettleStepException e) { showWarning(\"Pick an operation with a single input parameter or use the REST/HTTP step.\"); }","preventionTips":["Review WSDL message parts count before wiring the step","Ask service providers for single request-object operations","Use generic SOAP/REST steps for multi-parameter operations"],"tags":["kettle","web-services","soap","wsdl","multiple-parameters"],"backgroundTag":"unsupported-operation","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}