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
- Verify operationName exactly matches an operation in the WSDL binding for the chosen port
- Inspect the wrapped KettleException (kse) for the part/type that failed to resolve
- Ensure all imported XSDs of the WSDL are reachable so WsdlTypes is fully populated
- 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
- Use the exact operation name from the WSDL <binding> section
- Ensure all schema imports resolve so WsdlTypes is complete before getOperation
- Prefer document/literal wrapped WSDLs, which the resolver handles reliably
- Inspect the nested KettleException cause to identify unresolvable parts/types early
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
- Can not find operation: + operationName
- Cannot find WSDL file: + _wsdlName
- Could not load WSDL file: + e.getMessage()
- invalid element: + e.getNodeName()
- Invalid part count for fault!!
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)