---
schema_version: "1"
id: 6899f612e222f775f294a18490e7c4481d3f15a417ecbd475f73c23cba321324
title: Pattern Selection Guide
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/integration_patterns_and_practices/integ_pat_selection_guide.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_selection_guide.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: c43ccb06b70fdc092890be80fd37ab56c6cfedaeb4187cd7f510ae786fb57e6a
---
# Pattern Selection Guide

The selection matrix tables list the patterns and their key aspects to help you determine which pattern best fits your integration requirements. The patterns are categorized using these dimensions.

<table class="featureTable sort_table" summary="">


          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d1376e46">Aspect</th>

              <th class="featureTableHeader  " id="d1376e49">Description</th>

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d1376e46" data-title="Aspect">Type</td>

              <td class="entry" headers="d1376e49" data-title="Description">Specifies the style of integration: Process, Data, or Virtual.<ul class="ul bulletList">
                  <li class="li">Process—Process-based integrations are ways to integrate the processing
                    of functional flow across two or more applications. These integrations typically
                    involve a higher level of abstraction and complexity, especially for
                    transactionality and rollback.</li>

                  <li class="li">Data—Data integrations are the integration of the information used by
                    applications. These integrations can range from a simple table insert or upsert
                    to complex data updates requiring referential integrity and complex
                    translations.</li>

                  <li class="li">Virtual—Virtual integrations are where Salesforce interacts with data
                    that resides in an external system without the need to replicate the data that’s
                    within Salesforce. This type of integration is always triggered via an event
                    from the Salesforce platform such as a user action, workflow, search, or record
                    update, resulting in data integration with an external source in real time.</li>

                </ul>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d1376e46" data-title="Aspect">Timing</td>

              <td class="entry" headers="d1376e49" data-title="Description">Specifies the blocking (or non-blocking) nature of the integration.<ul class="ul bulletList">
                  <li class="li">Synchronous—Blocking or near-real-time requests are request/response
                    operations. The result is returned to the caller immediately via this
                    operation.<a name="fnsrc_1" href="#fntarg_1"><sup>1</sup></a>
                  </li>

                  <li class="li">Asynchronous—Nonblocking, queue, or message-based requests are invoked
                    by a one-way operation. The results and any faults are returned by invoking
                    other one-way operations.<a name="fnsrc_2" href="#fntarg_2"><sup>2</sup></a> The caller therefore makes the request
                    and continues without waiting for a response.</li>

                </ul>
              </td>

            </tr>

          </tbody>

        </table>

![Note](https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/images/icon_note.png)

#### Note

An integration can require an external middleware or integration solution (for example, Enterprise Service Bus) depending on which aspects apply to your integration scenario.

## Integrating Salesforce with Another System

This table lists the patterns and their key aspects to help you determine which pattern best fits your requirements when your integration scenario goes from Salesforce to another system.

| Type | Timing | Key Pattern to Consider |
| --- | --- | --- |
| Process Integration | Synchronous | [Remote Process Invocation—Request and Reply](https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_remote_process_invocation_state.htm) |
| Process Integration | Asynchronous | [Remote Process Invocation—Fire and Forget](https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_remote_process_invocation_fire_forget.htm) |
| Data Integration | Synchronous | [Remote Process Invocation—Request and Reply](https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_remote_process_invocation_state.htm) |
| Data Integration | Asynchronous | [UI Update Based on Data Changes](https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_ui_updates_from_data_changes.htm) |
| Virtual Integration | Synchronous | [Data Virtualization](https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_data_virtualization.htm) |

## Integrating Another System with Salesforce

This table lists the patterns and their key aspects to help you determine the pattern that best fits your requirements when your integration scenario goes from another system to Salesforce.

| Type | Timing | Key Pattern to Consider |
| --- | --- | --- |
| Process Integration | Synchronous | [Remote Call-In](https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_remote_call_in.htm) |
| Process Integration | Asynchronous | [Remote Call-In](https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_remote_call_in.htm) |
| Data Integration | Synchronous | [Remote Call-In](https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_remote_call_in.htm) |
| Data Integration | Asynchronous | [Batch Data Synchronization](https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_batch_data_sync.htm) |

[1](#fnsrc_1) “Synchronous vs. Asynchronous Communication in Applications Integration,” MuleSoft, last accessed October 13, 2021, [https://www.mulesoft.com/resources/esb/applications-integration](https://www.mulesoft.com/resources/esb/applications-integration "HTML (New Window)").

[2](#fnsrc_2) Ibid.