Provides create, update, upsert, query and get integrations for Salesforce via it's REST API (see https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/).
126.96.36.199 Updated to API v45, added bulk update and upsert capabilities, misc other enhancements
188.8.131.52 Fixed bug where expired session was not being re-acquired
184.108.40.206 Added the Salesforce File node
220.127.116.11 Modified Create operations to use bulk API which permits 200 items to be inserted in a single call, added support for GetNextRecords to retrieve next page of results for large queries
18.104.22.168 Modified error handling so that a valid document is returned in the
Response property in case of failure
Create action to use
/composite/sobjects API to create up to 200 items in a single call. Added
QueryAll supported so that deleted items can be retrieved, tidied error handling and added
HadError output property for simpler validation of full/partial success
22.214.171.124 Added support for
Delete action. Also Added support to emit JSON.
Update action to use SObjects PATCH. Supports 200 items per call.
Type: Connection Input
An optional URL for the Salesforce instance. This property should only be necessary for Sandbox environments.
The App Consumer Key (See Creating a Connection below)
The App Consumer Secret (See Creating a Connection below)
The Salesforce user username.
The Salesforce user password.
The Salesforce account security token (See Creating a Connection below)
By default, the records in the
Request property will be interleaved in to the records in the
Response property which makes it much easier to correlate records in batch requests. If this setting is turned on, interleaving is skipped - consider using this if you don't need to correlate request records with response records and have a large volume of requests to make (there is a small performance gain if this setting is enabled).
Specifies how request and response data should be encoded
The Connection Property
Type: List Input
Create - creates one or more records
Update - updates one or more records keyed on the
Get - retrieves the record specified by the
Id field in the
Query - returns a list of all records matching the specified SQL filter
Upsert - updates or creates one or more records. If
Id or the field name specified in
ExternalIdField is present, an update is performed otherwise a create is performed
The Action to perform against the object in
GetNextRecords - when not all results are returned by a call using the
Query action, this action can be used to retrieve the next page of results.
QueryAll - returns all records including those that have been deleted (use
IsDeleted = true in the query. This Action assists in sync workflows that need to include sync of deletions.
Delete - deletes the records specified in
Type: String Input
The name of the object to be acted upon.
Type: String Input
Upsert , records can be updated by keying them on the
Id field or, if a value is provided for
ExternalIdField , by keying them on that field instead.
Type: Boolean Output
When true, indicates that either a complete or partial failure occurred. In the case of a write Action, this indicates that at least 1 record out of a batch failed to write.
Type: Xml Output
The response returned by the Salesforce API
This Nodes uses the following API's:
Create and Update operations are serviced via Composite SObject Collections (supports 200 items per call)
Upsert is serviced via Composite Batch (supports 25 items per call)
Creating a Connection
Register an app in your Salesforce account
After signing in to Salesforce, click the Setup cog (top, right of screen), then click Setup.
In the menu on the left, click Apps, then click App Manager.
Click New Connected App.
Provide a name for your app and API name (eg. Flowgear for both) as well as a contact email and name.
Tick the Enable OAuth Settings checkbox.
Provide a secure URL (eg. your website) in Callback URL (eg. https://yourcompany.com).
Under Selected OAuth Scopes, click Full access (full) then click the Add button.
Click Save, then Continue.
In the page that loads next, the value in Consumer Key should be copied and pasted into the ConsumerKey property in your Flowgear Salesforce Connection while the Consumer Secret (click Click to reveal) should be used in the ConsumerSecret property.
Obtain a security token for your Salesforce account
After signing in to Salesforce, click the Person Icon (top, right of screen), then click Settings.
In the menu on the left, click Reset my Security Token under My Personal Information.
Click the Reset Security Token button to have a new token emailed to you (note that this will invalidate any previously used tokens).
In the email you receive, copy the security token into the SecurityToken property in your Flowgear Salesforce Connection.
Using a Sandbox Account
If you are using a Sandbox Salesforce account, you need to set the URL property of the Connection as https://test.salesforce.com
The account should be created from the developer portal instead of a normal signup.
You can use the GetNextRecords action to retrieve the next page of results for a Query when not all results were returned. Load the appropriate NodeSample and a custom property called
nextRecordsUrl will be added to the Node. Connect a Data Flow Connector from the
Result Property of the Salesforce Node that runs the inital query to the
nextRecordsUrl Property. Use a Data Mapping Expression to obtain the
nextRecordsUrl element of the
Result Property. For an example of query continuation, see this parent and associated child workflow.
Query Object Relationships
Salesforce queries using the SOQL language can reference multiple objects so long as those objects have a defined relationship. This allows you to query multiple different objects within a single API call. E.g, you can query both Orders and OrderItems with the same call.
This can help reduce the number of API calls needed to successfully establish a complete dataset. See example, https://flowgear.me/s/1sl42HF