Azure DevOps Story and Task Synchronization with GitHub and Google Sheets Tracking - n8n Workflow

Use this powerful n8n workflow to automatically sync Azure DevOps Stories to GitHub Issues, randomly assign collaborators, and maintain a traceable index of all corresponding IDs in Google Sheets.

Workflow Preview

Ready to automate?

Download this n8n workflow template and start using it instantly.

Who is this best for?

DevOps Teams: Organizations managing product development and tracking in Azure DevOps but utilizing GitHub for source code and issue resolution. Project Managers: Users who need centralized reporting and instant cross-referencing between Azure DevOps work item IDs and GitHub Issue numbers. n8n Automation Specialists: Users looking for advanced examples of multi-branch workflows using webhooks, data manipulation via the n8n node Code editor, and external API calls (GitHub). Engineering Leads: Teams seeking automated workload balancing through random issue assignment.

Overview

This comprehensive n8n workflow solves the common synchronization challenge between Azure DevOps and GitHub. When a new Story or Task is created in Azure DevOps, this automation ensures immediate reflection in the designated GitHub repository. The primary challenge this n8n workflow addresses is ensuring that related items (like Tasks nested under a Story) are correctly linked across platforms.

The workflow operates in two parallel branches: one for creating new GitHub Issues based on Azure Stories, complete with a process to fetch collaborators and randomly assign the new issue for workload balancing; and a second branch for locating the parent GitHub Issue and appending the newly created Azure Task details as a clickable list item. Furthermore, every mapping (Azure ID to GitHub Issue ID) is logged in Google Sheets, creating a robust, searchable central index. This complex n8n template showcases the power of the corelogicflow_control components within n8n.

How it Works

This n8n workflow is triggered by two separate webhooks configured in Azure DevOps:

Branch 1: Handling New Azure DevOps Stories


  1. Story Trigger: The Webhook1 n8n trigger receives a POST request when a new Story work item is created in Azure DevOps.

  2. Data Filtering: The Filter Story Data n8n node (Code) cleans the input payload, extracting essential data like the Story's title, description, and ID.

  3. Issue Creation: The Create Github Issue n8n node uses this filtered data to instantly create a new issue in the specified GitHub repository.

  4. Assignment Logic: The workflow uses an HTTP Request n8n node to fetch a list of all repository collaborators. The subsequent Code2 n8n node randomly selects one collaborator from this list.

  5. Assignee Update: A second HTTP Request n8n node performs a PATCH operation on the newly created GitHub Issue, assigning the randomly selected collaborator.

  6. Mapping Log: Finally, the Google Sheets n8n node appends a new row to a dedicated spreadsheet, logging the Azure Story ID, the corresponding GitHub Issue Number, and the Issue URL for future lookups.

Branch 2: Handling New Azure DevOps Tasks


  1. Task Trigger: The Webhook2 n8n trigger activates upon the creation of a new Task work item in Azure DevOps.

  2. Data Filtering: The Filter Task Data n8n node (Code) extracts critical task data, most importantly the System.Parent ID, which links back to the original Story.

  3. Lookup Mapping: The Google Sheets1 n8n node uses the parent ID to search the centralized tracking sheet, retrieving the GitHub Issue Number associated with that parent Story.

  4. Issue Retrieval: The GitHub2 n8n node fetches the current body content of the target GitHub Issue.

  5. Issue Update: The GitHub1 n8n node edits the issue body, appending a new HTML list item (
  6. ) that contains a clickable hyperlink back to the Azure DevOps Task. This effectively links the sub-task directly under its parent Story in GitHub. This demonstrates advanced data flow using multiple n8n node types.

Installation Guide

To implement this n8n template successfully, follow these steps:


  1. Import the n8n workflow: Copy the provided JSON data and paste it into your n8n instance using the 'New' -> 'Import from JSON' option.

  2. Set up Credentials: You will need to configure three sets of credentials:

GitHub OAuth2 API: Required for the GitHub n8n nodes and HTTP Request nodes to create, read, and update issues and fetch collaborator lists. Google Sheets OAuth2 API: Required for the Google Sheets n8n nodes to read the mapping data and append new entries.

  1. Configure Webhooks (n8n trigger): Activate the Webhook1 and Webhook2 n8n nodes. Copy the unique webhook URLs generated by each n8n trigger. In Azure DevOps, configure two Service Hook subscriptions (one for 'Work item created/updated - Type: Story' pointing to Webhook1, and one for 'Work item created/updated - Type: Task' pointing to Webhook2). Ensure the payload method is POST.

  2. Google Sheets Setup: Verify that the Google Sheets n8n node configurations point to the correct Document ID and Sheet Name (e.g., 'IssuesMap' sheet) and that the columns (AzureID, IssueID, Url) match your spreadsheet header structure.

  3. GitHub Configuration: Update the repository owner and name in all GitHub n8n node parameters to match your target GitHub project.

Node Details

The strength of this n8n workflow lies in its strategic use of specific n8n node types:

Webhook1 & Webhook2 (n8n trigger): Serve as the entry points, listening for POST requests from Azure DevOps. Configured with unique paths to differentiate between Story and Task events.
Filter Story Data & Filter Task Data (Code n8n node): Essential for data transformation. These n8n node types process the extensive Azure DevOps JSON payload and structure it into a clean, usable object containing only necessary fields (ID, Title, Description, Parent ID).
Create Github Issue (GitHub n8n node): The primary action node for Branch 1, creating the GitHub Issue from the Story data.
HTTP Request1 & HTTP Request2 (HTTP Request n8n node): Used for advanced GitHub API interaction, specifically fetching collaborators and performing a low-level PATCH request to assign the issue, an operation not directly available in the standard GitHub n8n node.
Code2 (Code n8n node): Implements the logic for randomized assignment, ensuring fair distribution of work by picking a random collaborator's login from the fetched list.
Google Sheets & Google Sheets1 (Google Sheets n8n node): Performs dual roles: appending new Azure/GitHub mappings and performing lookups (filtering by AzureID) to retrieve the associated GitHub Issue ID when a Task is created. This cross-reference capability is critical for the synchronization logic.


  • GitHub1 & GitHub2 (GitHub n8n node): Used in Branch 2 to retrieve the current issue content and then edit/append the Task link to the parent issue body using variable expressions based on data retrieved from the Google Sheets n8n node.

Related n8n Workflows

Free

Nodes: 6 Nodes
Updated: December 26 2025
View all
Created by
ConceptRecall
ConceptRecall

Featured*