Salesforce to Salesforce is great feature from Salesforce:
- Allow different companies which using Salesforce or Force.com to transfer data without 3rd party
- Out-of-the-box feature from Salesforce in any edition (Group to Unlimited edition)
- Real-time data sync
- One-way or Two-way
- Any object and fields can be configured
- Manual or Automatic data transfer method in Publisher instance
- Manual or Automatic to accept record in Subscriber instance
- As Publisher and subscriber with multiple Salesforce instance
- Free of Charge
Limitation (as of 1st may 2013):
- Not able to modify notification email
- Need to write apex trigger to automate data transfer
How to Start?
1. Enabling Salesforce to Salesforce (S2S)
Setup - App Setup - Customize - Salesforce to Salesforce - Settings
Activate Enable checkbox, please note that enabling Salesforce to Salesforce is not reversible, however, you can deactivate connection create.
2. Setting up Connection
- Once you activate S2S, system admin will find new tab "Connections".
- If your partner contact have not in your Salesforce, create your partner Contact (and Account) with email address, your partner will receive invitation email in this email address.
- Determine a connection user, the connection owner will receive all email notifications including system notifications in case there is a functional error when the connection is inserting/updating a record. Additionally, the connection owner will be assigned as the default owner of any new records, though this may be overridden by any assignment or other rules that determine record ownership.
- Enter all information needed enter, click "Save & Send Invite", your partner will receive email to accept it.
- Once the invitation is accepted, the connection between your Salesforce and partner Salesforce is established, no data are shared yet at this stage
3. Publishing Objects
Let's say you will send data from your Salesforce to your partner.
- Go to Connection created and scroll to 'Published Objects' related list, click 'Publish/Unpublish' button.
- Select object you need to publish and click Save
- Click Edit link in Action column for each object, you can select fields you want to be published to your partner
4. Subscribing to Published Objects
Now, your partner need to subscribe for objects you have published.
- Go to Connection created and scroll to 'Subscribed Objects' related list, click 'Subscribe/UnSubscribe' button.
- You will find objects being published from partner company and you need to map it to your object. It is important here to determine if you want to Auto-Accept record transferred over for each object. If this is not select, the connection user need to accept it manually.
- Click Edit link in Action column for each object, you need to map fields between your partner Salesforce field with yours.
- Click Save and Done.
5. Forward record
Up to Step 4, connection and fields mapping has been established. Out-of-the-box, user need to forward record they need to transfer.
- Go to record page layout and scroll down to 'External Sharing' related list.
- For Account, click 'Forward this Account' button, you will see option to forward related objects to Account which has been configured in connection above, also option to send notification email.
- Once a record is forwarded, it will be shown in 'External Sharing' related list and at the top of page layout.
6. Mass forward records
If your profile have 'Manage Connections' permission, you can forward records in bulk.
Go to object tab, select a View. You will find button 'Forward to Connections'. Select records to forward and click that button.
7. Make it Automatic
From step 5-6, we are talking about to forward record manually. But, in many cases, business need this to be automatic. To achieve this, we need to write apex trigger which insert record to PartnerNetworkRecordConnection object. Sample apex code:
PartnerNetworkRecordConnection newConnection =
ConnectionId = networkId,
LocalRecordId = newContact.Id,
SendClosedTasks = false,
SendOpenTasks = false,
SendEmails = false,
ParentRecordId = newContact.AccountId);