I need to create a bidirectional sync b/w 2 Salesforce ORGs using Amazon appflow. All the relationship records needs to be in sync as well b/w these ORGs. I'm thinking to create External ID on each of these records for all objects for which flows are created to make sure relationships are preserved across ORGs. What is the best way to do bidirectional-sync ?
Amazon Appflow: Bidirectional sync b/w 2 Salesforce ORGs
604 Views Asked by Yashas G C At
1
There are 1 best solutions below
Related Questions in AMAZON-WEB-SERVICES
- No such property: id for class: java.lang.String
- Using like to non-string columns in Grails
- How to convert object reference that are in string form to that refrence class object?
- Restrict access to java-melody monitoring url
- Intercepting springsecurity behavior in grails
- Sort a Grails Domain list using a column index instead of column name
- Using service beans and dependency Injection in Geb Functional Tests
- how to create a pdf editor for grails
- Remove method of the List is not working
- Grails query based on Date
Related Questions in AMAZON-S3
- No such property: id for class: java.lang.String
- Using like to non-string columns in Grails
- How to convert object reference that are in string form to that refrence class object?
- Restrict access to java-melody monitoring url
- Intercepting springsecurity behavior in grails
- Sort a Grails Domain list using a column index instead of column name
- Using service beans and dependency Injection in Geb Functional Tests
- how to create a pdf editor for grails
- Remove method of the List is not working
- Grails query based on Date
Related Questions in SYNCHRONIZATION
- No such property: id for class: java.lang.String
- Using like to non-string columns in Grails
- How to convert object reference that are in string form to that refrence class object?
- Restrict access to java-melody monitoring url
- Intercepting springsecurity behavior in grails
- Sort a Grails Domain list using a column index instead of column name
- Using service beans and dependency Injection in Geb Functional Tests
- how to create a pdf editor for grails
- Remove method of the List is not working
- Grails query based on Date
Related Questions in SALESFORCE
- No such property: id for class: java.lang.String
- Using like to non-string columns in Grails
- How to convert object reference that are in string form to that refrence class object?
- Restrict access to java-melody monitoring url
- Intercepting springsecurity behavior in grails
- Sort a Grails Domain list using a column index instead of column name
- Using service beans and dependency Injection in Geb Functional Tests
- how to create a pdf editor for grails
- Remove method of the List is not working
- Grails query based on Date
Related Questions in AMAZON-APPFLOW
- No such property: id for class: java.lang.String
- Using like to non-string columns in Grails
- How to convert object reference that are in string form to that refrence class object?
- Restrict access to java-melody monitoring url
- Intercepting springsecurity behavior in grails
- Sort a Grails Domain list using a column index instead of column name
- Using service beans and dependency Injection in Geb Functional Tests
- how to create a pdf editor for grails
- Remove method of the List is not working
- Grails query based on Date
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
AWS already has fairly similar article on this: https://aws.amazon.com/blogs/apn/using-amazon-appflow-to-achieve-bi-directional-sync-between-salesforce-and-amazon-rds-for-postgresql/
Although, my architecture below is serverless as I'm cheap and don't care for EC2 costs.
I recommend one source of truth in whatever you're doing. I'd personally do centralized DynamoDB with all the field/values you're intending per object. Then you can have event-driven lambdas to push data to S3 CSVs. Then those CSV updates get pushed via AppFlow for you.
You should have a single DynamoDB table in all of this. Or a separate table for each object but I'm not seeing the advantage of multiples. You only need one S3 bucket. Just need multiple folders.
Your DB structure would be something like below:
S3 Folder Structure:
You'd need a Lambda to consume the DynamoDB trigger events and know which S3 bucket folder to push to.
You'd need another Lambda to consume events of the S3 buckets. You can have simple branching in one lambda to know if S3_Bucket_Folder_1 is from Org_1 and S3_Bucket_Folder_2 is from Org_2. This would sync up the DynamoDB and know to push a CSV to the other bucket folder.
To make sure you don't have cyclical calls on the Lambdas, make sure you have directories for inbound and outbound pushes. The Flows allow you to set the Bucket prefix.
Then you just listen for create, update, and delete events. I personally haven't dealt with deletion event in AppFlow but worst-case you're just gonna make a Connected App and use Salesforce REST API to call delete.