+ Start a Discussion

SFDC Real time web service integration

We are planning to integrate SFDC to legacy application and need to send around 6 objects data from Salesforce to other application using real time (Data outbound from SFDC to legacy). I am trying to explore various integration options like web services. Can some one provide high level integration solution?

There are two real-time solutions available you. The first is through the use of the Streaming API. This solution requires an external server that sets up a PushTopic on salesforce.com, and then monitors the stream for new activity. The second real-time option uses either Outbound Messaging, which requires an external server that waits for new messages, or asynchronous callouts, which requires Apex Code. For Outbound Messaging, messages are placed into a queue and delivered in FIFO order as resources permits. This queue is usually real-time within a matter of a second or two. For Apex Code, a @future annotated method can be used to send data to the server. If the legacy system supports SOAP or REST, it is possible to construct a message that can be sent directly to the legacy system. Otherwise, an intermediary will be required, as with the other solutions. Delivery will usually be real-time, but is only available as resources permits (the same as Outbound Messaging). Without using any of these features of the platform, your next option would be to use a normal SOAP-based polling method (query the server every five minutes and see if there's updates). This will be far less than real-time, but can still be accurate to within a few minutes, depending on the configuration of the application; salesforce.com does not recommend using their replication APIs more often than once per five minutes, yielding about 300 updates daily. This will use far more API calls (which are relatively limited) compared to the other methods, which will leverage other limits, leaving your API limits for other uses (e.g. Outbound Messaging uses Workflow limits, asynchronous code uses a different limit...).