Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

In this article

Table of Contents
maxLevel2
excludeOlder Versions|Additional Resources|Related Links|Related Information

Overview

The Salesforce Upsert Snap is a Write-type Snap that enables you to upsert (that is, a simple update or insert procedure) object records in Salesforce in Bulk API or REST API mode. This Snap in Salesforce Bulk API mode submits batch jobs and sends the batch job information to the output view for the Salesforce Poller Snap. More specifically, the Salesforce Upsert Snap should not be thought of as the combination of the Salesforce Update and Salesforce Create Snaps.

Info

The Salesforce Upsert Snap operates exclusively on the External ID field, not on the Salesforce-generated record ID. If a record for a given external ID exists, the record is updated with the input record data. If no record exists for a given external ID, a new record is created with the input record data. The external ID is used as the unique record identifier from an external system and can be useful when you want to synchronize an external system to Salesforce.com

To create a new external ID field for an Account object:

  1. Log in to your Salesforce account.
  2. Go to App Setup > Customize > Account > Fields > New. 
  3. Follow the instructions and create a new custom field. 
Note
You must select the External ID checkbox in Salesforce. The Snap in REST API mode upserts Salesforce objects and returns results synchronously without the need for the Salesforce Poller Snap.


Image RemovedImage Added

Prerequisites

None.

Limitations and Known Issues

This Snap performs batch processing, that is, a batch of input documents are processed for each HTTP request sent to Salesforce. Values of all the expression-enabled fields must remain constant during the Snap execution or validation. Hence, all expression fields can support Pipeline parameters only when they are expression-enabled. The input data parameters are not supported for expression fields, for example, $serviceVersion.

Support for Ultra Pipelines

Works in Ultra Pipelines.

Snap Views

View TypeView FormatNumber of ViewsExamples of Upstream/Downstream SnapsDescription
InputDocument
  • Min:1
  • Max:1
  • Mapper 
  • Copy
Each document contains Map data for an external ID and records of field and value pairs.
OutputDocument
  • Min:0
  • Max:1
  • Poller
  • File Writer
Each document contains Map data that includes a Job ID, a Batch ID, a URL, and an array of records if it is in Bulk API mode. If it is executed in REST API mode, each document contains input data and a key-value pair of created:false for each successfully-updated record or created:true for each successfully-created record. 
If the Snap is executed in Bulk API mode and a new record is created, the ID field and its value is included in the output data. However, if the Snap is executed in REST API and a new record is created, the ID field is not included in the output data.
Error

Document

  • Min: 1

  • Max: 1

N/A

The error view contains error, reason, resolution and stack trace. For more information, see Handling Errors with an Error Pipeline.

Snap Settings

FieldField TypeDescription

Label*


String

Specify a unique name for the Snap. You can modify this to be more specific, especially if you have more than one of the same Snap in your Pipeline.

Default Value: Salesforce Upsert
ExampleSalesforce Upsert

Service Version*


String/Expression/Suggestion

Multiexcerpt include macro
nameME_Service_Version
pageSalesforce Batch Create

Batch Size*

Integer/Expression

Specify the number of records to be processed in a batch.

Info

In Bulk API, this value is allowed to be from 1 through 10,000. Each input document forms one Salesforce record to be upserted. The Snap stores records in memory until the number of records reaches the batch size and sends the request to SFDC in a single batch. Increasing the batch size increases the amount of memory used during the data load. Decreasing the batch size increases the number of API calls against Salesforce.

In REST API, the Snap can upsert only one record per each request regardless of the value you specify in the Batch Size field.

Default Value: 200
Example: 1000

Object Type*
  

String/Expression/Suggestion

Define the name of the Salesforce object, such as Account.

Default ValueAccount
ExampleAccount

Note

Validation always uses the REST API. 


Salesforce API


Dropdown list

Set the Salesforce API mode to Bulk API or REST API. The Snap in REST API mode creates one record at a time and returns the results at the output. REST API can be simpler and faster if the number of records to be created is small (a few).

Default Value: Bulk API
Example: REST API

Null Setting with Bulk APICheckbox

Select this checkbox to set the nullable fields to null in the Salesforce object if there are null values in the input document. This field works only if you select Bulk API mode in the Salesforce API field.

