{"record":{"id":"ce2f5f71322e0c2a","repo":"pentaho/pentaho-kettle","slug":"rest-log-nofield","errorCode":"Rest.Log.NoField","errorMessage":"Rest.Log.NoField","messagePattern":"Rest\\.Log\\.NoField","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/rest/core/src/main/java/org/pentaho/di/trans/steps/rest/Rest.java","lineNumber":476,"sourceCode":"        logError( Const.getStackTracker( e ) );\n        stopAll();\n        setOutputDone(); // signal end to receiver(s)\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * Calculate URL\n   *\n   * @throws KettleException\n   */\n  private void calcURL() throws KettleException {\n    if ( meta.isUrlInField() ) {\n      if ( Utils.isEmpty( meta.getUrlField() ) ) {\n        logError( BaseMessages.getString( PKG, \"Rest.Log.NoField\" ) );\n        throw new KettleException( BaseMessages.getString( PKG, \"Rest.Log.NoField\" ) );\n      }\n      // cache the position of the field\n      if ( data.indexOfUrlField < 0 ) {\n        String realUrlfieldName = environmentSubstitute( meta.getUrlField() );\n        data.indexOfUrlField = data.inputRowMeta.indexOfValue( realUrlfieldName );\n        if ( data.indexOfUrlField < 0 ) {\n          // The field is unreachable !\n          throw new KettleException(\n            BaseMessages.getString( PKG, \"Rest.Exception.ErrorFindingField\", realUrlfieldName ) );\n        }\n      }\n    } else {\n      // Static URL\n      data.realUrl = environmentSubstitute( meta.getUrl() );\n    }\n  }\n\n  /**","sourceCodeStart":458,"sourceCodeEnd":494,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/rest/core/src/main/java/org/pentaho/di/trans/steps/rest/Rest.java#L458-L494","documentation":"Raised in calcURL (from processRow) when the step is configured with 'URL is in a field?' but the 'URL field name' setting is empty. It is logged via logError('URL field name is missing!') and then rethrown as a KettleException, aborting the transformation.","triggerScenarios":"meta.isUrlInField() is true and meta.getUrlField() is null/empty (Utils.isEmpty) when calcURL runs during processRow.","commonSituations":"User checked 'URL is in a field' in the REST step dialog but forgot to select the incoming field that holds the URL; step metadata migrated from a static-URL configuration left the dynamic option enabled with no field set.","solutions":["Open the REST step dialog, keep 'URL is in a field?' checked, and select the field that contains the URL from the incoming stream.","If the URL is actually static, uncheck 'URL is in a field?' and fill the URL field directly.","Run the step's metadata check (validate transformation) before execution to catch the missing field earlier."],"exampleFix":"// before (step settings)\nurl_in_field=true; url_field=\"\"            // throws Rest.Log.NoField\n// after\nurl_in_field=true; url_field=\"request_url\"  // field must exist in the incoming row stream","handlingStrategy":"validation","validationCode":"// Before execution, check the step metadata\nif (restMeta.isUrlInField() && (restMeta.getUrlField() == null || restMeta.getUrlField().trim().isEmpty())) {\n  throw new IllegalStateException(\"REST step: URL field name required when 'URL is in a field' is enabled\");\n}","typeGuard":null,"tryCatchPattern":"try { processRow(); } catch (KettleException e) {\n  if (e.getMessage().contains(\"URL field name is missing\")) { /* fix step metadata */ }\n  throw e;\n}","preventionTips":["Whenever you enable 'URL is in a field', immediately select the field in the same dialog session.","Run transformation validation (F9 / verify) before scheduling.","Avoid hand-editing step XML; use the dialog so dependent settings stay consistent."],"tags":["configuration","url","missing-field","kettle"],"backgroundTag":"missing-required-config-field","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}