pentaho/pentaho-kettle · error · KettleStepException
ERROR0015
ERROR0015
Error message
WebServices.ERROR0015.OperationNotSelected
What it means
Thrown by the WebService step's processRow() when no SOAP operation name is selected in the step meta. The URL may be valid, but the step needs to know which operation to invoke against the WSDL, so an empty operation aborts processing with a KettleStepException naming the step.
Solutions
- Open the WebService step dialog, reload the WSDL, and select an operation from the operation list
- Verify the WSDL URL is reachable so the operation list can be populated
- If the operation is set via variable/parameter, ensure it is defined at execution time
Defensive patterns
Strategy: validation
Validate before calling
WebServiceMeta meta = (WebServiceMeta) stepMeta.getStepMetaInterface();
if ( meta.getOperationName() == null || meta.getOperationName().isEmpty() ) {
throw new IllegalArgumentException( "WebService step has no operation selected; reload WSDL and pick one" );
} Try / catch
try {
trans.execute( null );
} catch ( KettleException e ) {
if ( e.getMessage() != null && e.getMessage().contains( "ERROR0015" ) ) {
logError( "WebService step missing operation; open dialog and select operation" );
}
} Prevention
- After setting the URL, always reload the WSDL and select an operation
- Re-verify operation selection whenever the WSDL changes upstream
- Avoid hand-editing ktr XML for this step
- Use transformation metadata validation jobs before production runs
When it happens
Trigger: meta.getOperationName() is null/empty at run time — the operation was never chosen in the step dialog, or the WSDL was reloaded/changed so the previously selected operation name no longer resolves and meta holds an empty value.
Common situations: Copying steps between transformations, WSDL updated upstream so saved operation is stale, loading a transformation authored by a different Pentaho version where operation metadata wasn't persisted, or manual XML editing of the ktr.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- ERROR0014
- WebServices.Exception.OperarationNotSupported
- AccessInput.Exception.CouldnotFindField
- AccessInput.Log.NoField
- AddSequence.Exception.NoSpecifiedMethod
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/a2951afa58751659.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/webservices/WebService.java:155
} catch ( ParseException e ) {
logError( "Unexpected error in WebService constructor: ", e );
setErrors( 1 );
stopAll();
}
}
public boolean processRow( StepMetaInterface metaInterface, StepDataInterface dataInterface ) throws KettleException {
meta = (WebServiceMeta) metaInterface;
// if a URL is not specified, throw an exception
if ( Utils.isEmpty( meta.getUrl() ) ) {
throw new KettleStepException( BaseMessages.getString(
PKG, "WebServices.ERROR0014.urlNotSpecified", getStepname() ) );
}
// if an operation is not specified, throw an exception
if ( Utils.isEmpty( meta.getOperationName() ) ) {
throw new KettleStepException( BaseMessages.getString(
PKG, "WebServices.ERROR0015.OperationNotSelected", getStepname() ) );
}
data = (WebServiceData) dataInterface;
Object[] vCurrentRow = getRow();
if ( first ) {
first = false;
if ( getInputRowMeta() != null ) {
data.outputRowMeta = getInputRowMeta().clone();
} else {
data.outputRowMeta = new RowMeta();
}
meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,
metaStore );
defineIndexList( getInputRowMeta(), vCurrentRow );View on GitHub (pinned to f3058517a1)