pentaho/pentaho-kettle · error · KettleStepException
WebServices.ERROR0010.OutputParsingError
WebServices.ERROR0010.OutputParsingError
Error message
WebServices.ERROR0010.OutputParsingError
What it means
KettleStepException wrapping WebServices.ERROR0010.OutputParsingError, thrown by WebService.processRows when the StAX parsing of the SOAP response XML fails for any reason. The response content is included in the message. This is the catch-all for XML stream errors while extracting output fields.
Solutions
- Inspect the response text embedded in the exception message — determine what the server actually returned.
- Check for a SOAP fault; fix the request (auth, parameters) if the server rejected it.
- Verify the step's output field names and 'ignore namespace prefix' setting against the real response XML.
- Confirm the response encoding matches what the step assumes.
Example fix
// before // field mapped as "result" but response uses <ns:return> // after // set field name to "return" or enable 'ignore namespace prefix' so mapping matches the response element
Defensive patterns
Strategy: validation
Validate before calling
// Sniff the raw response before parsing; reject non-SOAP bodies:
String body = readResponseBody(response);
if (!body.contains("<Envelope") && !body.contains("<SOAP-ENV")) {
throw new IllegalStateException("Non-SOAP response: " + body.substring(0, Math.min(200, body.length())));
} Try / catch
try {
// run transformation
} catch (KettleStepException e) {
if (e.getMessage() != null && e.getMessage().contains("OutputParsingError")) {
// message contains the raw response; inspect it for faults/HTML error pages
}
} Prevention
- Verify output field mappings against a captured real response XML.
- Set the namespace-prefix handling option to match the service.
- Check for SOAP faults in the response before assuming success.
When it happens
Trigger: requestSOAP -> processRows: the XMLStreamReader throws on malformed or unexpected response XML — HTML error page instead of SOAP envelope, namespace/element mismatch with configured field mappings, or invalid characters in the payload.
Common situations: Server returns a SOAP fault or login page (200 status but non-SOAP body); configured output field names/namespace prefixes don't match the actual response; service returns data in a different structure than expected.
Related errors
- AnalyticQueryMeta.Exception.UnableToLoadStepInfoFromXML
- Error_0001
- ERROR_0001
- Error loading transformation executor details from XML
- GetXMLData.Log.UnableCreateDocument (localized message)
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/63387413d68315a3.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/webservices/WebService.java:765
// Prevent empty rows from being sent out.
//
if ( fieldsFound > 0 ) {
// Send a row in a series of rows on its way.
//
putRow( data.outputRowMeta, outputRowData );
}
}
}
}
}
if ( singleRow && fieldsFound > 0 ) {
// Send the single row on its way.
//
putRow( data.outputRowMeta, outputRowData );
}
} catch ( Exception e ) {
throw new KettleStepException( BaseMessages.getString(
PKG, "WebServices.ERROR0010.OutputParsingError", response.toString() ), e );
}
}
private Object[] createNewRow( Object[] inputRowData ) {
return inputRowData == null ? RowDataUtil.allocateRowData( data.outputRowMeta.size() ) : RowDataUtil
.createResizedCopy( inputRowData, data.outputRowMeta.size() );
}
private void compatibleProcessRows( InputStream anXml, Object[] rowData, RowMetaInterface rowMeta,
boolean ignoreNamespacePrefix, String encoding ) throws KettleException {
// First we should get the complete string
// The problem is that the string can contain XML or any other format such as HTML saying the service is no longer
// available.
// We're talking about a WEB service here.
// As such, to keep the original parsing scheme, we first read the content.
// Then we create an input stream from the content again.View on GitHub (pinned to f3058517a1)