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:
The Salesforce Connector Configuration should look like:
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:
And that's it! I hope this was helpful!