# Release Pipeline Configuration \[Azure DevOps Server (TFS) - Azure DevOps Services (ADO)]

## Overview

Synchronizing Release Pipelines from Azure DevOps Server (TFS) to Azure DevOps Services (ADO) enables teams to modernize their delivery workflows and leverage cloud-based CI/CD capabilities. This integration ensures that Release Pipeline configurations, references, and dependent artifacts are consistently transferred to the target ADO project—eliminating manual re-creation, reducing configuration errors, and accelerating release readiness.

<code class="expression">space.vars.SITENAME</code> provides bidirectional integration between Azure DevOps Server (TFS) and Azure DevOps Services (ADO).

This page covers the bidirectional integration of Release Pipelines and their dependent artifacts.

## System Prerequisites

* Configuring [system pre-requisites](https://docs.opshub.com/v7.215/integrate/integration-prerequisites) is mandatory for successful system configuration.
* Check out the pre-requisites for [Azure DevOps Server and Azure DevOps Service](https://docs.opshub.com/v7.215/connectors/azure-devops#prerequisites)
* To understand the pre-requisites for enabling Release Pipeline synchronization, refer to the section: [Release Pipeline Pre-requisites](https://docs.opshub.com/v7.215/connectors/azure-devops#release-pipeline-entity)

## Integration Configuration

* Log in into <code class="expression">space.vars.SITENAME</code>. The default credentials are:\
  **User Name:** admin, **Password:** password

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-d7aeab072a12cb43c865cb1bc4aa81bf1b7c1e18%2FGetting_Started_With_Application_Image_1G_a.png?alt=media" alt="" width="700"></div>

> **Note**: **Proxy parameters:** Before you proceed with the configuration, check whether the system is behind a proxy server. If yes, then set up [proxy parameters](https://docs.opshub.com/v7.215/manage/administrator/proxy-setting) in <code class="expression">space.vars.SITENAME</code>.

* Since Release Pipeline may reference dependent artifacts such as **Agent Pools**, **Service Connections**, **Task Groups** and **Variable Groups**, we will configure mappings for these dependent artifacts as well, along with the Release Pipeline.
* Click **Integrate** on the top right corner of the screen and then click the plus \[+] icon.

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-b19d9fe7e591bbe5ca2605f5c79e6969cfc7cb5b%2FOverview_of_Integration_Image_1D.png?alt=media" alt="" width="1100"></div>

* The integration configuration page opens:
  * Integration Configuration for **Release Pipeline** Entity:
    * Enter a unique name for the integration. For example, this integration is named **Azure DevOps Server (TFS) – Azure DevOps Service (ADO) Release Pipeline Integration**.
    * Click plus \[+] icon adjacent to the System 1 and System 2 fields one by one to configure Azure DevOps Server (TFS) and Azure DevOps Service (ADO).

      <div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-835e5e0d6c049d36992b1d308a023c5d05badecd%2FTFS_ADO2.png?alt=media" alt="" width="1100"></div>

### Configure System(s)

* Configure Azure DevOps Server (TFS) –Azure DevOps Service (ADO) by following the steps given on [Azure DevOps Server/Service System Configuration](https://docs.opshub.com/v7.215/connectors/azure-devops#system-configuration).

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-a9be980c0a313923304dcf126c9a5ad14ce81f90%2FTFS_ADO1.png?alt=media" alt="" width="1100"></div>

* When you save the respective system configuration pages after configuring the systems, the systems will automatically be added to the integration. Proceed to adding projects and entities in the integration.

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-ad4c087d1c5ab0f4d8e3d89e06dd35739b114a08%2FTFS_ADO3.png?alt=media" alt="" width="1100"></div>

### Select Projects and Entities

* In the **Add Project(s) to Sync** section, select the projects you want to synchronize between Azure DevOps Server (TFS) and Azure DevOps Service (ADO) by clicking them.\
  Example: **ReleasePipeline1** from Azure DevOps Server (TFS) and **ReleasePipeline2** from Azure DevOps Service (ADO).
* Once the projects are selected, define the source project and target project:
  * **Forward (>)** → data flows from Azure DevOps Server (TFS) to Azure DevOps Service (ADO)
  * **Backward (<)** → data flows from Azure DevOps Service (ADO) to Azure DevOps Server (TFS)
  * **Bi-directional (<-->)** → data flows both ways
* Once the direction is selected, the arrows will turn grey. We have selected the bi-directional flow.

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-087d3db7ee906dc45ba0eecde4d1aaec58aa8f17%2FTFS_ADO4.png?alt=media" alt="" width="1100"></div>

* <code class="expression">space.vars.SITENAME</code> fetches entities available in both systems and shows them in entities list for both systems. From the **Select Entities to Sync** section, select the relevant entities for both systems.\
  Example: **Release Pipeline** from both Azure DevOps Server (TFS) and Azure DevOps Service (ADO).
* The next step is to define the fields that need to be integrated for every entity mapped. Once the entities are selected, click the plus icon \[+] adjacent to **Select fields to be Synced** to create the mapping between these two entities. You will now be navigated to Mapping Configuration screen.

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-2fad5c7d71e109070275a3ee09b395839c5943d3%2FTFS_ADO5.png?alt=media" alt="" width="1100"></div>

### Mapping Fields

#### Entity: Release Pipeline

* From the **Select Entities to Sync**, select the relevant entities for both systems.\
  In this case: **Release Pipeline** from Azure DevOps Server (TFS) and Azure DevOps Service (ADO) . Create a Mapping for this entity as well.
* Following details are automatically populated in the Mapping section: **Systems, Projects, Entities, and Mapping Name**. If you wish, change the name for the mapping in the **Name** field.
* Now, either click **Create from Scratch** to define the mapping from scratch or click **Auto Map** to automatically map all fields with the same name.
* Even if you select the **Auto Map**, <code class="expression">space.vars.SITENAME</code> will allow you to remove or add more fields before saving mapping.
* Since a Release Pipeline may reference dependent artifacts, ensure that **Agent Pool**, **Service Connection**, **Task Group** and **Variable Group** are mapped as reference fields.
* You can also import a mapping. Refer to Release Pipeline field mapping to import the default field mapping from Azure DevOps Services to Azure DevOps Server for the Release Pipeline entity.
  * You may further modify the imported mapping based on your use case.
* Once the mapping is created, click the **Create Mapping** to create & save this mapping as well.

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-6a65338a1195e902d687cfb62fcfbf45a8eb3693%2FTFS_ADO6.png?alt=media" alt="" width="1100"></div>

#### Dependent Artifacts:

**Agent Pool**

* Similar to selecting the **Release Pipeline** entity, select the **Agent Pool** entity from the **Select Projects and Entities** section. Refer to [Select Projects and Entities](#select-projects-and-entities) and follow the steps below to create the mapping for this entity.
* Now, either click **Create from Scratch** to define the mapping from scratch or click **Auto Map** to automatically map all fields with the same name.
* You can also import a mapping. Refer to Agent Pool field mapping to import the default field mapping from Azure DevOps Services to Azure DevOps Server for the Agent Pool entity.
  * You may further modify the imported mapping based on your use case.

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-5845f53d8584975eeb626627b6b69f99cf82fcc4%2FTFS_ADO7.png?alt=media" alt="" width="1100"></div>

**Service Connection**

* Similar to selecting the **Release Pipeline** entity, select the **Service Connection** entity from the **Select Projects and Entities** section. Refer to [Select Projects and Entities](#select-projects-and-entities) and follow the steps below to create the mapping for this entity.
* Now, either click **Create from Scratch** to define the mapping from scratch or click **Auto Map** to automatically map all fields with the same name.
* You can also import a mapping. Refer to Service Connection field mapping to import the default field mapping from Azure DevOps Services to Azure DevOps Server for the Service Connection entity.
  * You may further modify the imported mapping based on your use case.

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-b1df488276698aa20d5dd347cfd3666c72a1e021%2FTFS_ADO8.png?alt=media" alt="" width="1100"></div>

**Task Group**

* Similar to selecting the **Release Pipeline** entity, select the **Task Group** entity from the **Select Projects and Entities** section. Refer to [Select Projects and Entities](#select-projects-and-entities) and follow the steps below to create the mapping for this entity.
* Now, either click **Create from Scratch** to define the mapping from scratch or click **Auto Map** to automatically map all fields with the same name.
* You can also import a mapping. Refer to Task Group field mapping to import the default field mapping from Azure DevOps Services to Azure DevOps Server for the Task Group entity.
  * You may further modify the imported mapping based on your use case.

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-df110cfb71d2b27fe4befbbb3d07260046958d96%2FTFS_ADO9.png?alt=media" alt="" width="1100"></div>

**Variable Group**

* Similar to selecting the **Release Pipeline** entity, select the **Variable Group** entity from the **Select Projects and Entities** section. Refer to [Select Projects and Entities](#select-projects-and-entities) and follow the steps below to create the mapping for this entity.
* Now, either click **Create from Scratch** to define the mapping from scratch or click **Auto Map** to automatically map all fields with the same name.
* You can also import a mapping. Refer to Variable Group field mapping to import the default field mapping from Azure DevOps Services to Azure DevOps Server for the Variable Group entity.
  * You may further modify the imported mapping based on your use case.

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-5326324c9538bee5b38cfea71e3a0e31d86ecf0f%2FTFS_ADO15.png?alt=media" alt="" width="1100"></div>

### Save Integration

* To save the integration in active mode, slide the **Activate Integration** button to the right.
* As the final step, click **Save** to save the integration.

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-e0b59a1a6d5e90a7148f44cf35e1665316eff413%2FTFS_ADO10.png?alt=media" alt="" width="1100"></div>

* The integration will be created. You will also get a confirmation pop-up at the bottom of the screen, and the integration will be listed in the integrations list.

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-d182be5b081fd36724606299ad46b60c8125e0ce%2FTFS_ADO11.png?alt=media" alt="" width="1100"></div>

### Activate and Test the Integration

* First, activate the integration for dependent artifacts such as **Agent Pool**, **Service Connection**, **Task Group** and **Variable Group**. Test the integration by synchronizing these dependent artifacts between the configured Azure DevOps Server (TFS) and Azure DevOps Service (ADO) projects.

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-6d0576ddae668b18a1e6a39d1166955f2434b073%2FTFS_ADO12.png?alt=media" alt="" width="1100"></div>

* After the synchronization of dependent artifacts is successfully completed, activate the **Release Pipeline** integration and test it by synchronizing the Release Pipeline entity.

<div align="center"><img src="https://818964384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK5eA7qMDBFu0HHHMDehi%2Fuploads%2Fgit-blob-64a17be91939fdd4e85e5d6ba8c0986fe036378b%2FTFS_ADO13.png?alt=media" alt="" width="1100"></div>

* Test the integration by synchronizing data between the specified Azure DevOps Server (TFS) and Azure DevOps Service (ADO) projects.

> **Note**: Do not use the **integration user credentials** to create entities in the systems, as the integration will not work in that case.

* Create/Update event in the source system and check whether the event synchronizes to the target system. Wait for one minute for the data to synchronize.
* If you face any issue, please refer to [possible reasons and their fix](https://docs.opshub.com/v7.215/help-center-index/faqs/general-faqs).
