function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion

Best design for the below integration scenario


We have to integrate our Salesforce Org with an external system (ES1). The integration requirement is as below:

ES1 has a custom object CO1 and ES1 is the MASTER for this object’ records. This object records need to be transferred to SFDC on an hourly basis. The volume of the records < 1000. For this requirement we are proposing the below solutions:

- Option 1: Automated data load - every one hour using Data Loader

- Option 2: Using ESI's API: The ES1 system's wsdl be consumed by SFDC and then salesforce will query the CO1 object every hour, fetches these record and upsert in Salesforce.

- Option 3: Using SOAP API: ES1 system will consume SFDC's enterprise wsdl and then connect with Salesforce programmatically. It will then upsert the CO1 object records every hour in Salesforce

Now which is the best option out of three above? Also if we chose option2, how can we run the integration every hour automatically?

Any help will be highly appreciated.

How are you going to use the data in Salesforce? are you going to just display it or going to create report using it?

if you just need to display it, then you can look into lightning connect. make your data available using Odata 2.0 and then you can create extenal objects in salesforce and use them similary to cusotm objects with limitions (ie. reports are not allowed as of now).

if you need to run report on the external data, then

if you go with option 1) you have to have a process on ES1 to feed data loader with the csv file of data every one hour. also you will be limited on error handling and email notifications.
if you go with option 2) then you need to make your service available to sfdc out of your network, firewall etc. you have to use APEX (Schduleable Batch Apex) to make a call out to your service and insert into your custom objects

I would go with option 3. if you think your load is going to increase in future, you can use Bulk APIor you can go with SOAP API
Santosh Chakrapani 10Santosh Chakrapani 10
There is no one single best approach. Many factors (Budget Constraints, Timeline Constraints, Ownership of the solution) drive the ultimate approach.

Option 1 has the fastest turnaround time in terms of implementation and cost. But as Balaji pointed about, there is an additional overhead of error handling in case of issues and monitoring email notifications.

Option 2 puts a lot of burden on the IT infrastructure as you have to secure your endpoints that are vulnerable to DDOS attacks.

Option 3 is an ideal long term, scalable approach but involves upfront development costs and hardware costs for hosting the solution in the
intranet/physically co-located with your ES1 and ofcourse involves additional development effort as and when the ES1 metadata changes (added, updated overtime)

So identify your constraints correctly and choose the right approach carefully
Thanks BalajiRanganathan and Santosh Chakrapani for your answers. These provides few new pointers to the Integrations options.