{"record":{"id":"9dd0cee894e6f7b3","repo":"pentaho/pentaho-kettle","slug":"error0007","errorCode":"ERROR0007","errorMessage":"WebServiceDialog.ERROR0007.UnsupporteOperation.ComplexType","messagePattern":"WebServiceDialog\\.ERROR0007\\.UnsupporteOperation\\.ComplexType","errorType":"error_code","errorClass":"KettleStepException","httpStatus":null,"severity":"error","filePath":"ui/src/main/java/org/pentaho/di/ui/trans/steps/webservices/WebServiceDialog.java","lineNumber":268,"sourceCode":"      if ( parameters != null\n        && parameters.getOperation() != null && parameters.getOperation().getInput() != null\n        && parameters.getOperation().getInput().getName() != null ) {\n        request = wsdlOperation.getParameters().getOperation().getInput().getName().toString();\n      }\n      wOperationRequest.setText( request );\n\n      for ( int cpt = 0; cpt < wsdlOperation.getParameters().size(); cpt++ ) {\n        WsdlOpParameter param = wsdlOperation.getParameters().get( cpt );\n        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(","sourceCodeStart":250,"sourceCodeEnd":286,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/ui/src/main/java/org/pentaho/di/ui/trans/steps/webservices/WebServiceDialog.java#L250-L286","documentation":"In WebServiceDialog.loadOperation, a complex parameter's element has a type whose namespace is not the XML Schema namespace (XSD). The step only supports complex types built from simple XSD-typed elements, so it throws KettleStepException ERROR0007 'Unsupported operation: complex type'.","triggerScenarios":"Selecting a WSDL operation whose input parameter complex type contains an element typed outside the http://www.w3.org/2001/XMLSchema namespace (custom/complex element types, nested complex types).","commonSituations":"SOAP services with deeply nested or custom-schema-typed request bodies; WSDLs using company-specific types instead of plain XSD simple types; older Axis-based services with exotic schemas.","solutions":["Choose a different WSDL operation whose parameters use only simple XSD-typed elements.","Ask the service provider for a flat, simple-type-based operation, or wrap/transform via a generic HTTP/SOAP client step instead.","Modify the WSDL (if you control it) to declare elements with xsd: types.","Pre-process with an XSLT or a custom plugin step if the complex structure must be consumed."],"exampleFix":"// before (WSDL)\n<element name=\"address\" type=\"tns:AddressType\"/>\n// after\n<element name=\"city\" type=\"xsd:string\"/>","handlingStrategy":"validation","validationCode":"for (String n : type.getElementNames()) {\n  if (!\"http://www.w3.org/2001/XMLSchema\".equals(type.getElementType(n).getNamespaceURI()))\n    throw new KettleStepException(\"Element \" + n + \" is not a simple XSD type; unsupported by Web Services step\");\n}","typeGuard":"boolean isSimpleXsdElement(ComplexType t, String name) { QName q = t.getElementType(name); return q != null && \"http://www.w3.org/2001/XMLSchema\".equals(q.getNamespaceURI()); }","tryCatchPattern":"try { dialog.loadOperation(op); } catch (KettleStepException e) { logError(\"Unsupported WSDL complex type: \" + e.getMessage()); }","preventionTips":["Inspect the WSDL schema before choosing operations: require xsd: simple element types","Prefer flat, simple-type request/response designs from the service team","Fall back to HTTP Post + XML parsing steps for complex schemas"],"tags":["kettle","web-services","soap","wsdl","complex-type"],"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"}