> For the complete documentation index, see [llms.txt](https://docs.getint.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.getint.io/guides/integration-synchronization/non-jira-connectors/salesforce-azure-devops-integration.md).

# Salesforce Azure DevOps integration

### Integrating Salesforce and Azure DevOps <a href="#integrating-salesforce-and-azure-devops" id="integrating-salesforce-and-azure-devops"></a>

Connecting Salesforce with Azure DevOps links customer records with engineering work, keeping sales, support, and development teams aligned. Cases raised by customers reach the development backlog without manual re-entry, and progress made by engineers flows back to the teams that own the customer relationship. Follow this guide to set up bidirectional synchronization between your Salesforce org and your Azure DevOps organization.

### Salesforce Azure DevOps Licensing Model <a href="#salesforce-azure-devops-licensing-model" id="salesforce-azure-devops-licensing-model"></a>

The Getint licensing model for Salesforce and Azure DevOps covers different integration needs. Here is an overview:

#### Standard Licensing <a href="#standard-licensing" id="standard-licensing"></a>

* For non-Jira connectors, we offer a simple license tied to a fixed fee depending on the apps you are syncing.
* This license covers the integration between 1 instance A (Salesforce) and 1 instance B (Azure DevOps).
* No hidden costs. You can sync an unlimited number of work items between these instances.

You can find more information about our pricing structure here: [Getint Pricing](https://www.getint.io/pricing).

#### Network License <a href="#network-license" id="network-license"></a>

* For managed services companies or organizations integrating three or more instances (whether the tools are the same or different), Getint offers a **Network License**. This custom license covers a specific number of connections (for example, up to 10 instances) and imposes no restrictions on the tools involved. You can also swap the integrated tools while the license remains active.

For more details on licensing, visit our [Licensing Page](https://docs.getint.io/licensing).

#### Salesforce API Requirements <a href="#salesforce-api-requirements" id="salesforce-api-requirements"></a>

Salesforce requires API access for integration. API access is enabled by default in the following editions:

* Enterprise Edition
* Unlimited Edition
* Performance Edition
* Developer Edition

API access is **NOT enabled** by default in:

* Group Edition
* Essentials Edition
* Professional Edition

{% hint style="info" %}
If you are using a Salesforce edition without API access enabled, contact Salesforce support or refer to the Salesforce Help & Training Community.
{% endhint %}

&#x20;

#### Requirements to Build Your Integration <a href="#requirements-to-build-your-integration" id="requirements-to-build-your-integration"></a>

* **Deployment Options**: Getint provides two ways to host your integration, a managed [SaaS platform](https://app.live.getint.io/) or a self-hosted On-premise version. More information about Getint On-premise [here](https://docs.getint.io/getting-started-with-the-platform/deployment-options/on-premise-deployment).
* **Authentication**: Azure DevOps requires a Personal Access Token, and Salesforce requires OAuth credentials (`client_id` and `client_secret`). You can find the steps to generate credentials for both connectors here: [Connection Guide](https://docs.getint.io/guides/quickstart/connection#azure-devops).
* **Service Accounts**: Comments are attributed to the user who created the connection, so we recommend using dedicated **Service Accounts** on both sides to keep automated updates distinct from individual user activity.

***

### Setting Up Your Salesforce Azure DevOps Integration <a href="#setting-up-your-salesforce-azure-devops-integration" id="setting-up-your-salesforce-azure-devops-integration"></a>

#### 1. Access the Getint App <a href="#id-1.-access-the-getint-app" id="id-1.-access-the-getint-app"></a>

* Log in at [app.live.getint.io](http://app.live.getint.io/). If you do not have an account, click **Sign up** to create one.
* Enter your details, select the apps you want to connect, and click **Create new workspace**.
* After you create the workspace, go to it to launch Getint.

#### 2. Create an Integration <a href="#id-2.-create-an-integration" id="id-2.-create-an-integration"></a>

* Go to **Workflows** (lightning bolt icon) and click **Create Integration**. From this menu, select **Continuous Sync** or **Data Migration**.

#### 3. Generate an Azure DevOps Token <a href="#id-3.-generate-an-azure-devops-token" id="id-3.-generate-an-azure-devops-token"></a>

To integrate Azure DevOps (Server or Cloud), you must provide a token with the necessary permissions. Follow the steps below to generate one:

* Log in to your Azure DevOps organization.
* Open **User Settings** from the profile menu.
* Select **Personal Access Tokens** from the left sidebar.
* Click **New Token** and enter a name for the token.
* Set the expiration and select the appropriate scopes:
  * **Work Items**: Read & Write
  * **Project and Team**: Read & Write
  * **Graph**: Read (required for accurate user data retrieval)
  * **Code**: Read (if you are syncing repositories with the Git Connector)
* Click **Create**, then copy and securely store the generated token. This token authenticates and authorizes Getint to access your Azure DevOps organization.
* When configuring the Azure DevOps connection details in Getint, provide the generated token as the password.

{% embed url="<https://www.loom.com/share/de71aa8b806340039b5931b0c9c4c74d>" %}

#### 4. Generate Salesforce Credentials <a href="#id-4.-generate-salesforce-credentials" id="id-4.-generate-salesforce-credentials"></a>

Salesforce uses OAuth authentication. You grant permissions to Getint through an External Client App, and the resulting credentials are stored in a dedicated Getint database for use by that user only.

* Sign in to Salesforce, click the **Cog** icon in the upper-right corner, and select **Setup**.
* Go to **Platform Tools** > **Apps** > **External Client Apps**, then open the **External Client App Manager**.
* Select **New External Client App** and enter a unique name, your email address, and the API name.
* Enable **OAuth**:
  * Scroll down and turn on OAuth.
  * Enter the Callback URL: `https://login.salesforce.com/services/oauth2/callback`.
  * Select the OAuth scope **Manage user data via APIs (API)**.
* In the **Flow Enablement** section, activate **Client Credentials Flow**, then turn off all other options in the **Security** section.
* Click **Create** at the bottom of the page. Once the app exists, go back into its settings to continue.
* Select **Edit**, open **OAuth Policies**, enable **Client Credentials Flow**, and enter the username shown under **Personal Information** in your profile. Click **Save**.
* Open the **Settings** tab, select **Consumer Key and Secret**, complete the verification screen, and copy the **Consumer Key** (`client_id`) and **Consumer Secret** (`client_secret`).

{% hint style="info" %}
Salesforce requires HTTPS for the Callback URL.
{% endhint %}

{% embed url="<https://www.loom.com/share/95ee027dd94b413f9046b1f1217cc55f>" %}

#### 5. Connect to Azure DevOps <a href="#id-5.-connect-to-azure-devops" id="id-5.-connect-to-azure-devops"></a>

* In Getint, click **Connect App** and choose Azure DevOps, then select **Create a new connection**. Enter the URL for the connection and click **Next**.
* Provide a name for the connection, enter your email, and paste the token generated in the previous steps. Click **Add** to complete.
* Once the connection is established, select the Azure DevOps project you want to synchronize from the dropdown menu and click **Connect**.

{% hint style="warning" %}
You can only select one project when syncing with Salesforce. Selecting multiple projects will cause Salesforce to disappear from your available integration options.
{% endhint %}

&#x20;

#### 6. Connect to Salesforce <a href="#id-6.-connect-to-salesforce" id="id-6.-connect-to-salesforce"></a>

* Click **Connect App** and choose Salesforce. Enter your Salesforce instance URL in the **URL** field and click **Next**.
* Assign a name to the connection and enter the **client\_id** and **client\_secret** credentials.
* **Add** the connection and select it.

{% hint style="info" %}
Use the correct URL format to connect to your instance:

* `https://YOUR_INSTANCE_NAME.develop.lightning.force.com`
* `https://YOUR_INSTANCE_NAME.develop.my.salesforce.com`
  {% endhint %}

&#x20;

#### 7. Configure Type Mapping <a href="#id-7.-configure-type-mapping" id="id-7.-configure-type-mapping"></a>

* **Quick Build**: Automatically map fields and types between applications with this feature.
* **Manual Mapping**: Use this option for full control over the integration. Click **+ Add Type Mapping** to define how your types map between systems. This could include:
  * Salesforce *Case* to Azure DevOps *Bug*.
  * Salesforce *Account* to Azure DevOps *Task*.

&#x20;

#### 8. Field Mapping <a href="#id-8.-field-mapping" id="id-8.-field-mapping"></a>

* Review or manually map fields within mapped types, including **subject**, **description**, **priority**, and **assignees**.
* Define the synchronization flow for each field, using the arrows in the middle and selecting **Apply**.

{% hint style="warning" %}
**Inline images** are not supported for the **Description** field.
{% endhint %}

#### 9. Assignee Mapping <a href="#id-9.-assignee-mapping" id="id-9.-assignee-mapping"></a>

* Use the assignee mapping option to match Salesforce users to Azure DevOps users, which keeps ownership of work items accurate on both sides. For more details, visit our doc: [Assignees (users) mapping](https://docs.getint.io/getintio-platform/workflows/assignees-users-mapping).

#### 10. Status Mapping <a href="#id-10.-status-mapping" id="id-10.-status-mapping"></a>

* Go to the **Status** tab and map status fields to align between Salesforce and Azure DevOps. For example, Salesforce *New* could be mapped to Azure DevOps *New*, Salesforce *Working* to Azure DevOps *Active*, and Salesforce *Closed* to Azure DevOps *Done*.
* You can also configure the status direction to support unidirectional transitions instead of bidirectional updates.

#### 11. How to Manage Comments & Attachments: <a href="#id-11.-how-to-manage-comments-and-attachments" id="id-11.-how-to-manage-comments-and-attachments"></a>

* The **Comments & Attachments** tab is enabled by default. You can configure these settings to match your organization's needs, such as selecting unidirectional or bidirectional sync and filtering by criteria like creation date, author, or visibility (public/private).
* Use the **Customize comments creation** setting to manage how comments are processed. You can set comments to Public or Private, or choose to skip them entirely.
* To synchronize attachments, toggle on the **Synchronize attachments** setting and choose the sync direction between bidirectional, App A (left), or App B (right).

{% hint style="info" %}
For a full overview of filtering logic, AND/OR conditions, and date-based filtering, refer to the [Comments Filtering documentation](https://docs.getint.io/getintio-platform/workflows/filtering-items-for-integration-in-getint/how-to-filter-comments).
{% endhint %}

#### 12. Advanced Tab <a href="#id-12.-advanced-tab" id="id-12.-advanced-tab"></a>

* Enable **Customize create/update actions** to manage item synchronization. This allows for specific rules, such as one-way creation for the left application combined with bidirectional updates.

#### 13. Filtering: <a href="#id-13.-filtering" id="id-13.-filtering"></a>

It is possible to filter the synchronization to have it customized for your needs and requirements. Please see the doc [Items Filtering](https://docs.getint.io/getintio-platform/workflows/items-filtering) for more details.

**UI Filtering Option:**

* Click on the filtering icon near the app icon in your integration. This will apply to that side of the integration.
* Select if the filtering applies to *All*, *New*, and *Synced* items.
* Note that if the option **New items** is selected, the filtering will apply only to the new items, and the already synced items will continue to sync and update. If the option **Synced items** is selected, only the already synced items will be updated based on that filter.
* Choose the options and add the value for the filter. It is possible to filter more than one option for each field.
* Select **Apply** after creating the filters and **Save** the integration.

#### 14. Test the Integration <a href="#id-14.-test-the-integration" id="id-14.-test-the-integration"></a>

Before deploying the integration to your production environment, perform a verification cycle to confirm data flows correctly between Salesforce and Azure DevOps.

**Verification Steps**

1. **Initial Creation:**
   * Create a test case in Salesforce.
   * Create a test work item in Azure DevOps.
   * Confirm that the counterparts appear on the opposite side according to your mapping rules.
2. **Field & Feature Validation:**
   * **Updates**: Modify a mapped field and confirm the change is reflected in the linked item.
   * **Comments & Attachments**: Add a comment or upload a file to verify the sync direction and visibility.
   * **Status Transitions**: Change the status on one side and verify the linked item updates accordingly.
3. **Audit Logs:**
   * Access the **Logs** tab within the platform.
   * Review the entries to confirm successful executions and identify any potential mapping errors or permission conflicts.

***

### Conclusion <a href="#conclusion" id="conclusion"></a>

Following this guide lets you set up the Salesforce-Azure DevOps integration with Getint. This configuration synchronizes cases, work items, comments, and status changes across your CRM and your development platform, so customer-facing teams and engineering teams work from the same information.

For further assistance, please contact us at the [Support Center](https://getint.io/help-center) or [Schedule a Demo](https://calendly.com/d/cpws-jb2-8xx/demo-call-all-team).

<figure><img src="https://4106311246-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MR6Z9V8zLATPQPOGSDf%2Fuploads%2F9OSEDBl869gRue9mQAwv%2FGetint%20Yellow%20Banner.png?alt=media&amp;token=9cc42142-6e48-4931-8fd5-cbf7dcf4cdc1" alt=""><figcaption><p><a href="https://calendly.com/d/cpws-jb2-8xx/demo-call-all-team
">Start your integration journey. Schedule a free consultation with our Getint Integration Expert today!</a></p></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.getint.io/guides/integration-synchronization/non-jira-connectors/salesforce-azure-devops-integration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
