Aha! is a tool that helps teams set their strategy and link it to their planned work. Azure DevOps Services and Azure DevOps Server are tools that help you track projects and get work done. Aha! and Azure DevOps pair perfectly. By integrating Aha! and Azure DevOps, you can link your work to your strategic vision, share context with development teams, and track your progress in roadmaps and reports.
Click any of the following links to skip ahead:
- How to think about your integration
- Configure your integration
- Set up webhooks for two-way sync
- Add additional security (Azure DevOps Server)
- Test your integration
- Manage your integration
How to think about your integration
Aha! provides a two-way integration with Azure DevOps Services and Azure DevOps Server. This allows product teams to send their planned work from Aha! to their development team working in Azure DevOps.
Before configuring any integration for the first time, it is important to fully understand how to think about integrating Aha! with your development tool. Aha! should come first in the process —build out or import your records in Aha!, then send them to Azure DevOps. You can customize the ways that fields map to each other between the two tools, and even customize whether you want integrated records to update automatically, or only after your review.
Services or Server? The main difference between the two tools is this:
- Azure DevOps Services (formerly known as Visual Studio Team Services, or VSTS) is a cloud-based solution that is available through a web browser or IDE client.
- Azure DevOps Server (formerly known as Team Foundation Server, or TFS) is an on-premises offering.
This integration supports sending the following Aha! record types to Azure DevOps:
- Master features
The above Aha! record types can be mapped to any work item type in Azure DevOps, including both standard and sub-task types.
Configure your integration
To set up an integration with Azure DevOps, you need to be a workspace owner in Aha! for the workspace you wish to integrate. You will also need to have an Azure DevOps account that has proper access to create/edit records in the project you plan to integrate.
1. Navigate to Settings ⚙️> Workspace and press the + icon next to Integrations on the left side navigation bar. Depending on if you are integrating to the cloud or on-premise, select either Azure DevOps Services or Azure DevOps Server from the integrations 2.0 grouping.
2. This will launch the integration configuration wizard. The first step is to name your integration and optionally select a template if you have already created one. Click Save and continue.
3. Next, you will be prompted to authenticate with valid Azure DevOps Services or Azure DevOps Server credentials.
For Azure DevOps Services:
- You will need to create a personal access token within Azure DevOps Services.
Note: Step 4 of the Microsoft personal access token article includes an example screenshot with Custom defined selected. For Aha! purposes, Full access must be selected when you create a personal access token.
- Back in Aha!, you need to enter the subdomain of your Azure DevOps Services account. Your Azure DevOps Services URL will be in one of two formats:
Note: The subdomain will be "mycompany" for both formats.
- Next, enter the personal access token that was created.
For Azure DevOps Server:
- You will need to enter the server URL for your Azure DevOps Server account. Be sure to enter the entire server URL, including the collection part of the path with no trailing slash. For example, the following URL would be a valid entry:
- Next, enter the username and password that you use to login to your Azure DevOps Server account. If you are using a personal access token, enter that as the password. The username field should be ignored.
4. After authenticating, you will be prompted to choose a project and an area. Both of these lists are based on what your user has available to them in Azure DevOps.
5. Next comes record mappings. This step allows you to configure how Aha! records are mapped to your Azure DevOps records. The default mappings are based on what is most widely used across our customers. However, you are free to remove the default mappings and add your own to map records together based on what makes sense for your team and how you work.
6. Within record mappings, you have the option to also specify your field mappings. This is an advanced option within the configuration that allows you to customize how each field within the record is mapped between Aha! and Azure DevOps — as well as what relationship links exist for those records.
Note: If you have configured required fields in Azure DevOps, we recommend setting the Required flag on those fields in the custom layout associated to your product. This will ensure that any required fields are populated when records are created on the Aha! record creation form.
The relationship links are important to understand because they allow records created in your development system to be automatically imported into Aha! in certain use cases.
7. While not every user will need to customize their field mapping, you do need to define the way statuses are mapped. Within the field mapping section for each Aha! record, there is a line for Status with a gear ⚙️ icon at the far right. Click the gear ⚙️ icon to open up the status mapping window.
8. When mapping statuses, you will be presented with your Aha! status workflow for the record type on the left and your integrated system status workflow on the right. Matching values will map automatically. You can then manually rearrange statuses to your preferred mappings as needed. Drag and drop statuses on top of each other to create groupings, or drag them into different orders to rearrange. Click Done when you are ready to move on.
In the above screenshot, you can see that multiple statuses have been grouped together where the Aha! statuses of In design, Ready to develop, and In development are mapped to the single Azure DevOps status of Active.
9. With your records, optional field mappings, and statuses defined, you can click Save and continue to move onto the last step in the workflow. The Enable step allows you to specify how updates from Aha! are sent to your development system. To start with, you should choose to Approve outgoing changes. We recommend this option until the team is familiar with how the integration works, at which point you can choose to send changes automatically. The approval step allows teams that are new to the integration to validate what is being sent to their development system, which can help prevent unintentional changes from going through.
Set up webhooks for two-way sync
All sections of your integration configuration have been set. However, if you set any mappings to sync from Azure DevOps to Aha!, you will need to set up webhooks in Azure DevOps so that Aha! can receive updates. Each integration you add will require its own webhook to be added to Azure DevOps regardless if the project already has an Aha! webhook configured.
- Copy the webhook URL from the configuration page.
- In your Azure DevOps account, go to the project you want to integrate.
- Click the Project settings button in the bottom left and select the Service hooks page.
- Add a new service hook by clicking the + Create subscription button.
- Scroll to the option for the Web Hooks service and click Next.
- Under Trigger on this type of event, choose the Work item updated trigger from the dropdown menu. To reduce unnecessary webhooks, add filters for the specific area, item type, or tags that you plan to integrate with Aha! Click Next.
- On the Action page, under Settings, paste the webhook URL from Aha! into the URL field. You can leave the option fields unchanged and click Finish to create the subscription.
- Repeat this process, selecting Work item created in step 6.
Add additional security (Azure DevOps Server)
2.0 integrations with on-premises tools have the option to include a client certificate for added integration security.
To set a client certificate, open your Azure DevOps Server integration settings and click the More options icon in the upper right, then click Set client certificate. From here, enter the private key and certificate — we recommend creating a private key and client certificate specifically for this purpose — and click Save to save your changes.
Note: This feature will only provide additional security when the server that Aha! is communicating with validates the certificate. This is usually only possible with customer-configured on-premises integrations. Client certificate authentication is in addition to the standard username and password/token authentication and is not a replacement.
Test your integration
Congratulations! You're ready to test your new integration. To do this, send a feature to Azure DevOps by following these steps:
- Navigate to Features > Board.
- Open one of your features in Aha! and use the Send dropdown and select Send to Azure DevOps Services or Send to Azure DevOps Server.
You should see a link to the created Azure DevOps record appear on the Aha! feature after a few seconds. This will let you easily click into Rally to verify that everything was sent through correctly.
Note: You also have the ability of manually bulk sending a subset of features to Azure DevOps.
Manage your integration
If you have multiple Azure DevOps integrations that you need to manage, use the Manage integrations report, located in:
- Settings ⚙️> Account > Integrations for account-level integrations.
- Settings ⚙️> Workspace > Integrations for workspace-level integrations.
If you run into difficulties with your Azure DevOps integration, you can find answers to common problems in the Azure DevOps section of the knowledge base.
Note: On September 10, 2018, Microsoft renamed Visual Studio Team Services (VSTS) to Azure DevOps Services. As part of this change, the URL convention changed from mycompany.visualstudio.com to dev.azure.com/mycompany. Microsoft supports redirection from visualstudio.com URLs, so there are no broken links with existing accounts. Additionally, the next version of Team Foundation Server (TFS) will be called Azure DevOps Server. Please reference this announcement from Microsoft for further detail.