Default Value: Deselected
Example: Selected

External ID Field*



String/Expression/Suggestion

Specify the external ID field that represents the unique externalized key of the object.

Info

The external ID determines the locator of the object on the Salesforce object instead of using the ID field on the object. 


Note
You must select the checkbox, External ID: Set this field as the unique record identifier from an external system, when you create an external ID field in the Salesforce portal.

Default Value:  [None]
Exampleemployee_number__c

Bulk Content Type

Dropdown list

Select the content type to be used in Bulk API. Available options are:

  • XML: Data in XML format.

  • CSV: Data in CSV format.

Default Value: XML
Example: CSV

Related Object



String/Expression/Suggestion

Enter or select a related parent object. The value in this field does not affect the Snap operation on records in Salesforce. It is provided for the property suggest and the input schema suggest only. 

Default Value: [None]
Example: Account

Related External ID


String/Expression/Suggestion

Enter or select an external ID of the selected related parent object. The value in this field does not affect the Snap operation on records in Salesforce. It is provided for the property suggest and the input schema suggest only. 

Default Value: [None]
Example: AccountNumber__c

Bulk API Serial mode


Checkbox

Select this checkbox to enable the Bulk API to run in Serial mode.
Deselect this checkbox to enable the Bulk API to run in Parallel mode. This is only relevant to BULK API. 

Default Value: Not selected (Parallel mode)

Standardize Error Output

Checkbox

Select this checkbox to enable the Snap to produce error output with Reason, Original, Stack trace and Resolution.
If you deselect this checkbox, the output view displays the input document along with the error message.

Default Value:  Not selected

Pass Through


Checkbox

Select this checkbox to pass the input document to the output view under the key 'original'.

If you deselect this checkbox, the input document is not passed and there is no 'original' key in the output document.

Default Value:  Selected

Info

For Bulk APIs, if you select this checkbox and if the Batch size is equal to 1, the input document is passed to the output view under the key original. If the Batch size is greater than 1, the list of input documents is displayed under Records and the input document is not included under the original key.


Snap Execution

Dropdown list

Multiexcerpt include macro
nameExecution_Detail_Write
pageSOAP Execute


Note

If you want to get the resulting status for each record to be upserted in Bulk API mode, you must connect a Salesforce Poller Snap after the Salesforce Upsert Snap.

Insert excerpt
Salesforce Batch Create
Salesforce Batch Create
nopaneltrue

Examples

Upserting Department Record and Associating with an Employee Record

The following example Pipeline demonstrates how to upsert the department record in CSV format and associate that record with an employee record. We also pass null value for a particular field to demonstrate that null values in CSV file format type does not hinder the Pipeline execution.

First, we configure the Sequence Snap to generate a sample set of Department data.


Then, we configure the Mapper Snap to prepare (transform) and pass the department data (input) to the Salesforce Upsert Snap. Note that we pass null value for location, but that does not hinder the Pipeline execution.

Upon validation, the Snap passes the following data to the downstream Salesforce Upsert Snap. Note the null value under location column.

Then, we configure the Salesforce Upsert Snap to upsert the department record into Salesforce. We use the Bulk Content Type as CSV and the API as Bulk API. Note that we configure the Related External ID field to associate the department record with the employee record.

The Snap passes the following batch information to the downstream Salesforce Poller Snap.

We then configure the Salesforce Poller Snap to poll the status of the batch job submitted to Salesforce application from the Salesforce Upsert Snap. Upon validation, the Snap creates the record for department and associates it with the employee record.

Salesforce Poller Snap Configuration

Salesforce Poller Snap Output

Download this Pipeline.

Upserting a new record in a Salesforce object

The following example Pipeline demonstrates how to upsert a new record in a Salesforce object.

First, we configure the Mapper Snap to map the Object record details (that need to be upserted using External ID) to the input view of Salesforce Upsert Snap.

Then, we configure the Salesforce Upsert Snap to update the record (using its External ID) in the Account object.


Upon successful execution, we can see the following output in the Snap's preview.

Downloads

Multiexcerpt include macro
namedownload_instructions
pageOpenAPI

Attachments
patterns.*slp, .*zip

Insert excerpt
Salesforce Snap Pack
Salesforce Snap Pack
nopaneltrue