March 5, 2017 Rick Banister

Can replication be real-time and on a transaction by transaction basis, such that the Salesforce DB and target DB are always synchronized?

Yes, there is a Real Time Option which uses OutBound Messages to drive the process. The procedure to set this up is to

  1. Define OutBound Messages for each object desired in Salesforce, sending the ID and SystemModStamp fields to your Relational Junction server for new or changed records.
  2. Open a port to * in your firewall to allow the OutBound Messages in.
  3. Install the WAR file for the Real Time Option application.
  4. Run a -getObjectIdMap command for each object you wish to get in real time. This maps the Salesforce ID’s to objects using their 4-character prefix, using the existing data in your database for pattern matching.
  5. Run the following command to start pulling data as the record ID’s are captured, using a job scheduled every 5 minutes to ensure continuous operation in the event of failure:
    RJ4SalesforceRTO -config [config name] -repeat [delay seconds] -getRealTime
  6. To send changed data to Salesforce, add a -setGlobal command before or after the -getRealTime, with the objects desired in the upload.config file.