pentaho/pentaho-kettle · error · KettleException
Erreur getting fields from module [
Error message
Erreur getting fields from module [
What it means
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).
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.
Example fix
// before throw new KettleException( "Erreur getting fields from module [" + url + "]!", e ); // after throw new KettleException( "Error getting fields from module [" + selectedModule + "] on [" + url + "]", e );
Defensive patterns
Strategy: try-catch
Validate before calling
// before connect
if ( url == null || !url.matches("https?://.+") ) { throw new KettleException("Bad Salesforce URL: " + url); }
connection.setTimeOut( Math.max(realTimeOut, 60000) ); Try / catch
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; } Prevention
- 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.
When it happens
Trigger: 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.
Common situations: Wrong instance URL (e.g. test.salesforce.com vs login.salesforce.com); org object renamed; SSO/password expired; slow network hitting the configured timeout.
Related errors
- Error getting fields from module [
- SalesforceConnection.Exception.Query
- SalesforceInput.Error.GettingModules
- SalesforceInput.ErrorGettingObject
- SalesforceInputDialog.ObjectNotQueryable
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/03f6622bee3b7970.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/salesforce/core/src/main/java/org/pentaho/di/ui/trans/steps/salesforceupdate/SalesforceUpdateDialog.java:788
getInfo( meta );
SalesforceConnection connection = null;
String url = transMeta.environmentSubstitute( meta.getTargetURL() );
try {
String selectedModule = transMeta.environmentSubstitute( meta.getModule() );
// Define a new Salesforce connection
connection =
new SalesforceConnection( log, url, transMeta.environmentSubstitute( meta.getUsername() ),
Utils.resolvePassword( transMeta, meta.getPassword() ) );
int realTimeOut = Const.toInt( transMeta.environmentSubstitute( meta.getTimeout() ), 0 );
connection.setTimeOut( realTimeOut );
// connect to Salesforce
connection.connect();
// return fieldsname for the module
return connection.getFields( selectedModule );
} catch ( Exception e ) {
throw new KettleException( "Erreur getting fields from module [" + url + "]!", e );
} finally {
if ( connection != null ) {
try {
connection.close();
} catch ( Exception e ) { /* Ignore */
}
}
}
}
/**
* Reads in the fields from the previous steps and from the ONE next step and opens an EnterMappingDialog with this
* information. After the user did the mapping, those information is put into the Select/Rename table.
*/
private void generateMappings() {
if ( !checkInput() ) {
return;View on GitHub (pinned to f3058517a1)