Skip to content

Integration Decision Guides

CTA scenarios require rapid, defensible decisions about integration architecture. The decision trees below (as Mermaid flowcharts) cover the most common integration choices. Use them to practice decision-making and to structure reasoning at the review board.

How to use these guides

Each decision tree codifies first-principles reasoning. At the board, you will not have these charts, but having internalized the logic, you can walk judges through your reasoning step by step. Practice explaining WHY at each decision node, not just the final answer.


1. Synchronous vs Asynchronous

Pattern selection: Start by establishing whether the business process can proceed without the external system’s answer. If yes, the pattern is asynchronous — choose between Fire-and-Forget (any volume, no order requirement) and Batch Sync (large volume, acceptable staleness). If no, evaluate whether the external system can respond within governor limit windows at expected volume. If yes, Request-Reply is viable. If not, the board expects you to redesign the UX or use Data Virtualization. Wrong reasoning: choosing synchronous by default or because it is simpler to reason about. CTA-level reasoning: select based on business process dependency and volume math, not implementation familiarity.

Event-driven vs request-reply: The question is coupling tolerance, not just latency. Request-reply tightly couples the caller to the callee’s availability and response time. Event-driven accepts eventual consistency in exchange for loose coupling and independent scalability. Wrong reasoning: always preferring real-time because it feels safer or more consistent. CTA-level reasoning: event-driven is the correct default for integrations where the business process does not require an immediate answer, where volume will grow unpredictably, or where the subscriber landscape will expand over time. Request-reply earns its place when the transaction literally cannot commit without the external system’s answer.

The foundational integration timing decision. Get this wrong and the entire architecture suffers.

Routes an integration need through response dependency, external system latency, volume limits, UX redesign feasibility, and ordering requirements to sync or async timing.
Figure 1. The synchronous vs asynchronous decision hinges on whether the calling process is blocked waiting for a result. When volume or latency rules out synchronous, evaluate UX redesign options before defaulting to async with a notification model.
Decision FactorSynchronousAsynchronous
User experienceImmediate feedbackEventual notification
CouplingTightLoose
Error handlingDirectComplex (DLQ, monitoring)
ScalabilityLimited by slowest systemScales independently
Governor limits10s callout, 120s totalNo callout timeout pressure
Data consistencyImmediateEventual

2. Middleware vs Point-to-Point

Middleware vs direct integration: Evaluate each integration touchpoint independently, not the architecture as a whole. The question for each touchpoint is: does it require data transformation, fan out to multiple downstream systems, need centralized error handling, or connect to an external system that changes frequently? A “yes” to any pushes the touchpoint toward middleware. A “no” to all keeps it direct. Wrong reasoning: mandating that all integrations route through middleware (or none do). CTA-level reasoning: hybrid architecture with explicit per-touchpoint justification. The structural argument for middleware at scale is the n(n-1)/2 connection count — 10 systems point-to-point require 45 connections; with middleware, each system maintains one connection to the hub.

When to invest in middleware versus keeping things simple with direct integration.

Routes a new integration through system count, landscape growth, transformation complexity, team expertise, and governance needs to middleware or point-to-point.
Figure 2. Six or more systems always justify middleware. Between three and five systems, governance needs and shared transformations are the deciding factors. For two systems with no growth expectation and simple CRUD, point-to-point is the correct and cheaper answer.

Cost Comparison

FactorPoint-to-PointMiddleware (MuleSoft)
Initial costLowHigh (licensing + setup)
Per-integration costLinear growthDecreasing (reusable assets)
Maintenance at 3 integrationsLowHigher than needed
Maintenance at 10 integrationsHigh (spaghetti)Lower (centralized)
MonitoringPer-integrationCentralized
Break-even pointN/ATypically 5-8 integrations

3. REST vs SOAP

Protocol selection driven by consumer needs and system constraints.

Routes an API protocol decision through consumer constraints, contract requirements, payload size concerns, query flexibility, and multi-operation transaction needs.
Figure 3. REST is the default for unconstrained modern integrations. SOAP applies only when the consumer requires WSDL contracts. GraphQL fits mobile and bandwidth-sensitive consumers needing flexible queries; Composite API handles multi-step dependent operations in a single call.
FactorRESTSOAPGraphQL
Payload formatJSON (lightweight)XML (verbose)JSON (precise)
ContractOpenAPI/Swagger (optional)WSDL (strict)Schema (strict)
ToolingUniversalMature but decliningGrowing
PerformanceFastSlower (XML parsing)Optimized payloads
MutationsFull CRUDFull CRUDFull CRUD (GA in API v66.0)
Learning curveLowModerateModerate
Salesforce fitPrimary recommendationLegacy or metadataMobile-optimized queries + mutations

4. ETL vs ELT vs Data Virtualization

Moving or accessing data across system boundaries.

Routes a data integration need through whether data must exist in Salesforce, transformation location preference, and volume thresholds to ETL, ELT, virtualization, or direct API load.
Figure 4. Data that only needs to be displayed but not processed is a candidate for virtualization, avoiding replication entirely. When data must exist in Salesforce, ETL (transform outside before loading) is preferred over ELT to keep complex transformation logic away from Apex governor limits.
ApproachTransform LocationBest ForSalesforce Consideration
ETLMiddleware/staging areaComplex transformations, data cleansingPreferred - avoids Apex governor limits
ELTTarget system (Salesforce)Simple transforms, Salesforce-native logicLimited by Apex processing limits
VirtualizationNone (real-time query)Display-only, highly volatile dataExternal Objects limitations apply

