pentaho/pentaho-kettle · error · KettleStepException

ERROR0007

ERROR0007

Error message

WebServiceDialog.ERROR0007.UnsupporteOperation.ComplexType

What it means

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'.

Solutions

  1. Choose a different WSDL operation whose parameters use only simple XSD-typed elements.
  2. Ask the service provider for a flat, simple-type-based operation, or wrap/transform via a generic HTTP/SOAP client step instead.
  3. Modify the WSDL (if you control it) to declare elements with xsd: types.
  4. Pre-process with an XSLT or a custom plugin step if the complex structure must be consumed.

Example fix

// before (WSDL)
<element name="address" type="tns:AddressType"/>
// after
<element name="city" type="xsd:string"/>
Defensive patterns

Strategy: validation

Validate before calling

for (String n : type.getElementNames()) {
  if (!"http://www.w3.org/2001/XMLSchema".equals(type.getElementType(n).getNamespaceURI()))
    throw new KettleStepException("Element " + n + " is not a simple XSD type; unsupported by Web Services step");
}

Type guard

boolean isSimpleXsdElement(ComplexType t, String name) { QName q = t.getElementType(name); return q != null && "http://www.w3.org/2001/XMLSchema".equals(q.getNamespaceURI()); }

Try / catch

try { dialog.loadOperation(op); } catch (KettleStepException e) { logError("Unsupported WSDL complex type: " + e.getMessage()); }

Prevention

When it happens

Trigger: 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).

Common situations: 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.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/9dd0cee894e6f7b3. Report an issue: GitHub.

Appendix: source

Thrown at ui/src/main/java/org/pentaho/di/ui/trans/steps/webservices/WebServiceDialog.java:268

      if ( parameters != null
        && parameters.getOperation() != null && parameters.getOperation().getInput() != null
        && parameters.getOperation().getInput().getName() != null ) {
        request = wsdlOperation.getParameters().getOperation().getInput().getName().toString();
      }
      wOperationRequest.setText( request );

      for ( int cpt = 0; cpt < wsdlOperation.getParameters().size(); cpt++ ) {
        WsdlOpParameter param = wsdlOperation.getParameters().get( cpt );
        if ( param.isArray() ) {
          // setInFieldArgumentName(param.getName().getLocalPart());
          if ( param.getItemXmlType() != null ) {
            ComplexType type = param.getItemComplexType();
            if ( type != null ) {
              for ( Iterator<String> itrType = type.getElementNames().iterator(); itrType.hasNext(); ) {
                String attributeName = itrType.next();
                QName attributeType = type.getElementType( attributeName );
                if ( !WebServiceMeta.XSD_NS_URI.equals( attributeType.getNamespaceURI() ) ) {
                  throw new KettleStepException( BaseMessages.getString(
                    PKG, "WebServiceDialog.ERROR0007.UnsupporteOperation.ComplexType" ) );
                }
              }
            }
            if ( ParameterMode.IN.equals( param.getMode() )
              || ParameterMode.INOUT.equals( param.getMode() )
              || ParameterMode.UNDEFINED.equals( param.getMode() ) ) {
              if ( inWsdlParamContainer != null ) {
                throw new KettleStepException( BaseMessages.getString(
                  PKG, "WebServiceDialog.ERROR0006.UnsupportedOperation.MultipleArrays" ) );
              } else {
                inWsdlParamContainer = new WsdlOpParameterContainer( param );
              }
            } else if ( ParameterMode.OUT.equals( param.getMode() )
              || ParameterMode.INOUT.equals( param.getMode() )
              || ParameterMode.UNDEFINED.equals( param.getMode() ) ) {
              if ( outWsdlParamContainer != null ) {
                throw new KettleStepException( BaseMessages.getString(

View on GitHub (pinned to f3058517a1)