pentaho/pentaho-kettle · error · KettleException

WebServiceAvailable.Error.FilenameFieldMissing

Error message

WebServiceAvailable.Error.FilenameFieldMissing

What it means

The WebServiceAvailable step requires a URL field: the name of an input field containing the URL to check. processRow logs and throws this error when meta.getURLField() is null or empty, because the step cannot know where to read the URL from.

Solutions

  1. Open the WebServiceAvailable step dialog and set the 'URL field' to the input field containing the URL.
  2. Ensure the upstream step actually outputs a URL-typed field and pass it into this step.
  3. If the field was renamed, update the step setting to the new name.
  4. Inspect the step XML attribute (urlField) in the .ktr to confirm it is populated.

Example fix

// before (step XML)
<urlField/>
// after
<urlField>ws_url</urlField>
Defensive patterns

Strategy: validation

Validate before calling

if (meta.getURLField() == null || meta.getURLField().trim().isEmpty()) {
  throw new IllegalArgumentException("WebServiceAvailable requires a URL field");
}

Try / catch

try {
  checkSetup();
} catch (KettleException e) {
  logError("Configure URL field on WebServiceAvailable step", e);
  setErrors(1);
  stopAll();
}

Prevention

When it happens

Trigger: First row arrives, first-branch check executes Utils.isEmpty(meta.getURLField()) and it is true — no URL field configured on the step.

Common situations: Step added but the URL field dropdown left unset; field renamed upstream without updating the step; transformation copied where the field config was lost; loading from repository failed silently and left defaults empty.

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


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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/webserviceavailable/WebServiceAvailable.java:76

    if ( r == null ) { // no more input to be expected...

      setOutputDone();
      return false;
    }

    if ( first ) {
      first = false;
      // get the RowMeta
      data.previousRowMeta = getInputRowMeta().clone();
      data.NrPrevFields = data.previousRowMeta.size();
      data.outputRowMeta = data.previousRowMeta;
      meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,
        metaStore );

      // Check is URL field is provided
      if ( Utils.isEmpty( meta.getURLField() ) ) {
        logError( BaseMessages.getString( PKG, "WebServiceAvailable.Error.FilenameFieldMissing" ) );
        throw new KettleException( BaseMessages.getString( PKG, "WebServiceAvailable.Error.FilenameFieldMissing" ) );
      }

      // cache the position of the field
      data.indexOfURL = data.previousRowMeta.indexOfValue( meta.getURLField() );
      if ( data.indexOfURL < 0 ) {
        // The field is unreachable !
        logError( BaseMessages.getString( PKG, "WebServiceAvailable.Exception.CouldnotFindField" )
          + "[" + meta.getURLField() + "]" );
        throw new KettleException( BaseMessages.getString(
          PKG, "WebServiceAvailable.Exception.CouldnotFindField", meta.getURLField() ) );
      }
    } // End If first

    try {

      // get url
      String url = data.previousRowMeta.getString( r, data.indexOfURL );

View on GitHub (pinned to f3058517a1)