Azure DevOps

Azure DevOps is an end-to-end solution providing services for collaboration during the application development lifecycle: Version control, reporting, requirements management, project management, automated builds, testing, and release management capabilities.

Data integration: Skyvia supports importing data to and from Azure DevOps, exporting Azure DevOps data to CSV files, replicating Azure DevOps data to relational databases, and synchronizing Azure DevOps data with other cloud apps and relational databases.

Backup: Skyvia Backup does not support Azure DevOps backup.

Query: Skyvia Query supports Azure DevOps.

Establishing Connection

When creating a connection to Azure DevOps, you have to log in to Azure DevOps via OAuth 2.0 and enter the Azure Organization name. Skyvia stores only OAuth authentication token. Your Azure account credentials are not stored on the Skyvia side.

Getting Credentials

You can find the Organization value on the Azure DevOps main page in the list of available organizations or the page URL. For example, if the URL looks like dev.azure.com/your_organization, you enter only your_organization part of the URL in Skyvia.

Creating Connection

To create an Azure DevOps connection in Skyvia, perform the following steps:

  1. Enable the Third-party application access via OAuth option for your organization. To do this, sign in with Azure DevOps and go to Organization settings -> Security -> Policy.

    Azure DevOps app access

  2. Click Sign In with Azure DevOps on the Connection Editor page.

    Azure DevOps connection

  3. Enter your credentials.

    Azure DevOps sign-in

  4. Give your consent to the access request from Skyvia.

    Azure DevOps scopes

  5. Specify the Organization.

Connector Specifics

Object Peculiarities

WorkItemProcessQueries and WorkItemProcessChildrenQueries

WorkItemProcessQueries table stores parent folders and queries data only. Data from child folders and queries is stored in the Children array field. For user convenience, the child array field values are stored in the separate WorkItemProcessChildrenQueries table.

To insert a record into the WorkItemProcessChildrenQueries table, you must map the parent folder or query Id.

NotificationSubscriptions

When you create an account in Azure DevOps, several default records are created automatically in the NotificationSubscriptions table. Such records contain an empty UpdatedDate field, and they cannot be replicated incrementally and synchronized. Manually inserted records in this table contain the values in the UpdatedDate field. Such records can be replicated incrementally and synced.

You must map the Filter_type field to perform the import to the NotificationSubscriptions table. Other fields may become required for mapping depending on the specified Filter_type value.

WorkItems

The WorkItems table supports the following operators for filtering: =, >, <, >=, <=.

You can select a maximum of 20000 records by one query from this table.

There are several work item types: Bug, Feature, Epic, Test Case, Impediment, Task, or Product Backlog Item. Work item types define the list of fields for mapping when importing to this table. Required fields for mapping may differ depending on the work item type.

Complex Structured Objects

Some of the Azure DevOps objects have complex hierarchic structures. These objects are WorkItemTrackingComments, ProjectDashboardWidgets, and TeamDashboardWidgets. You can update these tables only via their parent objects.

For example, to update ProjectDashboardWidgets, Azure DevOps API requires mapping the ProjectDashboards.Id field. Optionally you can map the name of the corresponding Project. To get TeamDashboardWidgets records, Azure DevOps API requires mapping the TeamDashboards.Id field. Optionally you can map the related Teams.Id.

Skyvia does not require filtering by the parent object record Id when querying data from a child object or importing data to such an object. Without filtering by parent record Id, Skyvia first queries all the parent object records reading each record Id. Then Skyvia looks up child object records to each parent object record Id. This approach allows querying child objects without knowing their parents, but this method consumes time and API calls. It uses at least one API call for every parent object record. Thus, working with such tables may affect performance. We strongly recommend using filters on the parent object fields when querying data from child objects.

For example, to update the WorkItemTrackingComments, map the Id field, and optionally add mappings for ProjectId and WorkItemId. In this case, Skyvia has parent ProjectId and WorkItemId values and retrieves the child WorkItemTrackingComments records directly without going through all records in the WorkItems object.

Incremental Replication and Synchronization

Replication with Incremental Updates is supported for the following objects: AuditStreams, NotificationSubscriptions, Projects, TfvcShelvesets, TfvsLabels, WorkItemProcessChildrenQueries, WorkItemProcessQueries, WorkItems, WorkItemTrackingComments

The TfvcShelvesets object contains the CreatedDate field and doesn’t contain the UpdatedDate field. Thus only the new records can be processed by Incremental Replication.

Synchronization is supported for the following objects: AuditStreams, NotificationSubscriptions, Projects, WorkItemProcessChildrenQueries, WorkItemProcessQueries, and WorkItemTrackingComments.

DML Operations Support

Skyvia supports the following DML operations for Azure DevOps objects:

Operation Object
INSERT, UPDATE, DELETE AuditStreams, NotificationSubscriptions, ProjectDashboardWidgets, Projects, TeamDashboardWidgets, Teams, WorkItemProcessChildrenQueries, WorkItemProcessQueries, WorkItems, WorkItemTrackingComments, WorkItemTrackingProcesses
INSERT, DELETE ProjectDashboards, TeamDashboards
DELETE WorkIterations

Supported Actions

Skyvia supports all the common actions for Azure DevOps.