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
zrxc77zrxc77 

Work-arounds for lack of event-driven interface

I have been tasked to utilize salesforce as the main repository for all our business information, but at the same time have changes made in salesforce propagate in real time to various external back-end systems within our company. Since salesforce doesn't yet support an event-driven programming model, I have been thinking about work-arounds:

1. Polling - use the timestamp feature to look for items that have changed since the last poll and update accordingly. Polling is somewhat cumbersome, and only partially real time at best, particularly with the 5-minute polling interval that salesforce enforces.

2. Workflow Alert - set up a workflow alert to email my back-end system when changes of interest are made to salesforce, then have my back-end system call back into sforce to get the update. This seems pretty hokey to me. Email was never meant to be used in a mission-critical manner like this. At the very least I would also have to implement polling to pick up any changes missed from lost email.

3. Web Integration Link - rather than having changes made directly to salesforce, have the user access a custom web integration link (URL or control) that accesses my back-end system and then, either directly through a control or indirectly through my back-end system, calls the sforce API to commit the changes to salesforce.

Right now I am leaning towards option three.

Has anyone else faced a similar problem and, if so, how did you approach it? Have I missed any alternatives or failed to consider an important consequence of any of the alternatives I did list?

Thanks
DevAngelDevAngel

Hi zrxc77,

I would recommend option 1 and test the 5 minute interval .

The getUpdated and getDeleted are built specifically for this but are applicable to a subset of available tables.  All records have the systemModStamp that you can use to accomplish the same thing using queries.

You will not be able to do "real time" change propagation (unless your definition of real time changes).  Events are on our long term road map, but in the mean time, near real time will be the best you can achieve.

zrxc77zrxc77
Thanks Dave. Understood. Option one sounds more appealing now. One aspect that makes it potentially even more appealing is the possibility of using a pre-packaged solution. Do you recommend any partners who sell data synchronization packages? (I am referring to synchronization with SQL Server 2000 databases, not Outlook contacts or such)
DevAngelDevAngel

Hi zrxc77,

I think that DataJunction by Imperative is the most widely used, but it is more of a data loader than sychronizer.  Other than that, I don't know of any that are specifically aimed at SQL Server.

zrxc77zrxc77
Okay. Thanks again, Dave.
dmoore247dmoore247

We are starting two of these same type projects.  Will let you know if we find a way better than #1 (polling).

I'm glad to see someone else looking for response times better than 5 minutes, but I'm curious, what business scenario do you face that drives the need for real-time over 'near real-time'?

Regards,

zrxc77bzrxc77b
Actually, near real-time is all we need. Our company's product is a service that customers access via the web. When a salesperson completes a sale we want that information to automatically propagate from SalesForce.com to our provisioning system to enable the new customer's account on our product servers.

Often times a sale is completed while the customer is on the phone with a salesperson. In this scenario we would like that customer to be able to log in while on the phone with the salesperson. If we had to, we could tell the customer his or her account will be active in five minutes and hang up, but it would be nicer if the salesperson could just chit-chat for 30 seconds or so and then have the customer log in and verify that everything is okay while speaking with the salesperson.

In addtion, my request for an event-driven interface wasn't just based on response time. I find that event-driven models work well for many business processes. "When this happens, do that..." I think SalesForce.com may also see the value of event-driven models as evidenced by their inclusion of Workflow Rules/Tasks/Alerts. Let's hope they expand on this good start.