Running multiple Azure DevOps instances while trying to manage everything from a single Jira Cloud instance comes with several challenges. You want to keep all the instances isolated, whether in a unidirectional or bidirectional sync.
This is common when an MSP juggling client environments wants to connect multiple Azure DevOps setups to a single Jira for easy management.
Multiple Azure DevOps instances from different clients are connected to a single Jira Cloud instance owned by an MSP.
So the information from the Azure DevOps instances is flowing to dedicated projects in the Jira Cloud instance.
For example, data from Client A with flow to Project A, while Client B’s information will flow to Project B, and both projects are within the same instance.
At the same time, neither Client A nor Client B will get visibility into the data going to an instance not attached to them. So they both exist in isolated ecosystems while collaborating with the same MSP.
Whether you're dealing with different teams, clients, or business units, here's what you need to think through before managing work across Jira and multiple Azure DevOps instances.
Start by identifying why you have multiple Azure DevOps instances. You might be running separate instances for different departments, managing client projects in isolated environments, or maintaining regional instances for compliance reasons.
For example, a software consultancy might have one Azure DevOps instance per client while centralizing everything in Jira.
This will help you figure out the mapping framework that suits your specific use case.
Different Azure DevOps instances might not use the same custom fields or workflows. "Priority" in one instance could be "Severity" in another.
So, figuring out the field mapping and API configurations will help you connect the right fields and fetch the correct values.
Consider which Jira users need visibility into which Azure DevOps instances. Think about how to prevent accidental cross-contamination of sensitive client data. Role-based access controls will limit the level of permission every user has.
Decide whether changes need to flow both ways, or if Jira is the single source of truth. Bidirectional sync is more complex but gives teams autonomy. Unidirectional is simpler but might frustrate teams who can't update from their preferred tool.
You'll need to distinguish between work items from different instances in Jira. Tag or categorize items so reports make sense. Otherwise, you'll have a jumbled mess when trying to analyze data across teams or clients.
To implement this integration scenario, I’ll use an integration solution called Exalate. Exalate is a two-way integration solution that allows you to integrate Azure DevOps with Jira Cloud (and JSM). It also supports integration with Zendesk, Freshservice, Freshdesk, ServiceNow, Salesforce, GitHub, etc.
Why Exalate?
Let’s first map out the instances.
Assuming you want to map custom fields between ADO1 and JPROA, then map the status between ADO2 and JPROB, here is the implementation with Exalate.
|
issue.customFields."Mood".value = replica.customFields."CusMood".value |
The replica fetches the value of the CusMood custom field from Azure DevOps and stores it in the custom field named “Mood”.
|
def statusMap = [ "In Progress" : "Working", |
The values of the mapping can be changed to match the custom values you have for both instances.
Exalate also comes with a troubleshooting console to help you figure out what’s wrong with your connection. Away from your Exalate console, you can monitor the sync from your browser using the Sync Panel Chrome extension.
Here are the main use cases and benefits of mapping multiple Azure DevOps instances to a single Jira:
Organizations with separate Azure DevOps instances for different products, regions, or business units can consolidate everything into one Jira instance. Leadership gets a complete picture of all initiatives without logging into multiple systems.
For example, a tech company with three product lines, each using its own Azure DevOps instance, can track all roadmaps and dependencies in a single Jira portfolio.
On the flip side, service providers working with multiple clients who each have their own Jira instances can connect all of them to a central Azure DevOps.
This consolidates hundreds of bug reports and service requests from different client Jira Service Management instances into your development workflow without losing context or creating silos.
Managed service providers running dedicated Azure DevOps instances for each client can manage all projects from one Jira workspace. This makes resource allocation, capacity planning, and client reporting much simpler.
While engineering teams maintain autonomy in their Azure DevOps environments, business teams enforce consistent intake, approval, and prioritization workflows through Jira.
Executives, product managers, and business analysts only need to learn one system. They can track requests across all development teams without understanding the nuances of each Azure DevOps setup.
Companies with regional Azure DevOps instances for data residency or compliance can still provide global visibility through Jira Cloud. For example, European and US instances remain separate for regulatory reasons, but the business operates from one view.
After acquiring companies that each use Azure DevOps, you can connect all instances to your corporate Jira Cloud without forcing immediate consolidation. Teams keep their tools while you gain visibility and control.
Organizations running Jira Service Management can route incoming tickets to the appropriate Azure DevOps boards based on team, priority, or request type. Updates sync back automatically to keep clients informed while maintaining SLA tracking and reporting in JSM.
Happy to discuss if you have a similar use case; just drop it in the comments or request a call.