5. Which Salesforce API to Use

API type selection: Work through volume first. Any integration exceeding a few thousand records per operation should default to Bulk API 2.0, not REST. For lower volumes, the next questions are: does the consumer need flexible schema traversal (GraphQL), does the operation span multiple related records that would take multiple round trips (Composite API), or does the consumer need WSDL contracts (SOAP)? For event-driven scenarios, classify the event: record change notifications use CDC, custom business events use Platform Events, and high-throughput external consumers use Pub/Sub API. Wrong reasoning: defaulting to REST for everything, or choosing Streaming API (CometD) for new event-driven work. CTA-level reasoning: match API capabilities to the specific volume, direction, and interaction pattern of each integration.

API selection for any data operation.

Routes any Salesforce API operation through CRUD volume, event type, metadata, or query flexibility criteria to the most appropriate API choice.
Figure 5. Volume is the primary CRUD routing factor: under 200 records use REST, 200-2000 consider Composite or sObject Collections, and over 2000 always use Bulk API 2.0. Event-driven needs branch separately to CDC, Platform Events, or Pub/Sub API based on what triggers the change.

6. Real-Time vs Near-Real-Time vs Batch

Timing selection based on business requirements and technical constraints:

Routes data synchronization needs through freshness requirements, user blocking, volume per minute, and batch feasibility to real-time, near-real-time, micro-batch, batch, or virtualization.
Figure 6. Data freshness requirements set the outer boundary; volume and user-blocking behavior narrow the choice within that boundary. Batch is the cheapest and simplest option and should be the default unless the business explicitly requires fresher data.
TimingLatencyTypical TechnologyCostComplexity
Real-time sync< 2sREST callout, External ServicesHighMedium
Near-real-time2s - 5minPlatform Events, CDC, Pub/SubMediumMedium-High
Micro-batch5-15 minScheduled Apex, middleware scheduleMediumMedium
Batch15min - 24hBulk API + ETL/middlewareLowLow-Medium
On-demandVariableSalesforce ConnectLowLow

7. Error Handling Strategy Selection

Selecting the right error handling approach based on integration characteristics.

Routes error strategy selection through synchronous, asynchronous, or batch integration patterns to the appropriate combination of retry, circuit breaker, idempotency, and monitoring.
Figure 7. Error strategy is not one-size-fits-all: synchronous user-facing integrations need graceful degradation, event-driven async patterns need idempotency and replay, and batch integrations need partial failure handling with reconciliation jobs. Each pattern has distinct monitoring metrics.

8. Platform Events vs Change Data Capture

A focused guide for the most commonly confused event technologies.

Routes event-driven integration decisions through trigger type, field-level tracking needs, custom semantics, and external publishing to CDC, Platform Events, or an external broker.
Figure 8. CDC is the right choice whenever you need automatic field-level change tracking on record DML with zero publish code. Platform Events apply when the event represents a business occurrence with custom semantics, or when an external system needs to publish events into Salesforce.

9. Authentication Flow Selection

For the full OAuth flow decision tree (all 6 flows with security comparison table), see Security Decision Guides - OAuth Flow Selection. The integration-specific question is direction:

  • External system calls Salesforce: Select the OAuth flow based on user context - JWT Bearer for server-to-server, Web Server Flow for user-facing apps, Client Credentials for machine-to-machine without user context. See the full decision tree in Identity & SSO.
  • Salesforce calls external system: Always use Named Credentials with the appropriate auth protocol. Named Credentials handle token management, refresh, and secure credential storage. Do not build custom auth in Apex.

Quick Reference: Decision Summary Table

DecisionDefault AnswerOverride When
Sync vs AsyncAsync (safer, more scalable)User is blocked without immediate response
Middleware vs P2PP2P for < 4 systems4+ systems, complex transforms, governance needs
REST vs SOAPRESTLegacy WSDL requirement or Partner WSDL needed
ETL vs ELTETL (transform outside SF)Transformations are trivial or SF-native logic required
Which APIREST APIVolume > 2K (Bulk), events (Pub/Sub/CDC), multi-step (Composite)
TimingBatch (cheapest, simplest)Business requires fresher data
Error handlingRetry + DLQ + monitoringAdd circuit breaker for systemic failures
Auth flowJWT Bearer for S2S, Web Server for usersNo user context needed (Client Credentials)
EventsCDC for data changes, PE for business eventsCustom semantics or external publishing needed

Board presentation technique

When presenting decision rationale, use a simple three-part formula: “I chose [option] over [alternative] because [specific scenario reason]. The trade-off is [downside], which I mitigate by [mitigation].” This demonstrates you considered alternatives and understand consequences.



Sources

Personal study notes for the Salesforce CTA exam. Content compiled from VJ's study notes, official Salesforce documentation, community sources, and online publicly available content, then organized and presented with AI assistance. Not affiliated with Salesforce. © 2025–2026 VJ Srivastava.