{"record":{"id":"03f6622bee3b7970","repo":"pentaho/pentaho-kettle","slug":"erreur-getting-fields-from-module","errorCode":null,"errorMessage":"Erreur getting fields from module [","messagePattern":"Erreur getting fields from module \\[","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/salesforce/core/src/main/java/org/pentaho/di/ui/trans/steps/salesforceupdate/SalesforceUpdateDialog.java","lineNumber":788,"sourceCode":"    getInfo( meta );\n\n    SalesforceConnection connection = null;\n    String url = transMeta.environmentSubstitute( meta.getTargetURL() );\n    try {\n      String selectedModule = transMeta.environmentSubstitute( meta.getModule() );\n\n      // Define a new Salesforce connection\n      connection =\n        new SalesforceConnection( log, url, transMeta.environmentSubstitute( meta.getUsername() ),\n          Utils.resolvePassword( transMeta, meta.getPassword() ) );\n      int realTimeOut = Const.toInt( transMeta.environmentSubstitute( meta.getTimeout() ), 0 );\n      connection.setTimeOut( realTimeOut );\n      // connect to Salesforce\n      connection.connect();\n      // return fieldsname for the module\n      return connection.getFields( selectedModule );\n    } catch ( Exception e ) {\n      throw new KettleException( \"Erreur getting fields from module [\" + url + \"]!\", e );\n    } finally {\n      if ( connection != null ) {\n        try {\n          connection.close();\n        } catch ( Exception e ) { /* Ignore */\n        }\n      }\n    }\n  }\n\n  /**\n   * Reads in the fields from the previous steps and from the ONE next step and opens an EnterMappingDialog with this\n   * information. After the user did the mapping, those information is put into the Select/Rename table.\n   */\n  private void generateMappings() {\n\n    if ( !checkInput() ) {\n      return;","sourceCodeStart":770,"sourceCodeEnd":806,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/salesforce/core/src/main/java/org/pentaho/di/ui/trans/steps/salesforceupdate/SalesforceUpdateDialog.java#L770-L806","documentation":"Thrown by SalesforceUpdateDialog when retrieving fields for a module fails. The message text interpolates the URL variable (not the module name — a known message bug) and wraps the underlying exception from connecting to Salesforce or calling getFields(selectedModule).","triggerScenarios":"getFields() fails because connection.connect() failed (bad URL/credentials), the module is missing or renamed in the org, the Salesforce call timed out (realTimeOut too low), or the org returns an API fault.","commonSituations":"Wrong instance URL (e.g. test.salesforce.com vs login.salesforce.com); org object renamed; SSO/password expired; slow network hitting the configured timeout.","solutions":["Read the wrapped cause to distinguish connection vs metadata errors; verify URL, username, password in the dialog.","Re-pick the module from the refreshed list to ensure it exists in the target org.","Increase the timeout value in the step settings.","Validate connectivity to the Salesforce endpoint (proxy/firewall/TLS).","Confirm the integration user has API enabled and read access to the object fields."],"exampleFix":"// before\nthrow new KettleException( \"Erreur getting fields from module [\" + url + \"]!\", e );\n// after\nthrow new KettleException( \"Error getting fields from module [\" + selectedModule + \"] on [\" + url + \"]\", e );","handlingStrategy":"try-catch","validationCode":"// before connect\nif ( url == null || !url.matches(\"https?://.+\") ) { throw new KettleException(\"Bad Salesforce URL: \" + url); }\nconnection.setTimeOut( Math.max(realTimeOut, 60000) );","typeGuard":null,"tryCatchPattern":"try { return connection.getFields(selectedModule); } catch ( Exception e ) { Throwable cause = e.getCause(); if ( cause instanceof org.apache.axis.AxisFault ) { /* auth or endpoint issue */ } throw e; }","preventionTips":["Increase timeout for slow networks.","Refresh the module list after any Salesforce schema change.","Validate the login URL (login vs test endpoint for sandbox).","Monitor Salesforce password expiry and API enablement for the integration user."],"tags":["kettle","salesforce","api","metadata","typo"],"backgroundTag":"api-error-response","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"}