Azure DevOps Connector can be used to integrate Azure DevOps data in your App / BI Tools. You can create, read, query, modify, and delete WorkItems, Projects, Teams and more. You can use this connector to integrate Azure DevOps data inside SSIS and SQL Server. Let's take a look at the steps below to see how exactly to accomplish that.
If you are new with SSIS and ZappySys SSIS PowerPack then check below links to get started.
How to get started with SSIS and SSIS PowerPack. it covers how to install necessary tools to design/debug SSIS Packages, deploy to SSIS catalog and last Schedule SSIS Package to run using SQL Agent. It will also cover how to secure SSIS package and Parameterize values (e.g. Password, Hostname, etc).
How to read data from Azure DevOps in SSIS (Export data)
In this section we will learn how to configure and use Azure DevOps Connector in the API Source to extract data from the Azure DevOps.
Begin with opening Visual Studio and Create a New Project.
Select Integration Service Project and in new project window set the appropriate name and location for project. And click OK.
In the the new SSIS project screen you will find the following:
SSIS ToolBox on left side bar
Solution Explorer and Property Window on right bar
Control flow, data flow, event Handlers, Package Explorer in tab windows
Connection Manager Window in the bottom
Note: If you don't see ZappySys SSIS PowerPack Task or Components in SSIS Toolbox, please refer to this help link.
Now, Drag and Drop SSIS Data Flow Task from SSIS Toolbox. Double click on the Data Flow Task to see Data Flow designer.
From the SSIS toolbox drag and API Source (Predefined Templates) on the data flow designer surface, and double click on it to edit it:
Select New Connection to create a new connection:
Use a preinstalled Azure DevOps Connector from Popular Connector List or press Search Online radio button to download Azure DevOps Connector. Once downloaded simply use it in the configuration:
Azure DevOps
Proceed with selecting the desired Authentication Type. Then select API Base URL (in most cases default one is the right one). Finally, fill in all the required parameters and set optional parameters if needed. You may press a link Steps to Configure which will help set certain parameters. More info is available in Authentication section.
Steps to get Azure DevOps Credentials
Connecting to your Azure DevOps data requires you to authenticate your REST API access. Follow the instructions below:
Fill in your application and company's information as required, and then select the scopes that your application needs.
This should typically be Project and team (read and write) and Work items (read and write).
Your selected scopes when registering your app must match the scopes you enter here on the connector screen.
If they don't match, the connector will not be able to work with your Azure DevOps account!
Select Create Application and then the Application Settings page will be displayed.
Record the application settings that are displayed for us to use later, especially the App ID and the Client Secret.
Visit https://aex.dev.azure.com.
Once you are logged in, record your organization name in the URL that is displayed on the page.
For example, if your organization is called "acmeinc", the URL on the page would be acmeinc.visualstudio.com.
Back at the connector screen, enter the App ID that was recorded in step 4 into the Client Id (App ID) field.
Enter the client secret that was recorded in step 4 into the Client Secret field. In order to edit the text in this field,
select the ellipses (...) button that appears when the textbox is clicked and edit the client secret with the dialog box that appears.
Enter the organization that was recorded in step 5 into the Organization name or Id for url field.
Click Generate Token. If proper authentication occurs, you will see a notice saying so. You can click Yes to save
a backup file of your generated tokens.
Select the project you want to connect to by default from the Default Project (Choose after Generating Token) field.
Select the Security tab.
Enter https://auditservice.dev.azure.com,https://almsearch.dev.azure.com into the Additional Trusted Domains field.
Select the Test Connection button at the bottom of the window to verify proper connectivity with your Azure DevOps account.
If the connection test succeeds, select OK.
Azure DevOps
OAuth [OAuth]
https://dev.azure.com
Required Parameters
Client Id (App ID)
Fill in the parameter...
Client Secret
Fill in the parameter...
Organization name or Id for url (e.g. mycompany)
Fill in the parameter...
Return URL
Fill in the parameter...
Scope
Fill in the parameter...
API Version
Fill in the parameter...
Optional Parameters
Default Project Name (Choose after Generating Token)
Steps to get Azure DevOps Credentials
To connect to Azure DevOps using a Personal Access Token (PAT), you must first create a valid PAT:
Go to your Azure DevOps home page: https://dev.azure.com/{your organization name}.
On the home page, select the User Settings menu dropdown (looks like a person icon with a small gear over it), and then select Personal access tokens.
Select the New Token button.
Enter a name for the new personal access token.
Select the appropriate organization for the new personal access token.
Select the expiration date for the new personal access token.
Select the scopes for this token. (You may be restricted from creating full-scoped PATs. If so, your Azure DevOps administrator in Azure AD has enabled a policy which limits you to a specific custom defined set of scopes.)
Select the Create button.
The new Personal Access Token (PAT) is created and displayed. Copy and save this token, since it is as sensitive as a password.
Visit https://aex.dev.azure.com.
Once you are logged in, record your organization name in the URL that is displayed on the page.
For example, if your organization is called "acmeinc", the URL on the page would be acmeinc.visualstudio.com.
Back at the connector screen, enter the token you recorded from step 9 into the Personal Access Token (PAT) field.
Enter the organization that was recorded in step 10 into the Organization name or Id for url field.
Enter the name or Id of the project you want to connect to by default in the Default Project (Choose after above fields) field.
Select the Security tab.
Enter https://auditservice.dev.azure.com,https://almsearch.dev.azure.com,https://analytics.dev.azure.com into the Additional Trusted Domains field.
Select the Test Connection button at the bottom of the window to verify proper connectivity with your Azure DevOps account.
If the connection test succeeds, select OK.
Azure DevOps
Personal Access Token (PAT) [Http]
https://dev.azure.com
Required Parameters
Personal Access Token (PAT)
Fill in the parameter...
Organization name or Id for url
Fill in the parameter...
API Version
Fill in the parameter...
Optional Parameters
AuthScheme
Fill in the parameter...
AuthHeader
Fill in the parameter...
UserName
Fill in the parameter...
Default Project Name (Choose after Generating Token)
Fill in the parameter...
RetryMode
Fill in the parameter...
RetryStatusCodeList
Fill in the parameter...
RetryCountMax
Fill in the parameter...
RetryMultiplyWaitTime
Fill in the parameter...
Select the desired endpoint, change/pass the properties values, and click on Preview Data button to make the API call.
API Source - Azure DevOps
Azure DevOps Connector can be used to integrate Azure DevOps data in your App / BI Tools. You can create, read, query, modify, and delete WorkItems, Projects, Teams and more.
That's it; we are done. In a few clicks we configured the call to Azure DevOps using ZappySys Azure DevOps Connector
Load Azure DevOps data in SQL Server using Upsert Destination (Insert or Update)
Once you read data from the desired source, now let's see how to Load Azure DevOps data in SQL Server using Upsert Destination.
Upsert Destination can Merge/Synchronize data from source to target for Microsoft SQL Server, PostgreSql and Redshift. It supports very fast Bulk Upsert (Update or Insert) operation along and Bulk delete.
From the SSIS toolbox drag and drop Upsert Destination on the dataflow designer surface
Connect our Source component to Upsert Destination
Double click on Upsert Destination component to configure it.
Select the desired Microsoft SQL Server/PostgreSql/Redshift Target Connection or click NEW to create new connection. Select Target Table or click NEW to create new table based on source columns.
Configure SSIS Upsert Destination Connection - Loading data (REST / SOAP / JSON / XML /CSV) into SQL Server or other target using SSIS
Set Action to Upsert => (insert if not matching in target else update). Select Target Connection and Target Table. Check on Insert and Update. Click on Map All to Mappings all columns and check on Only Primary Key columns.
Click on OK to save Upsert Destination settings UI.
That's it; we are done. Run the SSIS Package and it will read the data from the Azure DevOps and load the the data in the SQL Server/PostgreSql/Redshift.
Video Tutorial - Write or lookup data to Azure DevOps using SSIS
This video covers following and more so watch carefully. After watching this video follow the steps described in this article.
How to download SSIS PowerPack for Azure DevOps integration in SSIS
How to write or lookup data to Azure DevOps in SSIS (Import data)
In upper section we learned how to read data, now in this section we will learn how to configure Azure DevOps in the API Source to Post data to the Azure DevOps.
Read the data from the source, being any desired source component. In example we will use ZappySys Dummy Data Source component.
From the SSIS Toolbox drag and drop API Destination (Predefined Templates) on the Data Flow Designer surface and connect source component with it, and double click to edit it.
Select New Connection to create a new connection:
API Destination - Azure DevOps
Azure DevOps Connector can be used to integrate Azure DevOps data in your App / BI Tools. You can create, read, query, modify, and delete WorkItems, Projects, Teams and more.
Use a preinstalled Azure DevOps Connector from Popular Connector List or press Search Online radio button to download Azure DevOps Connector. Once downloaded simply use it in the configuration:
Azure DevOps
Proceed with selecting the desired Authentication Type. Then select API Base URL (in most cases default one is the right one). Finally, fill in all the required parameters and set optional parameters if needed. You may press a link Steps to Configure which will help set certain parameters. More info is available in Authentication section.
Steps to get Azure DevOps Credentials
Connecting to your Azure DevOps data requires you to authenticate your REST API access. Follow the instructions below:
Fill in your application and company's information as required, and then select the scopes that your application needs.
This should typically be Project and team (read and write) and Work items (read and write).
Your selected scopes when registering your app must match the scopes you enter here on the connector screen.
If they don't match, the connector will not be able to work with your Azure DevOps account!
Select Create Application and then the Application Settings page will be displayed.
Record the application settings that are displayed for us to use later, especially the App ID and the Client Secret.
Visit https://aex.dev.azure.com.
Once you are logged in, record your organization name in the URL that is displayed on the page.
For example, if your organization is called "acmeinc", the URL on the page would be acmeinc.visualstudio.com.
Back at the connector screen, enter the App ID that was recorded in step 4 into the Client Id (App ID) field.
Enter the client secret that was recorded in step 4 into the Client Secret field. In order to edit the text in this field,
select the ellipses (...) button that appears when the textbox is clicked and edit the client secret with the dialog box that appears.
Enter the organization that was recorded in step 5 into the Organization name or Id for url field.
Click Generate Token. If proper authentication occurs, you will see a notice saying so. You can click Yes to save
a backup file of your generated tokens.
Select the project you want to connect to by default from the Default Project (Choose after Generating Token) field.
Select the Security tab.
Enter https://auditservice.dev.azure.com,https://almsearch.dev.azure.com into the Additional Trusted Domains field.
Select the Test Connection button at the bottom of the window to verify proper connectivity with your Azure DevOps account.
If the connection test succeeds, select OK.
Azure DevOps
OAuth [OAuth]
https://dev.azure.com
Required Parameters
Client Id (App ID)
Fill in the parameter...
Client Secret
Fill in the parameter...
Organization name or Id for url (e.g. mycompany)
Fill in the parameter...
Return URL
Fill in the parameter...
Scope
Fill in the parameter...
API Version
Fill in the parameter...
Optional Parameters
Default Project Name (Choose after Generating Token)
Steps to get Azure DevOps Credentials
To connect to Azure DevOps using a Personal Access Token (PAT), you must first create a valid PAT:
Go to your Azure DevOps home page: https://dev.azure.com/{your organization name}.
On the home page, select the User Settings menu dropdown (looks like a person icon with a small gear over it), and then select Personal access tokens.
Select the New Token button.
Enter a name for the new personal access token.
Select the appropriate organization for the new personal access token.
Select the expiration date for the new personal access token.
Select the scopes for this token. (You may be restricted from creating full-scoped PATs. If so, your Azure DevOps administrator in Azure AD has enabled a policy which limits you to a specific custom defined set of scopes.)
Select the Create button.
The new Personal Access Token (PAT) is created and displayed. Copy and save this token, since it is as sensitive as a password.
Visit https://aex.dev.azure.com.
Once you are logged in, record your organization name in the URL that is displayed on the page.
For example, if your organization is called "acmeinc", the URL on the page would be acmeinc.visualstudio.com.
Back at the connector screen, enter the token you recorded from step 9 into the Personal Access Token (PAT) field.
Enter the organization that was recorded in step 10 into the Organization name or Id for url field.
Enter the name or Id of the project you want to connect to by default in the Default Project (Choose after above fields) field.
Select the Security tab.
Enter https://auditservice.dev.azure.com,https://almsearch.dev.azure.com,https://analytics.dev.azure.com into the Additional Trusted Domains field.
Select the Test Connection button at the bottom of the window to verify proper connectivity with your Azure DevOps account.
If the connection test succeeds, select OK.
Azure DevOps
Personal Access Token (PAT) [Http]
https://dev.azure.com
Required Parameters
Personal Access Token (PAT)
Fill in the parameter...
Organization name or Id for url
Fill in the parameter...
API Version
Fill in the parameter...
Optional Parameters
AuthScheme
Fill in the parameter...
AuthHeader
Fill in the parameter...
UserName
Fill in the parameter...
Default Project Name (Choose after Generating Token)
Fill in the parameter...
RetryMode
Fill in the parameter...
RetryStatusCodeList
Fill in the parameter...
RetryCountMax
Fill in the parameter...
RetryMultiplyWaitTime
Fill in the parameter...
Select the desired endpoint, change/pass the properties values, and go to the Mappings tab to map the columns.
API Destination - Azure DevOps
Azure DevOps Connector can be used to integrate Azure DevOps data in your App / BI Tools. You can create, read, query, modify, and delete WorkItems, Projects, Teams and more.
Finally, map the the desired columns:
API Destination - Azure DevOps
Azure DevOps Connector can be used to integrate Azure DevOps data in your App / BI Tools. You can create, read, query, modify, and delete WorkItems, Projects, Teams and more.
That's it; we successfully configured the POST API Call. In a few clicks we configured the Azure DevOps API call using ZappySys Azure DevOps Connector
Conclusion
In this article we discussed how to connect to Azure DevOps in SSIS and integrate data without any coding. Click here to DownloadAzure DevOps Connector for SSIS and try yourself see how easy it is. If you still have any question(s) then ask here or simply click on live chat icon below and ask our expert (see bottom-right corner of this page).
Azure DevOps Connector support following actions for REST API integration. If some actions are not listed below then you can easily edit Connector file and enhance out of the box functionality.
The WIQL query (refer Azure DevOps Help to learn Wiql syntax.
Get Work Items for Specified Query Id
Get work items associated with the specified project, organization and query. (A team can optionally be specified as well.). Read more about this API here https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/wiql/query-by-id?view=azure-devops-rest-7.1 [Read more...]
Parameter
Description
Project Name
The Name of the project.
Query Id
The Id of the predefined Query.
Team Id or Name
Id or name of the team associated with the query.
Use time precision
Whether or not to use time precision.
Option
Value
false
false
true
true
Query Work Items
Get work items associated with the specified project and organization that are filtered by a Wiql query. (A team can optionally be specified as well.). Read more about this API here https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/wiql/query-by-wiql?view=azure-devops-rest-7.0 and here https://learn.microsoft.com/en-us/azure/devops/boards/queries/query-operators-variables?view=azure-devops [Read more...]
Parameter
Description
Project Name
The Name of the project.
Team Id or Name
Id or name of the team associated with the query.
Use time precision
Whether or not to use time precision.
Option
Value
false
false
true
true
Wiql Query
The WIQL query (refer Azure DevOps Help to learn Wiql syntax.
Query Work Item Comments
Get work item comments associated with the specified project and organization that are filtered by a Wiql query. (A team can optionally be specified as well.). Read more about this API here https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/wiql/query-by-wiql?view=azure-devops-rest-7.0 and here https://learn.microsoft.com/en-us/azure/devops/boards/queries/query-operators-variables?view=azure-devops [Read more...]
Parameter
Description
Project Name
The Name of the project.
Team Id or Name
Id or name of the team associated with the query.
Use time precision
Whether or not to use time precision.
Option
Value
false
false
true
true
Wiql Query
The WIQL query (refer Azure DevOps Help to learn Wiql syntax.
Get Work Item Comments (by WorkItem Id)
Get work item comments associated with WorkItem Id [Read more...]
Parameter
Description
WorkItemId
WorkItem Id for which you like to get comments
Project Name
The Name of the project.
api-version
For this API you must set 7.0-preview for now
Get Work Item Comment by Comment Id and Work Item Id
Get work item comment by its Comment Id (for specific WorkItem Id) [Read more...]
Parameter
Description
Id
Comment Id
WorkItemId
WorkItem Id for which you like to get comments
Project Name
The Name of the project.
api-version
For this API you must set 7.0-preview for now
Create Work Item Comment
Creates work item comment for a specific WorkItem Id [Read more...]
Parameter
Description
Id
Comment Id
WorkItemId
WorkItem Id for which you like to get comments
Project Name
The Name of the project.
Comment Text
api-version
For this API you must set 7.0-preview for now
Update Work Item Comment
Update work item comment for a specific Work Item Id and Comment Id [Read more...]
Parameter
Description
Id
Comment Id
WorkItemId
WorkItem Id for which you like to get comments
Project Name
The Name of the project.
Comment Text
api-version
For this API you must set 7.0-preview for now
Delete Work Item Comment
Delete work item comment for a specific Work Item Id and Comment Id [Read more...]
Parameter
Description
Id
Comment Id
WorkItemId
WorkItem Id for which you like to get comments
Project Name
The Name of the project.
api-version
For this API you must set 7.0-preview for now
Get Work Item Column Fields
Get work item column fields in the default project within the organization. Read more about description on each field here https://learn.microsoft.com/en-us/azure/devops/boards/work-items/guidance/work-item-field?view=azure-devops [Read more...]
Parameter
Description
Project Name
The Name of the project.
Expand Parameters
The expand parameters for work item attributes. Possible options are 'None', 'Relations', 'Fields', 'Links', and 'All'.
Option
Value
None
None
Relations
Relations
Fields
Fields
Links
Links
All
All
Get Work Items by Ids
Get work items in the default project within the organization by their work item Ids. [Read more...]
Parameter
Description
Project Name
The Name of the project.
Work Item Id List (comma separated)
The comma-separated list of requested work item ids. (Maximum 200 ids allowed).
As-Of Date
AsOf UTC date time string.
Expand Parameters
The expand parameters for work item attributes. Possible options are 'None', 'Relations', 'Fields', 'Links', and 'All'.
Option
Value
None
None
Relations
Relations
Fields
Fields
Links
Links
All
All
Error Policy
The flag to control error policy in a bulk get work items request. Possible options are 'Fail' and 'Omit'.
Option
Value
Fail
Fail
Omit
Omit
Fields
Comma-separated list of requested fields.
Get Work Item Types
Get work item types in the default project within the organization. [Read more...]
Parameter
Description
Project Name
The Name of the project.
Create Work Item
Creates a new work item in the default project within the organization. [Read more...]
Parameter
Description
Project Name
The Name of the project.
WorkItemType
ByPassRules
Set this to true to allow setting values for some fields which otherwise wont work due to certain rules
Option
Value
true
true
false
false
Update Work Item
Updates an existing work item in the default project within the organization. [Read more...]
Parameter
Description
Project Name
The Name of the project.
Work Item Id
Operation
Some operation requires you to supply 'add' rather than 'replace' (e.g. adding new tag)
Option
Value
replace
replace
add
add
remove
remove
copy
copy
move
move
test
test
Delete Work Item
Deletes an existing work item in the default project within the organization. [Read more...]
Parameter
Description
Project Name
The Name of the project.
Work Item Id
Get List of Queries
Gets a list of predefined queries within the organization. [Read more...]
Parameter
Description
Project Name
The Name of the project.
Max Depth (items inside nested folders)
Get List of Projects
Gets a list of projects within the organization. [Read more...]
Get Project Details
Gets the details of the specified project within the organization by its project Id. [Read more...]
Parameter
Description
Id
Create Project
Create a new project within the organization. [Read more...]
Update Project
Update an existing project within the organization. [Read more...]
Parameter
Description
Project Id
The ID of the project to update.
Delete Project
Delete an existing project within the organization. [Read more...]
Parameter
Description
Project Id
The ID of the project to delete.
Get List of Teams
Gets a list of teams in the default project within the organization. [Read more...]
Parameter
Description
Project Name
The Name of the project.
Get Team Details
Gets the details of the specified team in the default project within the organization by its team Id or team name. [Read more...]
Parameter
Description
API Version
Option
Value
7.0-preview
7.0-preview
7.1-preview.2
7.1-preview.2
Team Id or Name
Project Name
The Name of the project.
Create Team
Creates a new team in the default project within the organization. [Read more...]
Update Team
Updates the details of the specified team in the default project within the organization by its team Id. [Read more...]
Parameter
Description
API Version
Option
Value
7.0-preview
7.0-preview
7.1-preview.2
7.1-preview.2
Team Id
Delete Team
Deletes the specified team in the default project within the organization by its team Id. [Read more...]
Parameter
Description
API Version
Option
Value
7.0-preview
7.0-preview
7.1-preview.2
7.1-preview.2
Team Id
The ID of the team to delete.
Search for Work Items by Text
Search for specific text within work items in the default project of the organization. [Read more...]
Parameter
Description
Text to Search For
Get Team Members
Lists all members part of a specified Team in the project within the organization (by team Id or team name). [Read more...]
Parameter
Description
API Version
Option
Value
7.0-preview
7.0-preview
7.1-preview.2
7.1-preview.2
Project Name
The Name of the project.
Team Id or Name
Get Team Iterations
Lists Team iterations for a specified project / team. [Read more...]
Parameter
Description
API Version
Option
Value
7.0-preview
7.0-preview
7.1-preview.2
7.1-preview.2
Project Name
The Name of the project.
Team Id or Name
Get Team Iteration Capacities
Lists capacity for all team members in a specified project / team / iteration. [Read more...]
Parameter
Description
Project Name
The Name of the project.
Team Id or Name
Itertation Id or Name
API Version
Option
Value
7.0-preview
7.0-preview
7.1-preview.2
7.1-preview.2
Generic Request
This is generic endpoint. Use this endpoint when some actions are not implemented by connector. Just enter partial URL (Required), Body, Method, Header etc. Most parameters are optional except URL. [Read more...]
Parameter
Description
Url
API URL goes here. You can enter full URL or Partial URL relative to Base URL. If it is full URL then domain name must be part of ServiceURL or part of TrustedDomains
Body
Request Body content goes here
IsMultiPart
Check this option if you want to upload file(s) (i.e. POST RAW file data) or send data using Multi-Part encoding method (i.e. Content-Type: multipart/form-data). Multi-Part request allows you to mix key/value and upload files in same request. On the other hand raw upload allows only single file upload (without any key/value)
==== Raw Upload (Content-Type: application/octet-stream) =====
To upload single file in raw mode check this option and specify full file path starting with @ sign in the Body (e.g. @c:\data\myfile.zip )
==== Form-Data / Multipart Upload (Content-Type: multipart/form-data) =====
To treat your Request data as multi part fields you must specify key/value pairs separated by new lines into RequestData field (i.e. Body). Each key value pair is entered on new-line and key/value are separated using equal sign (=). Preceding and trailing spaces are ignored also blank lines are ignored.
If field value has some any special character(s) then use escape sequence (e.g. For NewLine: \r\n, For Tab: \t, For at (@): \@). When value of any field starts with at sign (@) its automatically treated as File you want to upload. By default file content type is determined based on extension however you can supply content type manually for any field using this way [ YourFileFieldName.Content-Type=some-content-type ]. By default File Upload Field always includes Content-Type in the request (non file fields do not have content-type by default unless you supply manually). For some reason if you dont want to use Content-Type header in your request then supply blank Content-Type to exclude this header altogather [e.g. SomeFieldName.Content-Type= ]. In below example we have supplied Content-Type for file2 and SomeField1, all other fields are using default content-type.
See below Example of uploading multiple files along with additional fields. If some API requires you to pass Content-Type: multipart/form-data rather than multipart/form-data then manually set Request Header => Content-Type: multipart/mixed (it must starts with multipart/ else will be ignored).
file1=@c:\data\Myfile1.txt
file2=@c:\data\Myfile2.json
file2.Content-Type=application/json
SomeField1=aaaaaaa
SomeField1.Content-Type=text/plain
SomeField2=12345
SomeFieldWithNewLineAndTab=This is line1\r\nThis is line2\r\nThis is \ttab \ttab \ttab
SomeFieldStartingWithAtSign=\@MyTwitterHandle
Filter
Enter filter to extract array from response. Example: $.rows[*] --OR-- $.customers[*].orders[*]. Check your response document and find out hierarchy you like to extract
Headers
Headers for Request. To enter multiple headers use double pipe or new line after each {header-name}:{value} pair