Join us to learn about different Salesforce integration Patterns and Integration Best Practices. In this session we will talk about different Integration patters like request and reply/response, Fire and forget, Batch Data Synchronization, Remote Call In, Data Virtualization.
- Why there is need of Integration
- Security between System
- Factors affecting Integration Patterns
- Integration Patterns
- Request and Reply / Response
- Fire and Forget
- Batch Data Synchronization
- Remote Call In
- Data Virtualization
- When to use which integration
- Differences between various integration mechanisms including Canvas, Outbound messages, REST , SOAP, Bulk APIs
- When to use ESB vs ETL
Salesforce can’t be source of everything. It can be CRM or any Custom application. However, SAP can own Order management or Inventory, External system for sending email, 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.
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 ?
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
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
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
Data stored in Lightning Platform is created, retrieved, updated, or deleted by a remote system.
- SOAP & Rest API
- Apex based APIs
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
Here is recording of session.
|Topic : Salesforce integration Pattern & Best Practices|
Date : Saturday, FEB 1, 2020 10:00 AM EST (8:30 PM IST )
Speaker : Jitendra Zaa
It was a mega session and we got the 380+RSVP across the world. In that session we covered few of the aspects of integration, starting from basic & going to advance.
- Platform Event Basics – Trailhead
- Salesforce Documentation
- Implementing External Services
- Integrating Salesforce using Rest API – Path to Code
- Jitendra Zaa’s Blog
- Mastering Salesforce DX and VSCode – Udemy Course
Please note that we have limit of 300 attendees that can join the online sessions. However, recording will be posted on our YouTube channel. Make sure to subscribe our YouTube channel to get notification for video upload.
Bookmarks our “Session in 2020” page for all upcoming and old sessions of 2020. Let us know which topic you want learn next in ApexHours.
Don’t forget to check Jitendra Udemy course on Mastering Salesforce DX (Modular Application Development Using Unlocked Packages)
Salesforce Apex Hours