18. Ways of the “force”
Mule practitioners guide to integrating with Salesforce
Feb 2020, Alok Mishra
19. 2Integration patterns for Salesforce
Architect | Director | Deloitte Platform Engineering (DPE)
• Systems Integrator since early 2000s & passionate about this domain
v Built solutions for private sector and government, EAI & Digital
v Integration products: homegrown, IBM, Oracle, Open-source & Mule
v Toughest gig with Mule: Getting Mule to run a Horse Race in 2016
• I do @ Deloitte Platform Engineering
v Work with our clients (draw on their walls)
v Lead and Inspire peers in the System Integration space (plenty of talking, stories and
pointing to the sky)
• Outside of work
v Tinker with visual digital arts libraries and open-source hardware (buy a lot of kits)
v Full time dad of two kids - 2.5yr & 5yr old (I can keep 2 humans alive)
/me
20. Objective:
Help you walk away with
1. Contexts in which we integrate with Salesforce
2. Options available for Integrating with Salesforce in those contexts
3. Things to consider when building integration solutions
22. 5Integration patterns for Salesforce
History and Products
Cloud-based Customer Relationship Management (CRM) & complementary suite of enterprise
application – Wikipedia definition
Salesforce
History
• 2004 Initial Public Offering & growing
• 2018 acquires Mulesoft
Source: https://www.salesforce.com/au/products/
Offerings:
• Sales, Service, Marketing, Small business
• Commerce, Engagement, Integration,
Analytics etc.
Source: NYSE
23. 6Integration patterns for Salesforce
Usage Contexts and Quality Attributes
How is it used?
Internal teams: Sales,
Service, Marketing
Internal users: Analytics,
Customer 360
Security:
Availability:
Responsiveness:
Scalability:
Reliability:
Consistency:
Security:
Transactionaltity:
Availability:
Scalability:
Consistency:
Security:
Reliability
Customer Management:
Sales, Service, Marketing
External Service :
Validation, Lookup
Transactional :
Order, Shipping etc.
Digital :
Customer registration,
Order, Search, Track etc.
Task Management:
Work Queues, tasks,
Consistency:
Security:
Personalize ability:
Maintainability
28. 11Integration patterns for Salesforce
1. Inbound Real-time: External System CURD on Salesforce Data
Consumer Adapter
Domain API
Cache
sync
Channels
Domain APIDomain API
Command, Query
Consider:
• Identity - User context vs system user
• Performance – If always going straight to Salesforce
vs caching
• Data mastering requirements – Domain APIs over
Salesforce for data mastered in Salesforce
• Traceability in logs – for maintainability
• Centralized configuration management – for
consistency and quality
29. 12Integration patterns for Salesforce
2. Inbound real-time to Salesforce: External Data Synchronization
Consumer Adapter
Domain API
Cross-Reference API
Command, Query
Provider Systems
Salesforce Adapter
Domain Events
Persistent Channels
Consider:
• Reliability – Persistence, reconciliation, retries
• Storing vs Querying – Availability vs Consistency
• Cross-referencing – Externalizing mappings
• Sync Error handling – Runtime or Business
33. 16Integration patterns for Salesforce
Outbound Real-time: Command/Query
Consumer Adapter
Domain API
Command, Query
Channels
Domain APIDomain API
Salesforce Adapter
Domain API
External serviceEnterprise System
REST | OData
Consider:
1. Adapter pattern for consuming/ transforming
2. Cross referencing data mapping
3. Transport security & trust
4. API policy Security
5. OData API Specification
6. Contract based development
Cross-Reference API
Enterprise System
42. Key takeaways:
Salesforce product and growth
Salesforce APIs
Integration context is often in these ways
− Real-time Inbound
− Batch Inbound
− Events Outbound
− Real-time Outbound
Context + Patterns = winning!
Consider data, security, message-persistence, error handling etc. for a resilient,
durable and pluggable API
47. 30Integration patterns for Salesforce
… after the end-credits: Anti-patterns
1. Mixing System vs User context for Inbound or Outbound real-time Salesforce query/update
2. Using Salesforce as system-of-record for external data (it does not master)
3. Using Salesforce as a reference data store for list-of-values it does not master
4. If querying Salesforce directly in a high-volume scenario, consider caching
5. If performing complex queries using Salesforce Custom objects APIs (use QL instead)
6. If providing a public API for Salesforce, use mutual SSL and API policies
7. Duplicate copies of salesforce configuration per mule application
8. For personally hand coded OData request parsers
9. Hardcoding mapping for system-system list of values
10.Defaulting to runtime exception