Skip to main content

Migrating Azure DevOps Variable Groups

Howdy Folks,

I was working on an application modernization project. And there was a requirement to migrate application deployments from one project to another in Azure DevOps. deployment pipelines were heavily dependent on variable groups. So, we wanted to migrate these variables group to the new project.

Couldn't find any solutions in internet for this, so came up with the below scripts. You can grab the scripts from the below GitHub URL.

DaniduWeerasinghe911/Migrate-Azure-DevOps-Variable-Groups: This Repo Include PowerShell Scripts relating to Migrating Azure DevOps Variable Groups (

Azure DevOps Variable Groups

Azure DevOps Variable Groups are a way to store and manage sets of variables that can be used across multiple pipelines in Azure DevOps. These variables can include secrets, connection strings, and other sensitive information that is needed for builds and releases.

Variable Groups provide a centralized way to manage these variables and ensure that they are consistent across all pipelines that use them. They can also be shared across multiple projects within Azure DevOps, making it easier to maintain a consistent set of variables across an organization.

Why Migrate Azure DevOps Variable Groups?

There are a few reasons why you might need to migrate Azure DevOps Variable Groups from one project to another:

  1. Reorganization of projects: If you are reorganizing your Azure DevOps projects and need to move Variable Groups from one project to another, you will need to migrate them.
  2. Consolidation of projects: If you are consolidating multiple Azure DevOps projects into a single project, you may need to migrate Variable Groups from the original projects into the consolidated project.
  3. Migration to a new organization: If you are migrating from one Azure DevOps organization to another, you will need to migrate Variable Groups along with your pipelines.

How to Migrate Azure DevOps Variable Groups

Migrating Azure DevOps Variable Groups can be a time-consuming and error-prone process if done manually. Fortunately, there are scripts available that can automate much of the process.

The scripts provided in the GitHub URL you provided are designed to migrate Variable Groups from one project to another within the same Azure DevOps organization. The scripts are written in PowerShell and use the Azure DevOps REST API to access and modify the Variable Groups.

The migration process involves the following steps:

  1. Export the Variable Groups: The first step is to export the Variable Groups from the source project using the Export-AzureDevOpsVariableGroups.ps1 script. This script will export all Variable Groups in the source project to a JSON file that can be used to import them into the target project.

  2. Import the Variable Groups: The next step is to import the Variable Groups into the target project using the Import-AzureDevOpsVariableGroups.ps1 script. This script will read the JSON file generated in step 1 and create new Variable Groups in the target project with the same names and values as the source Variable Groups.

  3. Update Pipeline References: Once the Variable Groups have been migrated to the target project, any pipelines that reference them will need to be updated to use the new Variable Groups. This can be done manually by editing the pipeline YAML files, or you can use the Update-AzureDevOpsPipelineVariableGroups.ps1 script provided in the GitHub URL to automate this process.


Migrating Azure DevOps Variable Groups can be a daunting task, but with the scripts provided in the GitHub URL you provided, the process can be automated and streamlined. By following the steps outlined in this blog post, you can easily migrate Variable Groups from one project to another within the same Azure DevOps organization.

As always dont forget to comment if you have any questions. Happy to help anyway I can. :)


Popular posts from this blog

Deploying an Automation Account with a Runbook and Schedule Using Bicep

Introduction Automation is a key component in many organizations' cloud strategy. Azure Automation allows you to automate the creation, deployment, and management of resources in your Azure environment. In this post, we will walk through the process of deploying an Automation Account with a Runbook and Schedule using Bicep, a new domain-specific language for deploying Azure resources. Intention My intention at the  end is to run a PowerShell  script to start and shutdown Azure VMs based on tag values. PowerShell  script that I have used is from below l ink.  And two  of me   collogue s ( Michael Turnley   and Saudh Mohomad helped to modify the  PowerShell  script. Prerequisites Before we begin, you will need the following: An Azure subscription The Azure CLI installed on your machine. The Azure Bicep extension for the Azure CLI Creating the Automation Account The first step in deploying an Automation Account with a Runbook and Schedule is to create the Aut

Updating Azure VM Data Disk Sizes

Summary Hope you are doing great, this time I came up with a simple azure DevOps solution for updating VM disk sizes. The current project that I'm in has a bunch of virtual machines. So, we need a way to update the VM disk with minimal administrative effort and changes.  In this scenario, we have used Bicep as the IAC language Azure DevOps pipelines YAML variable files  Here is the high-level workflow for a particular VM in the solution YAML Pipeline file got two workflows, firstly the VM build pipeline, and the second is the disk update one. If you focus on the green arrow and the purple arrow, basically I'm modifying the same bicep module file and passing the same set of variables. You may wonder why we cannot use the same flow to build the VM and update the disk later, that's because for the disk updates VM needs to be in a shutdown state, and other components in the 1st flow need the VM up and running especially the extension modules YAML Variable Files I have decided t

Securing Azure Services with Fetian FIDO

Hey Folks  Here again with another security topic with Fetian Fido. And once again Fetian devices proved their excellent quality and stability. For this I choose Fetian K33 -  AllinPass FIDO Security Key – FEITIAN ( and  K39 -  Single-button FIDO Security Keys | FEITIAN ( Use case  In an organization following changes needs to be implemented.  1. Update the password policy 2. Update the user session time out to 30 minutes Once these changes being implemented, the following issues need to be addressed 1. Users' complaint new passwords need to be so long 2. Users complain sessions time out makes them work so much slower with the longer passwords 3. Etc... Solution  One of my friends reached out to me to help solve this problem. All I could think of was using passwordless auth with FIDO devices. We have decided to use Fido2 keys for better security and flexibility for the users. The FIDO (Fast IDentity Online) Alliance helps to promote open authentication stand