pentaho/pentaho-kettle · error · KettleStepException

Could not retrieve WSDL Operator for operation name: +…

Error message

Could not retrieve WSDL Operator for operation name:  + operationName

What it means

getOperation() wraps failures that occur while building a WsdlOperation from the WSDL binding into a KettleStepException (after logging "Could not retrieve WSDL Operator"). It means the named operation exists in the lookup but its binding/schema parts could not be resolved, so the step cannot proceed with that operation.

Solutions

  1. Verify operationName exactly matches an operation in the WSDL binding for the chosen port
  2. Inspect the wrapped KettleException (kse) for the part/type that failed to resolve
  3. Ensure all imported XSDs of the WSDL are reachable so WsdlTypes is fully populated
  4. Simplify or re-export the WSDL (e.g. use document/literal wrapped style) if the style is unsupported

Example fix

// before
WsdlOperation op = wsdl.getOperation("SubmitOrder"); // actual name is submitOrder
// after
WsdlOperation op = wsdl.getOperation("submitOrder"); // exact binding operation name
Defensive patterns

Strategy: try-catch

Validate before calling

if (wsdl.getOperations().stream().noneMatch(o -> o.getOperationName().equals(operationName)))
  throw new IllegalArgumentException("Operation not in binding: " + operationName);

Try / catch

try {
  WsdlOperation op = wsdl.getOperation(operationName);
} catch (KettleStepException e) {
  logError("Cannot build operation " + operationName + ": " + e.getCause());
  throw e;
}

Prevention

When it happens

Trigger: Calling Wsdl.getOperation(operationName) (e.g. via operation()) when constructing the WsdlOperation throws KettleException — typically because the operation's binding, input/output message parts, or schema types in _wsdlTypes cannot be resolved.

Common situations: Operation name not present in the binding (typo or wrong binding selected); RPC/encoded or document styles the resolver can't map; schemas with unsupported/complex types missing from _wsdlTypes; WSDL imports partially failed so type info is incomplete.

Related errors


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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/webservices/wsdl/Wsdl.java:208

  public WsdlOperation getOperation( String operationName ) throws KettleStepException {

    // is the operation in the cache?
    if ( _operationCache.containsKey( operationName ) ) {
      return _operationCache.get( operationName );
    }

    Binding b = _port.getBinding();
    PortType pt = b.getPortType();
    Operation op = pt.getOperation( operationName, null, null );
    if ( op != null ) {
      try {
        WsdlOperation wop = new WsdlOperation( b, op, _wsdlTypes );
        // cache the operation
        _operationCache.put( operationName, wop );
        return wop;
      } catch ( KettleException kse ) {
        LogChannel.GENERAL.logError( "Could not retrieve WSDL Operator for operation name: " + operationName );
        throw new KettleStepException(
          "Could not retrieve WSDL Operator for operation name: " + operationName, kse );
      }
    }
    return null;
  }

  /**
   * Get a list of all operations defined in this WSDL.
   *
   * @return List of WsdlOperations.
   */
  @SuppressWarnings( "unchecked" )
  public List<WsdlOperation> getOperations() throws KettleStepException {

    List<WsdlOperation> opList = new ArrayList<WsdlOperation>();
    PortType pt = _port.getBinding().getPortType();

    List<Operation> operations = pt.getOperations();

View on GitHub (pinned to f3058517a1)