As more and more information flows through organizations, teams working on different platforms can benefit hugely by sharing this data. What to share and when to share it are at times tough to figure out, and filtering the correct data is also a challenge. Fortunately, integrating systems is the right way to solve these problems. In this blog post, we’re going to show you how to set up a Zendesk Azure DevOps integration, helping your Zendesk and Azure DevOps teams work together seamlessly.
Here’s what we’re going to cover in this blog post:
- Why Integrate Zendesk and Azure DevOps?
- Choosing the Right Technology for a Zendesk Azure DevOps Integration
- How to Set up a Zendesk Azure DevOps Integration (the Step-by-Step Process)
- Common Use Cases
Why Integrate Zendesk and Azure DevOps?
What is Zendesk?
Zendesk is a customer support platform offering features galore. It handles all forms of communication with your customers and lets you monitor and record everything. You can easily track all the information and generate metrics, helping you build and strengthen relationships.
What is Azure DevOps?
Azure DevOps is a platform for managing every aspect of the software development process. It covers version control, builds automation, and integrates these with comprehensive project management features. It is especially well-integrated with Microsoft Visual Studio, but can easily be used with other platforms.
Why Integrate Zendesk with Azure DevOps?
Teams that work separately often have information that is useful to the other. A development team using Azure DevOps can benefit from customer feedback collected by a team using Zendesk. The customer support team can also benefit from talking to developers to help solve customer issues.
Some of this mutually beneficial information can be shared manually, but that is error-prone and slow. An automated solution can exchange data regularly and reliably, making sure all items that match the right conditions are exchanged.
With the right setup, you can help your teams make the best use of the data available within the organization and can do so with minimal effort. Once an automated system is in place it will carry on doing your job without getting in your way.
Choosing the Right Technology for a Zendesk Azure DevOps Integration
There are a few criteria you should take into consideration when picking an integration solution.
Teams will benefit from decentralized integration and be able to have full control over what data they want to share with the other side without having to leave their familiar environment.
The integration also needs to be reliable. Sometimes downtime will happen, but if so the system should be robust enough to recover. Errors on either end should not cause problems on the other.
Flexibility is yet another important factor. Teams should be able to define how they want to share data and set the conditions that trigger data exchange. This makes the way data is exchanged customizable for each side.
The solution we use for the Zendesk Azure DevOps integration here is called Exalate. Exalate was designed with these criteria in mind and aims to provide the most flexible sync between teams across companies. Once you’ve set it up, it can sit in the background and do the hard work for you.
How to Set up a Zendesk Azure DevOps Integration (the Step-by-Step Process)
Now, let’s set up the integration. You’ll start by installing Exalate on both platforms. Then, you’ll create a connection. Finally, you’ll configure the connection to share what you want, and decide on the conditions that trigger sharing.
Step 1: Install Exalate on Zendesk
In Zendesk, click the cog icon in the left side menu. That takes you to the admin screen. Click on “Marketplace” in the “Apps” menu.
Type “Exalate” into the marketplace search field and you’ll see the app appear.
Click on the icon, then click the install button on the next screen.
You’ll see a popup asking you to enter your Zendesk instance URL. Do so, then click “Install”.
Next, you’ll be taken back to your Zendesk account. You can change the app title, and enable restrictions if necessary, or you can just accept the defaults. Either way, click the blue “Install” button to continue. After Exalate installs, you’ll see its icon in the left side menu at the bottom. Click the icon now.
When you first use Exalate, you need to grant it permission to access your data. Click “Allow” to do so. After that, there’s a registration screen where you need to enter your email address and other details. After clicking the button to submit them, you’ll be sent a verification mail. Click the link in it.
You’ll be taken back to Zendesk and should now be successfully verified. You’re free to use Exalate for 30 days before deciding whether to continue with it. Click “Continue”, and you’re done.
Step 2: Install Exalate on Azure DevOps
Next, you’ll install Exalate on Azure DevOps via the marketplace. It is also possible to do this via docker, so please check out the documentation if you prefer to do that.
Log in to Azure as an admin, then look at the icons at the top right of the screen.
Click the one that looks like a shopping bag, and select “Browse marketplace”. In the marketplace, search for “Exalate”.
Click the app when it appears, then click “Get”. On the next screen, confirm your organization is listed correctly, then click the blue “Install” button. When it’s ready, click “Proceed to organization”.
You can now reach Exlate from within Azure DevOps by clicking the marketplace icon, and selecting “Manage extensions”. You’ll see Exalate listed in the left-hand menu towards the bottom.
The first time you access Exalate, you need to provide a personal access token. To create one, open the settings menu at the top right and click “Personal access tokens”.
Click the “New Token” button. On the form that appears, you need to make sure “Read, write & manage” in the “Work items” section is ticked. It should be by default. You might want to extend the expiration date too, otherwise, you’ll have to create a new token every 30 days.
Click the “Create” button. When the token is created, you need to copy and paste it somewhere straight away, as there is no way to access it if you don’t. Click “Close” after doing so.
Now, back in the Exalate screen, paste in your token. As with Zendesk, enter your email and other details, click the “Agree and submit” button, and wait until you receive an email. Click the verification link, and you are set up in Azure DevOps.
Step 3: Connect Zendesk and Azure DevOps
Now that Exalate is installed on both platforms, you can create a connection between them. You can do this from either side. I’ll use Azure in this guide.
Click “Connections” in Exalate’s left side menu. Then click the green “Initiate connection” button.
On the next screen, enter your destination instance’s URL in the text field. Since I’m using Azure DevOps, that’s the URL of my Zendesk instance. After you enter the URL, Exalate will check that it can reach the destination instance. If it can, more fields will appear.
Now you need to decide whether to set up the connection with basic, visual, or scripting mode. Basic mode allows you to set up a connection in an easy manner and is useful for basic synchronization needs. Visual mode allows you to easily configure the connection using simple controls. Scripting mode is more advanced and needs you to work with the ‘Groovy’ scripting language, but it allows you more control.
Choose the mode and then look at steps 4 and 5 to see how you can configure what your connection shares, and when synchronization happens.
Continue with the Basic Mode
After clicking “Next” you will be asked to select the project from a drop-down list. This will be a project on the Azure DevOps side.
Click next. You will now need to verify if you have admin access on the Zendesk side.
Click “Yes, I have admin access” since we already have the access. In case you don’t have access, you will be asked to manually copy-paste a code on the Zendesk side.
After this, click “Initiate”. This will redirect you to the Zendesk side automatically.
Since Zendesk does not have any projects, your connection is now successfully established and you can start syncing your first ticket right away.
Enter the ticket key and click “Exalate”.
It takes a while for the ticket to be synced. Once done, you will see the status of your synchronization as “synchronized”.
Continue with the Visual Mode
After clicking “Next” for the visual mode, you can name each side of the connection. Exalate will combine the names into an overall connection name that you can optionally edit. You can also add a description. It’s a very good idea to do, as it will help your team keep track of things if they create multiple connections.
Click “Next” and then “Verify admin access” to ensure Exalate can access the other side.
Click “Accept” and after the verification is successful click “Initiate”.
Now that the connection has been successfully established, you can start to configure the connection directly by clicking on the “Configure Sync” button or by editing the connection later.
After clicking the button, you’ll see the “Scope” screen. Here you can choose which entities are synced. If you click on the filter buttons on either side of the connection, another popup will appear.
On this popup, you can specify the properties of items you want to synchronize. These include tags, status, type, priority, and many more. Click “Save” when you’re ready.
You can also choose the sync method in each direction using the drop-down boxes in the middle of the popup. Synchronization can be manual, automatic, or disabled. That lets you make the connection uni- or bi-directional.
Click “Next” when you’re finished and you’ll be taken to the rules screen. Here you can see how various attributes on synced entities map to each other. If you don’t want an attribute mapped, click its delete icon, and that mapping will be removed. You can also click the edit icon to change which attributes are mapped to each other.
When you’ve finished here, click “Publish”. You’ll see your new connection listed on the connections screen.
Continue with the Script Mode
If you choose script mode rather than visual mode, then the first thing you need to do is give a name to the connection just like you did for the visual mode. After that, select the project on the Azure DevOps side from the drop-down list.
After you click “Initiate”, Exalate will generate an invitation code.
Click the “Copy invitation code” button to copy it to your clipboard and paste it somewhere safe. Then, click the “Go to remote” button and you’ll be taken to the other side of the connection, Zendesk in this case.
In Zendesk, click the “Accept invitation” button, then paste the code into the field provided and click “Next”.
The connection will now be created. You can click the configure button to immediately proceed to the next steps or edit the connection later.
Step 4: Configure Your Connection to Determine What Information Gets Shared
To edit a connection, click the edit button on its entry in the connections list. You’re then taken to the “Rules” screen. There you’ll see a list of incoming and outgoing sync rules.
These define what fields are mapped to one another when items are synchronized. If you don’t want to sync a particular field, just delete its line. You can also edit these lines to route fields differently, for example, you might want the ‘type’ in Azure DevOps to match the status in Zendesk.
You can also set specific values for fields. For example, the description could be set as issue.description = “Synced from Zendesk”.
Step 5: Set Up Automated Synchronization Triggers
From the edit connection screen, click the “Triggers” heading. Here you can set the conditions for synchronization. Items that match these rules are copied between platforms.
Click the “Create trigger” button to get started. You’ll see the “Add trigger” screen. There’s a drop-down box at the top to choose the entity type the trigger applies to. Below that is the query field. This is the important bit. You need to write a query that picks out the entities you want.
In the notes box, you can write text describing what your trigger does and why. That can be a big help if there are lots of connections and triggers in your setup.
There’s also a switch at the bottom, which you’ll need to set to active for the connection to work. That helps you switch triggers on and off as needed. Click the “Add” button when you’re done.
The trigger is now listed, and can be edited, deleted or switched on and off easily.
Step 6: Start Synchronizing Tickets
Now that your connection is set up, you can sit back and wait for tickets to be synchronized. Synchronization happens regularly, but not immediately, so make a coffee and wait before checking back in.
Common Use Cases
Customer Support and Engineering
Developers working in Azure DevOps will use it to assign issues and track progress. Customer support operatives will talk to customers, and log bugs in Zendesk. The customer support team can mark issues to be sent to engineering, and Exalate can detect this and synchronize them.
The synchronization will be selective and only pass on the info developers need to work on the problem. When an issue is fixed, it can be marked as such, and Exalate can automatically send the solution back from Azure DevOps to Zendesk.
Marketing and R&D
A marketing team might use Zendesk to track their interactions with customers and use analytics to tally the most requested features. Exalate can synchronize these with an Azure DevOps system used by an R&D department.
The R&D department can investigate the customer needs, and see how they can be worked into new or existing products. Their suggestions can be automatically synced back with Zendesk, and the Marketing team can see how the customer base reacts to their ideas.
In this blog post, we walked you through a step-by-step process of setting up a Zendesk Azure DevOps integration. Now that your platforms are synchronized, you can enjoy the benefits of information sharing without further work. If either of your teams wants to make a change, they can do so quickly and easily. You can also edit and refine the synchronization further, and create more connections for different tasks if needed.