{"record":{"id":"d16fb361fd56b119","repo":"pentaho/pentaho-kettle","slug":"http-log-nofield","errorCode":"HTTP.Log.NoField","errorMessage":"HTTP.Log.NoField","messagePattern":"HTTP\\.Log\\.NoField","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/http/HTTP.java","lineNumber":302,"sourceCode":"    meta = (HTTPMeta) smi;\n    data = (HTTPData) sdi;\n\n    Object[] r = getRow(); // Get row from input rowset & set row busy!\n    if ( r == null ) { // no more input to be expected...\n      setOutputDone();\n      return false;\n    }\n\n    if ( first ) {\n      data.outputRowMeta = getInputRowMeta().clone();\n      data.inputRowMeta = getInputRowMeta();\n      meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,\n        metaStore );\n\n      if ( meta.isUrlInField() ) {\n        if ( Utils.isEmpty( meta.getUrlField() ) ) {\n          logError( BaseMessages.getString( PKG, \"HTTP.Log.NoField\" ) );\n          throw new KettleException( BaseMessages.getString( PKG, \"HTTP.Log.NoField\" ) );\n        }\n\n        // cache the position of the field\n        if ( data.indexOfUrlField < 0 ) {\n          String realUrlfieldName = environmentSubstitute( meta.getUrlField() );\n          data.indexOfUrlField = getInputRowMeta().indexOfValue( realUrlfieldName );\n          if ( data.indexOfUrlField < 0 ) {\n            // The field is unreachable !\n            logError( BaseMessages.getString( PKG, \"HTTP.Log.ErrorFindingField\", realUrlfieldName ) );\n            throw new KettleException( BaseMessages.getString( PKG, \"HTTP.Exception.ErrorFindingField\",\n              realUrlfieldName ) );\n          }\n        }\n      } else {\n        data.realUrl = environmentSubstitute( meta.getUrl() );\n      }\n\n      // check for headers","sourceCodeStart":284,"sourceCodeEnd":320,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/http/HTTP.java#L284-L320","documentation":"The HTTP step is configured with 'URL in field?' enabled, but the name of the field that holds the URL is empty. processRow detects this before reading rows and throws KettleException 'HTTP.Log.NoField' after logging the same message.","triggerScenarios":"meta.isUrlInField() is true and Utils.isEmpty(meta.getUrlField()) — i.e., the 'URL field name' input box was left blank in the step configuration.","commonSituations":"User enabled 'Accept URL in field' but forgot to type the field name; importing a transformation where the field name got lost; renaming/copying steps between transformations without reconfiguring.","solutions":["Open the HTTP step dialog and fill in the 'URL field name' with the input stream field that contains the URL.","If the URL is static, disable 'URL in field' and set the URL directly.","Re-export/re-save the transformation to repair missing metadata."],"exampleFix":"// before (meta)\nmeta.setUrlInField( true );\nmeta.setUrlField( \"\" ); // left blank\n// after\nmeta.setUrlInField( true );\nmeta.setUrlField( \"url\" ); // existing input field containing the URL","handlingStrategy":"validation","validationCode":"if ( meta.isUrlInField() && Utils.isEmpty( meta.getUrlField() ) ) {\n  throw new IllegalStateException( \"URL field name is required when 'URL in field' is enabled\" );\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Whenever enabling 'URL in field', immediately set the field name","Use the step's Check/verify option before running the transformation","Document required input fields at the transformation level"],"tags":["configuration","kettle","missing-field"],"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"}