Salesforce Connector Reference Lookup With Upsert Operation

DZone 's Guide to

Salesforce Connector Reference Lookup With Upsert Operation

This quick tutorial will help you use Mule's Salesforce Connector to upsert your child objects simply and easily.

· Integration Zone ·
Free Resource

Mule Salesforce Connector is a powerful tool. It executes API calls targeting Salesforce’s SOAP API, REST API, Bulk API, or Streaming API, depending on the operation you configure. The API calls use an XML request/response over an HTTPS connection. All required request headers, error handling, and HTTPS connection configurations are abstracted from the user and built into the connector.

There are often requirements while feeding data to Salesforce to look up reference fields between parent and child Object relations. One way is to have multiple calls to Salesforce, one to query the Parent object to find if the key is present and fetch the ID, and other to use that ID and upsert the child object.

Another is to use just one call, which will take care of both the lookup for the Parent/Reference Object and if the key is present, upserts the Child Object. This article will cover that process.

Suppose I am upserting an Object Order. I have fields like BillTo__r, which should refer the ContactAddr__c Object and upsert only when the mentioned key is present in that object. Similar is the ShipTo__r field.

So, the transformation for these reference fields will look like:Image title

The Salesforce Connector Configuration should look like:

Image title

One field “type” should be added to the reference field. The value of this field will be equal to the exact name of the Salesforce Reference Object. Now, this will take the internal salesforce ID of the record in Contact Address Table, whose field ContactAddrId__c will be equal to the provided value. After the upsert, it will look like below in salesforce:

Image title

And that's it! I hope this was helpful!

mule ,salesforce integration ,reference objects

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}