SD Elements
Microsoft Azure DevOps (Team Foundation Server)
- Technical requirements
- Default assigned fields
- Behavior
- Default Priority Mapping
- Set up OAuth 2.0 (Microsoft Entra ID)
- Switch a connection to OAuth 2.0 (Microsoft Entra ID)
- Keep a Personal Access Token for now
- Connection details
- Credentials
- Countermeasures to Synchronize
- Project details
- Advanced Microsoft Azure DevOps configuration
- Synchronization
- Filter Countermeasures
- Advanced Issue Tracker options
- Sync frequency
Technical requirements
The following requirements must be met to integrate Microsoft Azure DevOps with SD Elements. They depend on the Authentication Method of the connection: Password or Personal Access Token (the default) or OAuth 2.0 (Microsoft Entra ID).
Password or Personal Access Token
-
Team Foundation Server version 2018 and later.
-
NTLM or Basic Authentication must be enabled
-
The user configured for the connection should:
-
Be a member of the project
-
Have permission to create, tag, transition and close work items.
-
Specific permissions:
-
Edit project-level information - Allow
-
Create tag definition - Allow
-
-
OAuth 2.0 (Microsoft Entra ID)
SD Elements signs in to Azure DevOps as an app registered in Microsoft Entra ID, not as a user, so the requirements for the Password or Personal Access Token method above do not apply.
-
The server is Azure DevOps Services, at
dev.azure.comor at the organization’s own<organization>.visualstudio.comaddress. A connection to any other address, such as an on-premise server, uses Password or Personal Access Token. -
The connection uses the HTTPS protocol, with Enforce Certificate Validation turned on. That option is in the connection’s advanced options.
-
An app is registered in Microsoft Entra ID.
-
The registration needs no redirect URI.
-
In a default tenant, the registration needs no API permissions and no admin consent.
-
-
The app has a client secret.
-
Microsoft prefers certificates or federated credentials to client secrets for apps. SD Elements does not support them yet.
-
-
The Azure DevOps organization is connected to the Microsoft Entra tenant that holds the app.
-
In Azure DevOps, the app is:
-
Added to the organization with Basic access. Stakeholder access is not enough: SD Elements always sets a tag on the work items it creates, and an app with Stakeholder access cannot create tags.
-
Added to the project’s Contributors group.
-
-
The computer that runs the integration can reach
login.microsoftonline.com, as well as Azure DevOps. With an on-premise SD Elements, this is the SD Elements server. For an integration that runs through a Remote Integration Agent, it is the computer that runs the agent.
| Microsoft bills an app with Basic access once for each organization it is added to. Microsoft does not say whether the app counts toward the organization’s free Basic users, so ask Microsoft how the app affects your organization’s billing. |
Default assigned fields
The following fields are set by default:
-
Title
-
Description
-
Priority
Behavior
The integration supports the following:
-
Two-way status synchronization
| With OAuth 2.0 (Microsoft Entra ID), a status-change note for a change made by the app shows the app’s name, and the Object ID of its enterprise application (service principal) where a person’s email would appear. SD Elements renews the app’s token before it expires, so a long sync is not interrupted. |
Default Priority Mapping
Microsoft Azure DevOps (TFS) |
|
9-10 |
1 |
7-8 |
2 |
3-6 |
3 |
1-2 |
4 |
Set up OAuth 2.0 (Microsoft Entra ID)
Set up a connection that signs in as an app. To change an existing connection, see Switch a connection to OAuth 2.0. For errors, see Common errors.
-
The user has the permission Global Roles→Integration→Edit Issue Tracker connections.
-
The technical requirements for OAuth 2.0 (Microsoft Entra ID) above are met.
-
Register an app in Microsoft Entra ID for SD Elements. No redirect URI is needed.
-
Create a client secret for the app. Copy the secret’s Value when it is shown, and note when the secret expires.
-
Copy the app’s Application (client) ID and the Directory (tenant) ID.
-
Connect the Azure DevOps organization to the Microsoft Entra tenant that holds the app, if it is not connected yet.
-
Add the app to the organization with Basic access.
-
Add the app to the project’s Contributors group.
-
From the gear icon menu, select Integration.
-
Add a new Issue Tracker connection for Microsoft Azure DevOps (Team Foundation Server), or edit an existing one. See System Issue Tracker connectors.
-
Enter
dev.azure.comas the Server, the name of the Azure DevOps organization as the Context Root, and select HTTPS as the Protocol. Leave Collection Name empty. If the organization has its own<organization>.visualstudio.comaddress, you can enter that address as the Server instead, and leave Context Root and Collection Name empty. -
For Authentication Method, select OAuth 2.0 (Microsoft Entra ID).
-
Enter the Azure DevOps (TFS) Tenant ID, Azure DevOps (TFS) Client ID and Azure DevOps (TFS) Client Secret. For the secret, enter its Value, not its ID.
-
Click Test Connection at the bottom-left of the dialog.
-
Click Create or Done at the bottom of the form.
Project connections do not have these fields. A project Issue Tracker connection uses the credentials of the system connector it is linked to.
Switch a connection to OAuth 2.0 (Microsoft Entra ID)
Switch an existing connection that uses a Personal Access Token (PAT) by editing its system connector. The project connections linked to it follow, because they use the credentials of the system connector. If you cannot switch yet, see Keep a Personal Access Token for now.
Only a connection whose Server is dev.azure.com or an <organization>.visualstudio.com address can switch. For another address, such as an on-premise server, SD Elements refuses OAuth 2.0 (Microsoft Entra ID) when you save the connection and when you run Test Connection. See the Server field in Connection details.
|
-
If a Remote Integration Agent serves the connection, upgrade the agent first. Install a Remote Integration Agent that includes sdetools 30.6.0 or later (see Installation and Administration). An older agent does not know the new method, and it keeps signing in with the PAT that SD Elements stored.
-
Do the steps in Microsoft Entra ID and Azure DevOps that Set up OAuth 2.0 lists.
-
In SD Elements, from the gear icon menu, select Integration, then edit the system connector for the connection.
-
For Authentication Method, select OAuth 2.0 (Microsoft Entra ID).
-
Enter the Azure DevOps (TFS) Tenant ID, Azure DevOps (TFS) Client ID and Azure DevOps (TFS) Client Secret.
-
Click Test Connection, and correct any error with the help of Common errors.
-
Click Done.
-
In Azure DevOps, revoke the PAT that the connection used.
| Do not skip the last step. SD Elements keeps the stored username and PAT after the switch, and does not use them with OAuth 2.0. Revoking the PAT in Azure DevOps ends it everywhere, including the stored copy. |
Keep a Personal Access Token for now
Microsoft is retiring global PATs, which work across all the organizations their user can reach. Until a connection uses OAuth 2.0 (Microsoft Entra ID), replace any global PAT with a PAT that is scoped to the one organization the connection uses. Create the new PAT in Azure DevOps, enter it in the Azure DevOps (TFS) Password/Personal Access Token field of the system connector, test the connection, and save.
Connection details
Enter the connection details for the server.
Protocol |
Select the protocol for the connection (HTTPS or HTTP) (Default: HTTPS). OAuth 2.0 (Microsoft Entra ID) needs HTTPS. |
||
|---|---|---|---|
Server |
The domain name or IP address of the server
OAuth 2.0 (Microsoft Entra ID) works only with Azure DevOps Services at |
||
Context Root |
Top-level location where Microsoft Azure DevOps is installed on a server. The value for this may be dependent on the configuration of an internal corporate proxy or where an administrator has installed Microsoft Azure DevOps. |
||
Collection name |
The name of a project collection in Microsoft Azure DevOps. On Azure DevOps Server, the collection is usually For Azure DevOps Services ( |
Credentials
Enter the credentials needed to authenticate to the server. The fields that appear depend on the Authentication Method.
Authentication Method |
Specifies how SD Elements signs in to Azure DevOps. There are two choices: Password or Personal Access Token (Default), and OAuth 2.0 (Microsoft Entra ID). |
||
|---|---|---|---|
Username |
This configuration is available if you select Password or Personal Access Token for the Authentication Method. Username authorized to connect with the server and create/edit issues in anticipated projects. |
||
Password/Personal Access Token (PAT) |
This configuration is available if you select Password or Personal Access Token for the Authentication Method. The password or the Personal Access Token used to authenticate to the server. |
||
Azure DevOps (TFS) Tenant ID |
This configuration is available if you select OAuth 2.0 (Microsoft Entra ID) for the Authentication Method. The Directory (tenant) ID of the Microsoft Entra tenant that holds the app, as shown in Microsoft Entra. It is a GUID, such as |
||
Azure DevOps (TFS) Client ID |
This configuration is available if you select OAuth 2.0 (Microsoft Entra ID) for the Authentication Method. The Application (client) ID of the app registered in Microsoft Entra ID, as shown in Microsoft Entra. It is a GUID, such as |
||
Azure DevOps (TFS) Client Secret |
This configuration is available if you select OAuth 2.0 (Microsoft Entra ID) for the Authentication Method. The Value of a client secret created for the app in Microsoft Entra, not the secret’s ID. SD Elements stores the secret encrypted and shows it masked.
|
Project connections do not show the Authentication Method or the OAuth 2.0 (Microsoft Entra ID) fields. For the setup, see Set up OAuth 2.0 (Microsoft Entra ID).
Countermeasures to Synchronize
Select Countermeasures to synchronize.
Sync all Countermeasures |
Synchronize all Countermeasures from SD Elements. |
|---|---|
Sync Risk Policy Countermeasures |
Synchronize only Countermeasures that fall under the risk policy. |
Project details
Enter the project-level details.
Azure DevOps (TFS) Project |
The name of the project where issues should be created. |
|---|
Advanced Microsoft Azure DevOps configuration
Enter advanced global configuration options.
Issue Type |
Type of issue that SD Elements will create when creating a Countermeasure in Azure DevOps. (Default: |
||
|---|---|---|---|
Map an Azure DevOps (TFS) status to an SD Elements status |
This mapping determines the status to assign an SD Elements Countermeasure based on its corresponding Azure DevOps issue status. See Status Mapping for more information. |
||
Map an SD Elements status to an Azure DevOps (TFS) status |
This mapping determines the status to assign an Azure DevOps issue based on its corresponding SD Elements Countermeasure status. All Azure DevOps statuses in this mapping should be a single transition away from every other status in the mapping, as well as from the default status for new issues in your Azure DevOps project workflow. For example, an item in an "In Progress" state cannot be transitioned to an item in a "Completed" state. It must transition to a "Resolved" state first, then "Completed".
See Status Mapping for more information. |
||
Unmapped Status Fallback (Optional) |
The SD Elements status to map to when encountering an unmapped Azure DevOps status (Default: Incomplete) |
||
Closed Issue Status |
The name of a status in Azure DevOps to use when its corresponding SD Elements Countermeasure is removed from the project. |
Enter advanced project configuration options.
Iteration Path |
Name of the iteration (Example:
|
||
|---|---|---|---|
Area Path |
Name of the Area Path (Default: Project name) |
Synchronization
Enter settings for synchronizing SD Elements Countermeasures.
Authoritative Source |
Select the tool that will be the authoritative system of record: Microsoft Azure DevOps or SD Elements. This field is used in case of conflicting statuses between the Microsoft Azure DevOps issue and the SD Elements Countermeasure. When you first synchronize a TODO Countermeasure in SD Elements with an issue in Microsoft Azure DevOps, they will have the same status. If you then change the status in one tool, for example by closing the issue in Microsoft Azure DevOps, they will have conflicting statuses. This conflict is resolved when the projects are synchronized. There are three options:
|
|---|---|
Include code sample How-To’s in Countermeasure descriptions |
Whether or not to include detailed code samples and How-To’s in the Microsoft Azure DevOps issue. |
This Issue Tracker server is hosted within a private network and cannot be reached directly by SD Elements. |
Select this option if SD Elements does not have direct network access to the Microsoft Azure DevOps server. For example, if you are using a hosted SD Elements instance but you want to integrate with an internal/protected Microsoft Azure DevOps system, choose this option and run the Remote Integration Agent to perform integration. |
Filter Countermeasures
Select SD Elements Countermeasures to synchronize with the Microsoft Azure DevOps project.
Countermeasures having a minimum priority |
Only synchronize Countermeasures with a minimum priority, such as 7 or above. This is useful if you want to limit the amount of work for users. (Default: 1) |
|---|---|
Countermeasures with status meaning |
Only synchronize Countermeasures with certain statuses, such as TODO or DONE. (Default: TODO) |
Limit to Countermeasures having these phases |
Only synchronize Countermeasures in certain phases, such as Requirements or Development. (Default: none selected, meaning Countermeasures from all phases will be synchronized) |
Countermeasures having all of the following tags |
Only synchronize Countermeasures containing certain SD Elements Countermeasure tags. (Optional) |
Countermeasures with verification status |
Only synchronize Countermeasures with a specific verification status, such as Pass or Fail. (Default: none selected, meaning Countermeasures with any verification status will be synchronized) |
Advanced Issue Tracker options
Enter advanced configuration options.
Enforce Certificate Validation |
Checks the certificate of the server when SD Elements connects to it (Default: on). Turn it off only for testing, because it is insecure. OAuth 2.0 (Microsoft Entra ID) needs it on. |
||
|---|---|---|---|
Issue Tracker context |
Bind a set of Countermeasures using a cetain value. This is applicable only when custom titles are selected having the entry "Context" |
||
Issue Tracker parent issue |
The issue identifier of a parent issue. SD Elements Countermeasures will be created as children of this issue. |
||
Custom Priority Mapping |
If the standard Microsoft Azure DevOps priorities have been customized, you must map the customized priority names in Microsoft Azure DevOps to their corresponding SD Elements numeric priorities.
For example, map "1" issues to priority |
||
Custom Fields Mapping |
In addition to the default-assigned fields, you can map additional SD Elements fields to Microsoft Azure DevOps fields.
For example, you may have a required field in your Microsoft Azure DevOps project that is not set by default. Custom field mappings can be set at both the system connection and project connection levels, and the mappings set in a project connection will override mappings set in the system connection. For more details refer to section Advanced field support. |
Sync frequency
Select how frequently the SD Elements and Microsoft Azure DevOps projects are synchronized. You can choose from the following options. The more frequently you run synchronization, the greater the performance impact on both the SD Elements and Microsoft Azure DevOps servers. This is generally only a concern for large organizations running many synchronizations at once.
Hourly, Daily, Weekly, or Monthly |
The projects will synchronize automatically every hour, day, week or month. Daily synchronization is typically sufficient. However, you may want to select a more frequent interval if development moves quickly in your organization. |
|---|---|
Manually |
You must click the Sync button on the Issue Tracker Integrations page in order to synchronize the projects. This is the default value. |