Join us to learn about different Salesforce integration Patterns & Best Practices. In this session, we will talk about different Integration patterns like request and reply/response, Fire and forget, Batch Data Synchronization, Remote Call In, and Data Virtualization.
Salesforce can’t be a source of everything. It can be CRM or any Custom application. However, SAP can own Order Management or Inventory, an External system for sending emails, Other System for Payment, External Fleet Management, And possibilities are high that Salesforce would need to exchange data with these systems. Please check Salesforce Integration with External System post to learn about Integration.
Check out our Salesforce Integration Guide.
Firewall, Proxy and Reverse Proxy
Before integrating anything with Salesforce, as per Architect, it is necessary which system components are important for security and may impact with integration pattern to be used.
1. Firewalls : It controls and protects Malicious Traffics. Firewall can be hardware or software based.
2. Proxy aka Forward Proxy : Proxy normally configured in your browser or systems like VsCode, data loader, eclipse to hide your actual identity. Every outgoing request transmits through proxy server to make sure external systems unaware about your true origin and identity
3. Reverse Proxy : Its used by Web Servers and sits before it. It can server any purpose like authentication or perform security related stuff. Best example is Mulesoft where we can configure API proxy which is used to apply throttling, avoiding DoS attacks or applying SLA as per licenses provided to customer
Factors Affecting Pattern
- Maintain same transaction : Does Salesforce need to perform anything on response ?
- Synchronous vs Asynchronous : Is it business critical & response needs to be processed in real time or near real time ?
- Message size : Is it small or large ?
- Guaranteed delivery needed : What if external system is down ?
- Contract first integration possibility : Can remote system follow Salesforce Contract ?
- Declarative preferred : Do we want to integrate without writing any code in Salesforce ?
Salesforce Integration Patterns & Best Practices
At high level, there are five types of integration patterns in Salesforce
- Request and Reply
- Fire and Forget
- Batch Data Synchronization
- Remote Call In
- Data Virtualization
1. Request & Reply
Salesforce invokes a process on a remote system, waits for completion of that process, and then tracks state based on the response from the remote system. Let see what all option we have for request & reply.
External Services : Point & click based integration from Lightning Flow. External system should provide OpenAPI or Interagent schema. Only supports primitive datatypes
LWC or Visualforce calling external system : Salesforce enables you to consume WSDL and generate proxy classes. It also provides HTTP services using which we can perform GET, POST, PUT or Delete operations. A user can initiate operation from custom UI.
Trigger : We can make callout to external system on data change via trigger. However callout made must be asynchronous. This solution is not recommended for request and reply but better suited for Fire and Forget.
Batch Apex invoking external services : We can make callout to external system using Batch Apex. Execute method in Batch apex gets refresh governor limit every time however there are governor limits on total callout or time of callout in single transaction
2. Fire & Forget
Salesforce invokes a process in a remote system but doesn’t wait for completion of the process. Instead, the remote process receives and acknowledges the request and then hands off control back to Salesforce. We can do the same with following ways:
- Process-driven platform events
- Customization-driven platform events
- Workflow-driven outbound message
- Apex based Callouts
3. Batch Data Synchronization
Data stored in Lightning Platform is created or refreshed to reflect updates from an external system, and when changes from Lightning Platform are sent to an external system. Updates in either direction are done in a batch manner.
Change Data Capture : Salesforce publishes change events, which represents changes on records
Using ETL Tool : This tool connects to systems, extract data, transform in require target format and uploads using Bulk API or SOAP API
Manual Remote Calls : Salesforce or external system can call each other every time data is changed. However, it would cause huge ongoing traffic and should be avoided if possible
4. Remote Call-In
Data stored in Lightning Platform is created, retrieved, updated, or deleted by a remote system.
- SOAP & Rest API
- Apex based APIs
5. Data Virtualization
Salesforce accesses external data in real time. This removes the need to persist data in Salesforce and then reconcile the data between Salesforce and the external system
Salesforce integration Patterns & Best Practices Video
- Platform Event Basics – Trailhead
- Salesforce Documentation
- Implementing External Services
- Jitendra Zaa’s Blog
- Mastering Salesforce DX and VSCode – Udemy Course
Don’t forget to check the Jitendra Udemy course on Mastering Salesforce DX (Modular Application Development Using Unlocked Packages). If you are new in Salesforce. Please check our free Salesforce Admin and Salesforce Developer training.