{
  "id": "A73D8rbRrwu9XDZu",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Release Readiness Gatekeeper (Jira)",
  "tags": [],
  "nodes": [
    {
      "id": "400b8df2-89e3-48c8-98c1-20ab3e0c8a43",
      "name": "Jira Webhook - Detect Issue Changes",
      "type": "n8n-nodes-base.jiraTrigger",
      "position": [
        1040,
        1184
      ],
      "parameters": {
        "events": [
          "issuelink_created",
          "jira:issue_updated"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "de855356-e494-4ed5-90f6-09e399808a17",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1056,
        832
      ],
      "parameters": {
        "width": 346,
        "height": 285,
        "content": "## \ud83c\udfaf WORKFLOW START\n\n**Purpose:** This trigger listens for Jira issue updates and link creations.\n\n**When it fires:**\n- When an issue is updated\n- When an issue link is created\n\n**Next Step:** Fetches the full issue details to validate release readiness."
      },
      "typeVersion": 1
    },
    {
      "id": "f619537b-67fe-4c6a-8dc9-952d6c9c5aa2",
      "name": "Process Issues One by One",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1600,
        1184
      ],
      "parameters": {
        "options": {},
        "batchSize": 1
      },
      "typeVersion": 1
    },
    {
      "id": "7bde4ee0-f56e-4edf-b175-06b3b6b7147b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1520,
        736
      ],
      "parameters": {
        "width": 346.0397350993378,
        "height": 364.8309178743961,
        "content": "## \ud83d\udd04 BATCH PROCESSOR\n\n**Purpose:** Processes multiple issues individually to ensure each is validated separately.\n\n**Batch Size:** 1 issue at a time\n\n**Why:** Allows proper validation and error handling for each issue independently."
      },
      "typeVersion": 1
    },
    {
      "id": "ffc52fdf-8862-473b-b03a-2ed7e1f5396d",
      "name": "Is Definition of Done Complete?",
      "type": "n8n-nodes-base.if",
      "position": [
        1888,
        1072
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{$json[\"fields\"][\"customfield_DoD\"]}}",
              "value2": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "79a435f5-d858-498a-8175-4d9e2f807b20",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2016,
        608
      ],
      "parameters": {
        "width": 346.0397350993378,
        "height": 364.8309178743961,
        "content": "## \u2705 VALIDATION CHECKPOINT\n\n**Purpose:** Checks if the issue meets the Definition of Done criteria.\n\n**Check:** customfield_DoD = true\n\n**Paths:**\n- \u2705 TRUE \u2192 Issue is ready for release\n- \u274c FALSE \u2192 Issue needs more work (mark non-compliant)"
      },
      "typeVersion": 1
    },
    {
      "id": "8f4ca2ae-8ea8-4be4-8263-9b9287930d62",
      "name": "Flag Issue as Non-Compliant",
      "type": "n8n-nodes-base.set",
      "position": [
        2112,
        1296
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "issueKey",
              "value": "={{$json[\"key\"]}}"
            },
            {
              "name": "reason",
              "value": "Definition of Done not met"
            },
            {
              "name": "status",
              "value": "Non-Compliant"
            }
          ]
        },
        "options": {},
        "keepOnlySet": true
      },
      "typeVersion": 1
    },
    {
      "id": "6b6c87be-f829-496d-b1c3-310e501bba3a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1952,
        1472
      ],
      "parameters": {
        "width": 346.0397350993378,
        "height": 364.8309178743961,
        "content": "## \u26a0\ufe0f NON-COMPLIANT PATH\n\n**Purpose:** Marks issues that don't meet release criteria.\n\n**Data Set:**\n- Issue Key\n- Reason: \"Definition of Done not met\"\n- Status: Non-Compliant\n\n**Next:** Creates tracking item in Monday.com"
      },
      "typeVersion": 1
    },
    {
      "id": "dd5eb686-8dfb-46b4-b570-6fde0856ac6f",
      "name": "Send Slack Alert to Team",
      "type": "n8n-nodes-base.slack",
      "position": [
        2800,
        1184
      ],
      "parameters": {
        "text": "\ud83d\udea6 Release readiness check complete for version {{$json[\"version\"].name}}.\n\n\u2705 Compliant issues: Ready for release\n\u26a0\ufe0f Non-compliant issues: Moved back to In Review\n\nCheck Monday.com board for details.",
        "channel": "#release-updates",
        "attachments": [],
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3219c0a1-2275-4532-a252-5890badade3a",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2704,
        944
      ],
      "parameters": {
        "width": 346.0397350993378,
        "height": 364.8309178743961,
        "content": "## \ud83d\udce2 TEAM NOTIFICATION\n\n**Purpose:** Notifies the team about release readiness status.\n\n**Channel:** #release-updates\n\n**Message Includes:**\n- Version name\n- Compliant vs non-compliant count\n- Link to Monday.com board\n\n**Trigger:** Runs after all validations complete"
      },
      "typeVersion": 1
    },
    {
      "id": "35b94e87-c9c7-4eff-9d28-3e7f45e34695",
      "name": "Fetch Full Issue Details",
      "type": "n8n-nodes-base.jira",
      "position": [
        1296,
        1184
      ],
      "parameters": {
        "issueKey": "={{ $json.key }}",
        "operation": "get",
        "additionalFields": {}
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "cacda6f1-937c-4f76-b6c3-b76751aaa35d",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1360,
        1408
      ],
      "parameters": {
        "width": 346,
        "height": 301,
        "content": "## \ud83d\udccb ISSUE RETRIEVAL\n\n**Purpose:** Gets complete issue data from Jira.\n\n**Retrieved Data:**\n- All custom fields\n- Status\n- Definition of Done field\n- Linked issues\n\n**Why:** Webhook only provides basic info; we need full details for validation."
      },
      "typeVersion": 1
    },
    {
      "id": "d9760ef1-f926-4df0-ace9-5a9bcccf0543",
      "name": "Track in Monday.com Board",
      "type": "n8n-nodes-base.mondayCom",
      "position": [
        2432,
        1296
      ],
      "parameters": {
        "name": "Non-Compliant: {{ $json.issueKey }}",
        "boardId": "5014935897",
        "groupId": "topics",
        "resource": "boardItem",
        "additionalFields": {
          "columnValues": "={\"text\": \"{{ $json.reason }}\", \"status\": \"{{ $json.status }}\"}"
        }
      },
      "credentials": {
        "mondayComApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9425c263-a246-4ce4-ab2d-cc645eebbd33",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2480,
        1456
      ],
      "parameters": {
        "width": 346.0397350993378,
        "height": 364.8309178743961,
        "content": "## \ud83d\udcca PROJECT TRACKING\n\n**Purpose:** Creates a tracking item in Monday.com for non-compliant issues.\n\n**Board:** Release Issues\n**Group:** Topics\n\n**Item Details:**\n- Title: Non-Compliant: [Issue Key]\n- Reason for non-compliance\n- Current status\n\n**Benefit:** Centralized tracking of blockers"
      },
      "typeVersion": 1
    },
    {
      "id": "78b0ee69-7852-4d92-912a-3eb3afcf999b",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        336,
        1072
      ],
      "parameters": {
        "width": 543,
        "height": 306,
        "content": "## \ud83c\udfaf WORKFLOW SUMMARY\n\n**What This Automation Does:**\n\n1. **Monitors** Jira issues for updates\n2. **Validates** Definition of Done criteria\n3. **Separates** compliant from non-compliant issues\n4. **Tracks** blockers in Monday.com\n5. **Notifies** team via Slack\n\n**Use Case:** Ensures only release-ready issues make it to production\n\n**Team:** Release Management"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "a0d0015b-1fd7-42c9-abaf-c286629c9eae",
  "connections": {
    "Fetch Full Issue Details": {
      "main": [
        [
          {
            "node": "Process Issues One by One",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Process Issues One by One": {
      "main": [
        [
          {
            "node": "Is Definition of Done Complete?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Flag Issue as Non-Compliant": {
      "main": [
        [
          {
            "node": "Track in Monday.com Board",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Definition of Done Complete?": {
      "main": [
        [
          {
            "node": "Send Slack Alert to Team",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Flag Issue as Non-Compliant",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Jira Webhook - Detect Issue Changes": {
      "main": [
        [
          {
            "node": "Fetch Full Issue Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}