Salesforce Reader/Writer

The Salesforce Reader/Writer plug-in enables FME to create, read, update, and delete object records from Salesforce.

Overview

Salesforce is a cloud-based customer relationship management (CRM) platform. Data stored on Salesforce may be accessed through various APIs.

The Salesforce Reader/Writer can be used to download and transform information stored in Salesforce, such as accounts, cases, leads, and sales.

Salesforce objects do not support geometry.

Terminology in this Chapter

Term

Definition or FME Representation

Salesforce object feature type

Feature type names must always match an existing Salesforce object.

Salesforce record feature
Salesforce field user attribute

Accessing Salesforce

Accessing Salesforce using the Salesforce Reader/Writer requires Salesforce Enterprise and an account with the “API Enabled” permission.

Contact your Salesforce administrator to obtain this permission. If Salesforce is being accessed outside of a trusted network, a security token is also required. The security token is provided by Salesforce via e-mail whenever the account’s password changes, and can also be reset from the user profile.

Salesforce may only be accessed over HTTPS. If you are connecting via a proxy server, ensure that it supports HTTPS.

Note: The Salesforce Reader/Writer will warn and ignore certain types of attributes that are not supported by the Bulk API. These include base64 fields, and Compound Fields such as fields of type address. For information about Compound Fields, see https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/compound_fields.htm.

Two-Factor Authentication

Since FME relies on the Salesforce API, there is no way to bypass two-factor authentication in a workspace. Although we do not recommend bypassing security features, your Salesforce Administrator may be able to set up exclusions for new messages by white-listing the client IP address (so that two-factor authentication is not needed).

Another possible solution is by using the SaleforceConnector in your workspace because it uses an authorization mechanism that does not rely on the API.

Reader Overview

Salesforce uses a variant of SQL called the Salesforce Object Query Language (SOQL). Wildcards, multi-table selects, and arbitrary joins are not supported.

Refer to Salesforce’s SOQL Reference at for information on how to construct SOQL queries. Refer to Salesforce’s Bulk Query Details for information on SOQL restrictions that apply to the Salesforce reader.

Newline characters in field values are stripped out by the Salesforce reader.

Salesforce objects and records do not have geometry. All incoming features will not have geometry.

Salesforce fields of type base64 and address are not supported. Refer to User Attributes for details.

To reduce bandwidth requirements and processing time, remove unused user attributes from the Salesforce reader’s feature types.

Writer Overview

The Salesforce writer uses the Salesforce Bulk API to write data to Salesforce. It handles Job creation, Batch creation, and status monitoring. The Salesforce writer cannot define a new Salesforce object: it can only create, update, and delete records for an existing object.

The feature types of Salesforce writers must match an existing Salesforce object name. The Salesforce writer will compare the attributes on features to be written with the schema of the target object. Only attributes on the feature that match the name of a field on the Salesforce object schema will be written.

As Salesforce objects do not support geometry, all geometry on features will be ignored.

Salesforce fields of type base64 and address are not supported. Refer to User Attributes for details.

The Salesforce Bulk API is not transactional. Records that fail to be written will not stop other records from being written, and Salesforce does not consider a Batch to have failed even if all the records in it had failed. Furthermore, a Batch that ended in the failure state does not necessarily mean that all the records within it were not written. As such, translations that fail to write some or all features to Salesforce are still considered as successful translations by the Salesforce writer. The Salesforce writer will always retrieve the error messages for all failed records and Batches and carry them over to the translation log. To prevent the creation of duplicate records, use the UPSERT writer mode whenever possible.

The maximum size of a Salesforce write Batch is 10,000 rows or 10MB, whichever occurs first. The Salesforce writer will not proceed to create the Batch if it detects that the limits have been exceeded. At this time, the Salesforce writer does not automatically break up writes that exceed these limits into multiple batches. Please ensure that the total size of the data being written per feature type in a single translation does not exceed Salesforce’s batch limit.

Permissible operations may differ across Salesforce objects and fields. For instance, some objects may allow creation, but not deletion. The range of permissible operations depends on the Salesforce user’s permissions, as well as the properties of the object itself. For more information, refer to Salesforce’s Standard Objects documentation at http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_objects_list.htm.

Date, Time, and DateTime Attribute Formatting

If FME can parse the original Date, Time, or DateTime value, the Salesforce Writer will automatically convert the value to the format that Salesforce requires.

If the parsed DateTime does not have a time zone, then UTC is assumed. If FME cannot parse the value, it will be passed through as-is to Salesforce.