Skip to main content

Extend Feature Of Salesforce to Salesforce

Salesforce to Salesforce is a Force.com feature that lets you configure two Force.com environments (orgs) so that they share data records in real time. It is useful for those salesforce org who does business with partnership. While doing business It might required to share business data. if both org use salesforce then Salesforce to salesforce feature is easy to use for sharing data. 
As name suggest only this feature(S2S) only  used by Salesforce Org. 

How to use Salesforce to Salesforce ?

  • Enable salesforce to salesforce features in both the Org.(Source Org and Target org)
  • Create one Account and Contact in Source Org and provide email address(which is associated with target salesforce org. )
  • Now Create a Connection record from tab list. Choose Contact Name(which you have just created )
  • Send invitation 
  • Check mail, Activate connection
  • Choose object whose record you want to send and Save it 
  • Click on Edit link next to Object name in the Published Object section
  • Choose fields of chosen object
  • Now Come to target Org.
  • Click on Subscribe button in the Subscribe Object section 
  • Accept the object and map the field
  • Create some record in source org.
  • Go to the enhanced list view page 
  • Select the Record and click on Forward Connection button 
  • Choose the connection and send it
  • Check the status of record in the External sharing section (Which you have to add by editing layout from Related list Section) 
  • When status will be Active Sent then Record must be created in target Org.
This is default functionality of Salesforce to Salesforce(S2S).
Now somebody wants to do automatically data transfer. That means If some record is created in source org that record should be created automatically in target org if mapping is present.
For this requirement I have written a trigger and a class.

This is my trigger 

trigger InsertingAccountThroughS2S on Account(after insert) {
    
    Id networkId = ConnectionHelper.getConnectionId('Salesforce'); 
    list<Account> listOfAccounts = new list<Account>();
    list<PartnerNetworkRecordConnection> accountConnections =  new  list<PartnerNetworkRecordConnection>();
    
    for(Account act:trigger.new){
        
        if(act.ConnectionReceivedId == null){
        
            PartnerNetworkRecordConnection newConnection = 
                      new PartnerNetworkRecordConnection
                          ConnectionId = networkId, 
                          LocalRecordId = act.Id, 
                          SendClosedTasks = false, 
                          SendOpenTasks = false, 
                          SendEmails = false);
                          
             accountConnections.add(newConnection );
                          
              
        }
    }
    if (accountConnections.size() > 0 ) { 
          database.insert(accountConnections); 
    } 
   
}

This is the class

public class ConnectionHelper {
    public static Id getConnectionId(String connectionName) {
    
        List<PartnerNetworkConnection> partnerNetConList =
           [Select id from PartnerNetworkConnection where connectionStatus = 'Accepted' and connectionName =:connectionName];
        
        if ( partnerNetConList.size()!= 0 ) {
            return partnerNetConList.get(0).Id;
        }
        
        return null;
    }
}

Comments

Unknown said…
Very Effective one. This will make S2S more lively.
Another plus thing we can do here is that we can send related child object records as well with the parent.
For e.g with account, contacts can be migrated like
newConnection.RelatedRecords = 'Contact';
Thanks Souvik, That's right.Yeah We can send related records with parent.

Popular posts from this blog

Style in LWC

 Following are the ways we can apply in CSS in LWC. 1. Inline CCS Inline CSS is not recommended approaches, it is take highest priority among all CSS. style="color:green;font-size:10px;" is inline CSS added to div < template >     < lightning-card title = "Inline CSS" >         < div >             < div style = "color:green;font-size:10px;" > This is inline Style div </ div >         </ div >     </ lightning-card > </ template >  2. External CSS style can be applied to an elements such as h1, p,div span etc. It can applied to class using "." notation. for example .user{} It can also be applied to pseudo class.  for example .user:hover{} Id locator is not being used in LWC to apply style To apply external css, need to create separate CSS file, file name should be exactly matched with component name. for example - If component name is ...

How to Create/Delete file attachments(Content Document) through Apex ?

 There are 3 standard salesforce objects to store file attachments. Content Document, ContentDocumentVersion, ContentDocumentLink.  Here is the article to talk about these objects and relationship.  https://www.forcetalks.com/blog/contentdocument-and-contentversion-in-salesforce-an-overview/ ContentDocumentVersion ContentDocumentLink This post is all about how to create/delete content document though Apex. Here is code snippet // Insert Content Version record ContentVersion contentVersionRec = new ContentVersion(Title='filename',PathOnClient ='FileName.pdf',VersionData = bodyBlob,origin = 'H'); INSERT contentVersionRec; // this will insert one record in ContentDocument and ContentVersion , ContentDocument  is parent and  ContentVersion is child record // get contentdocument id contentVersionRec = [SELECT Id, Title, ContentDocumentId FROM ContentVersion WHERE Id = :contentVersionRec .Id LIMIT 1]; // Create Content Document Link record- This will attach ...

Lifecycle hooks in LWC

There are 3 phase of LWC component  1. Mounting  A. constructor, B. connnectedCallback C. render D. renderedCallback 2. UnMounting  A. disconnectedcallback 3. Error  A.errorcallback Note - render is not lifecycle hook, it is protected method of Lightning element class. Mounting Phase LWC Creation and Render Life cycle Constructor Method ·        This method called when component is instantiated and It flows from parent to child component. ·        Need to call Super() inside constructor method ·        Can’t access any component properties or child component because it’s not ready yet. ·        Host element can be accessed through “this. template” inside constructor method. ·        Don’t add any attributes to host inside constructor C   constructor (){          super (); //...