Workflow: Jira Stickynote Sync

Workflow Details

Download Workflow
{
    "id": "YCQFaJdmJc6Rx4o7",
    "meta": {
        "instanceId": "0c0787ab1a9ebbb0967650f7b4012417acdd61c2fa7c9e119981847e2fc8b09c"
    },
    "name": "Sync Jira issues with subsequent comments to Notion database",
    "tags": [
        {
            "id": "24",
            "name": "n8n team",
            "createdAt": "2023-02-28T11:17:04.513Z",
            "updatedAt": "2023-02-28T11:17:04.513Z"
        }
    ],
    "nodes": [
        {
            "id": "3f36dc12-5011-4786-aa21-f20ba72944df",
            "name": "Create database page",
            "type": "n8n-nodes-base.notion",
            "position": [
                460,
                460
            ],
            "parameters": {
                "title": "={{$node[\"On issues created\/updated\/deleted\"].json[\"issue\"][\"fields\"][\"summary\"]}}",
                "options": [],
                "resource": "databasePage",
                "databaseId": "e3503d88-accb-4ddb-aa45-f962cb03e729",
                "propertiesUi": {
                    "propertyValues": [
                        {
                            "key": "Issue Key|rich_text",
                            "textContent": "={{$node[\"On issues created\/updated\/deleted\"].json[\"issue\"][\"key\"]}}"
                        },
                        {
                            "key": "Issue ID|number",
                            "numberValue": "={{parseInt($node[\"On issues created\/updated\/deleted\"].json[\"issue\"][\"id\"])}}"
                        },
                        {
                            "key": "Link|url",
                            "urlValue": "=https:\/\/n8n-io.atlassian.net\/browse\/{{$node[\"On issues created\/updated\/deleted\"].json[\"issue\"][\"key\"]}}",
                            "ignoreIfEmpty": true
                        },
                        {
                            "key": "Status|select",
                            "selectValue": "={{$node[\"Lookup table\"].json[\"Status ID\"]}}"
                        }
                    ]
                }
            },
            "credentials": {
                "notionApi": {
                    "id": "XNjSmr171NUO17TK",
                    "name": "REPLACE ME"
                }
            },
            "typeVersion": 2
        },
        {
            "id": "2d13b713-dd3d-48aa-a550-fe8db1e7aafd",
            "name": "Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                660,
                460
            ],
            "parameters": {
                "width": 232.65822784810126222510007210075855255126953125,
                "height": 137.97468354430378667530021630227565765380859375,
                "content": "### `IF` & `Switch` nodes\nThese conditional nodes (`IF` and `Switch`) determine which Notion [**CRUD**](https:\/\/www.sumologic.com\/glossary\/crud\/) operations will be performed."
            },
            "typeVersion": 1
        },
        {
            "id": "374761f7-9299-41a3-8bb3-25434f4f9eaf",
            "name": "Find database page",
            "type": "n8n-nodes-base.notion",
            "position": [
                660,
                660
            ],
            "parameters": {
                "options": [],
                "resource": "databasePage",
                "operation": "getAll",
                "returnAll": true,
                "databaseId": "e3503d88-accb-4ddb-aa45-f962cb03e729",
                "filterJson": "={{$node[\"Create custom Notion filters\"].json[\"notionfilter\"]}}",
                "filterType": "json"
            },
            "credentials": {
                "notionApi": {
                    "id": "XNjSmr171NUO17TK",
                    "name": "REPLACE ME"
                }
            },
            "typeVersion": 2
        },
        {
            "id": "159db4ca-c8da-439a-aa44-63527c7b9dcd",
            "name": "Switch",
            "type": "n8n-nodes-base.switch",
            "position": [
                860,
                660
            ],
            "parameters": {
                "rules": {
                    "rules": [
                        {
                            "value2": "jira:issue_updated"
                        },
                        {
                            "output": 1,
                            "value2": "jira:issue_deleted"
                        }
                    ]
                },
                "value1": "={{$node[\"On issues created\/updated\/deleted\"].json[\"webhookEvent\"]}}",
                "dataType": "string"
            },
            "typeVersion": 1
        },
        {
            "id": "080fb157-e160-4bf0-9348-05eabee60f9f",
            "name": "IF",
            "type": "n8n-nodes-base.if",
            "position": [
                240,
                560
            ],
            "parameters": {
                "conditions": {
                    "string": [
                        {
                            "value1": "={{$node[\"On issues created\/updated\/deleted\"].json[\"webhookEvent\"]}}",
                            "value2": "jira:issue_created"
                        }
                    ]
                }
            },
            "typeVersion": 1
        },
        {
            "id": "3ec2a130-251d-4d28-8dc3-ca31f528f90e",
            "name": "Delete issue",
            "type": "n8n-nodes-base.notion",
            "position": [
                1080,
                760
            ],
            "parameters": {
                "pageId": "={{ $node[\"Find database page\"].json[\"id\"] }}",
                "operation": "archive"
            },
            "credentials": {
                "notionApi": {
                    "id": "XNjSmr171NUO17TK",
                    "name": "REPLACE ME"
                }
            },
            "typeVersion": 2
        },
        {
            "id": "5a23919a-ee95-4935-b619-5eb0b486eef7",
            "name": "On issues created\/updated\/deleted",
            "type": "n8n-nodes-base.jiraTrigger",
            "position": [
                -160,
                560
            ],
            "webhookId": "042e0fd3-9776-4c23-9f0d-dc032ef22744",
            "parameters": {
                "events": [
                    "jira:issue_created",
                    "jira:issue_deleted",
                    "jira:issue_updated"
                ],
                "additionalFields": []
            },
            "credentials": {
                "jiraSoftwareCloudApi": {
                    "id": "xZbqpSTMv8IjtS5Y",
                    "name": "REPLACE ME"
                }
            },
            "typeVersion": 1
        },
        {
            "id": "6d3bbfce-cbfc-4590-827b-4ec1eb5c11b6",
            "name": "Lookup table",
            "type": "n8n-nodes-base.code",
            "position": [
                40,
                560
            ],
            "parameters": {
                "jsCode": "\/* Lookup table for the statuses in Jira. You can find the status IDs by\n   following the instructions provided at this link:\n   https:\/\/community.atlassian.com\/t5\/Jira-Service-Management\/How-do-I-get-a-list-of-statuses-that-show-the-associated-status\/qaq-p\/1803682\n*\/\nvar lookup = {\n    \"To Do\": \"To do\",\n    \"In Progress\": \"In progress\",\n    \"Done\": \"Done\"\n};\n\n\n\nnew_items = [];\n\nfor (item of $items(\"On issues created\/updated\/deleted\")) {\n  console.log(item.json[\"Status\"]);\n  \/\/ instantiate a new variable for status\n  var issue_status = item.json[\"issue\"][\"fields\"][\"status\"][\"name\"];\n  \/\/ check if the status is in the lookup table\n  if (issue_status in lookup) {\n    \/\/ if it is, then add the status ID to the new_items array\n    new_items.push({\n      \"Status ID\": lookup[issue_status]\n    });\n  }\n}\n\nreturn new_items;"
            },
            "typeVersion": 2
        },
        {
            "id": "bdc966ce-16bf-47de-aba3-fcd0f912f95f",
            "name": "Create custom Notion filters",
            "type": "n8n-nodes-base.code",
            "position": [
                460,
                660
            ],
            "parameters": {
                "jsCode": "const new_items = [];\nfor (item of $items(\"On issues created\/updated\/deleted\")) {\n\n  \/\/ do not process this item if action is created\n  if (item.json[\"webhookEvent\"] == \"jira:issue_created\") {\n    continue;\n  }\n\n  \/\/ build the output template\n  var new_item = {\n    \"json\": {\n      \"notionfilter\": \"\"\n    }\n  };\n  new_item = JSON.stringify(new_item);\n  new_item = JSON.parse(new_item);\n  new_items.push(new_item);\n\n  \/\/ create Notion filter to find specific database page by issue ID\n  notionfilter = {\n    or: [],\n  }\n\n  const filter = {\n    property: 'Issue ID',\n    number: {\n      equals: parseInt(item.json[\"issue\"][\"id\"])\n    }\n  }\n  notionfilter[\"or\"].push(filter);\n\n  new_item.json.notionfilter = JSON.stringify(notionfilter); \n}\n\nreturn new_items;"
            },
            "typeVersion": 2
        },
        {
            "id": "f92157a9-1a63-4907-87c8-0b54c3b0ac8e",
            "name": "Update issue",
            "type": "n8n-nodes-base.notion",
            "position": [
                1080,
                560
            ],
            "parameters": {
                "pageId": "={{ $node[\"Find database page\"].json[\"id\"] }}",
                "options": [],
                "resource": "databasePage",
                "operation": "update",
                "propertiesUi": {
                    "propertyValues": [
                        {
                            "key": "Title|title",
                            "title": "={{$node[\"On issues created\/updated\/deleted\"].json[\"issue\"][\"fields\"][\"summary\"]}}"
                        },
                        {
                            "key": "Status|select",
                            "selectValue": "={{$node[\"Lookup table\"].json[\"Status ID\"]}}"
                        }
                    ]
                }
            },
            "credentials": {
                "notionApi": {
                    "id": "XNjSmr171NUO17TK",
                    "name": "REPLACE ME"
                }
            },
            "typeVersion": 2
        }
    ],
    "active": false,
    "pinData": [],
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "490138aa-d92d-439a-b7bb-d6d00a9fab86",
    "connections": {
        "IF": {
            "main": [
                [
                    {
                        "node": "Create database page",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Create custom Notion filters",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Switch": {
            "main": [
                [
                    {
                        "node": "Update issue",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Delete issue",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Lookup table": {
            "main": [
                [
                    {
                        "node": "IF",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Find database page": {
            "main": [
                [
                    {
                        "node": "Switch",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Create custom Notion filters": {
            "main": [
                [
                    {
                        "node": "Find database page",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "On issues created\/updated\/deleted": {
            "main": [
                [
                    {
                        "node": "Lookup table",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

Building RAG Chatbot for Movie Recommendations with Qdrant and Open AI
View
New WooCommerce product to Slack
View
Store Notion's Pages as Vector Documents into Supabase with OpenAI
View
Emailreadimap Send
View
Google Analytics: Weekly Report
View
HTTP Spreadsheetfile Create Webhook
View
OpenSea Analytics Agent Tool
View
Manual Debughelper Create Triggered
View
Send financial metrics monthly to Mattermost
View
Splitout Schedule Automation Webhook
View