Salesforce & Netsuite are monster tech names and integrating the two systems is a real beast. While they both have powerful APIs for custom development, there are other ways to connect the systems.
Recently, we worked with a client that uses Netsuite for as their ERP. As their business expanded, they wanted to implement Salesforce and leverage its CRM & Sales Cloud capabilities to increase sales and client management. Therefore, they needed a Netsuite x Salesforce integration to sync records from one system to another. The client opted to use Workato, an enterprise middleware for integrations and automations.
When using Workato, you create a Recipe which is the automation or integration. Similar to an Apex Trigger, you can create and save variables, loop over records, create a list of records, parse data, compute data, update records, create records – across multiple systems! Each Recipe can have one or more Connections which are the applications used in the automation. It’s the full power of code, in a GUI environment.
The project has many facets to it, and the Netsuite integration added more dimensions to it! One of the project goals was for Salesforce to be the source of truth for all client data. This meant that any new records or updates would be carried out in Salesforce and then synced to Netsuite.
Focusing on the Accounts/Contacts sync, there were several crucial steps we executed to successfully implement it.
As a first step, we imported the Netsuite records to Salesforce, ensuring that we brought over the Netsuite Unique Id. Every record in Netsuite has its own Id which is crucial when creating integrations and matching records. This field was marked as read-only and could only be updated via the API User.
Once the Contact Records were in Salesforce, we used the Id to easily match Salesforce Records to their counterpart in Netsuite. As part of the sync, new and updated Salesforce Contacts needed to update Netsuite. New Records were easy to identify since they did not contain the Netsuite Id. Once the corresponding record was created in Netsuite, we populated the new Netsuite Id in Salesforce for future syncing.
In Salesforce, every Contact has two sets of address fields directly on the Contact Record. Netsuite however has each address listed as a separate record linked to the contact record. Think of it as a related list of addresses. Therefore, to map the Salesforce data to NetSuite, we needed to convert the addresses into a list which would then create individual address records in Netsuite. Workato has some documentation on how to handle this which guided us through the process.
In our testing, we noticed that every time a Contact was updated in Salesforce (thus triggering an update in Netsuite), the address records in Netsuite were deleted and recreated per the data coming from Salesforce. Netsuite has a configuration option within the integration to replace the current address records with new data. On the Workato side, the configuration is listed among the hidden fields in the address list mapping section and thus missed our attention. We undid the selection and set our sync to create new address records.
We suggested a further phase to this work in which the Address Ids from Netsuite would be mapped to address records in Salesforce and thus provide a more direct sync.
With this final configuration in place, testing was carried out and the project completed!
You might like to read:
Salesforce & Netsuite Integration Options