Automatisation Jira avec n8n : synchronisation des commentaires vers Notion
Ce workflow n8n a pour objectif de synchroniser les problèmes Jira avec une base de données Notion, en intégrant les commentaires qui y sont ajoutés. Dans un contexte professionnel où la gestion de projet est cruciale, ce type d'automatisation permet aux équipes de centraliser les informations et d'améliorer la collaboration. Les cas d'usage incluent la mise à jour automatique des statuts de projet, la gestion des retours clients ou encore le suivi des tâches en cours.
- Étape 1 : le workflow est déclenché par un événement dans Jira, qu'il s'agisse de la création, de la mise à jour ou de la suppression d'un problème.
- Étape 2 : il utilise le nœud 'Find database page' pour rechercher la page correspondante dans Notion.
- Étape 3 : selon le résultat de cette recherche, le workflow peut créer une nouvelle page ou mettre à jour une page existante avec les informations du problème Jira.
- Étape 4 : des conditions sont appliquées via le nœud 'Switch' pour déterminer si des actions supplémentaires, comme la suppression d'un problème, doivent être effectuées. Ce workflow offre des bénéfices significatifs en termes de gain de temps et de réduction des erreurs manuelles, permettant ainsi aux équipes de se concentrer sur des tâches à plus forte valeur ajoutée.
Workflow n8n Jira, Notion, gestion de projet : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n Jira, Notion, gestion de projet : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"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.65822784810126,
"height": 137.9746835443038,
"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
}
]
]
}
}
}Workflow n8n Jira, Notion, gestion de projet : pour qui est ce workflow ?
Ce workflow s'adresse aux équipes de développement et de gestion de projet qui utilisent Jira et Notion pour suivre leurs tâches. Il est idéal pour les entreprises de taille moyenne à grande qui cherchent à automatiser leurs processus de gestion de projet, tout en ayant un niveau technique intermédiaire.
Workflow n8n Jira, Notion, gestion de projet : problème résolu
Ce workflow résout le problème de la désynchronisation entre Jira et Notion, qui peut entraîner des pertes d'informations et des erreurs dans le suivi des tâches. En automatisant la mise à jour des commentaires et des statuts, il réduit le temps passé à gérer manuellement ces informations et diminue le risque d'erreurs humaines. Les utilisateurs bénéficient d'une vue d'ensemble toujours à jour de leurs projets, ce qui améliore la prise de décision et la collaboration au sein des équipes.
Workflow n8n Jira, Notion, gestion de projet : étapes du workflow
Étape 1 : le workflow est déclenché par un événement dans Jira, tel que la création ou la mise à jour d'un problème.
- Étape 1 : le nœud 'Find database page' recherche la page correspondante dans Notion.
- Étape 2 : selon le résultat, le workflow peut créer une nouvelle page avec le nœud 'Create database page' ou mettre à jour une page existante avec le nœud 'Update issue'.
- Étape 3 : des conditions sont évaluées via le nœud 'Switch' pour déterminer les actions à entreprendre, comme la suppression d'un problème avec le nœud 'Delete issue'.
- Étape 4 : des filtres personnalisés peuvent être appliqués pour affiner les données synchronisées.
Workflow n8n Jira, Notion, gestion de projet : guide de personnalisation
Pour personnaliser ce workflow, commencez par modifier le nœud 'On issues created/updated/deleted' pour adapter les événements Jira que vous souhaitez suivre. Vous pouvez également ajuster les paramètres du nœud 'Find database page' pour cibler la bonne base de données Notion. Pensez à personnaliser les filtres dans le nœud 'Create custom Notion filters' pour affiner les informations transférées. Assurez-vous que les identifiants de page et les options de mise à jour dans les nœuds 'Update issue' et 'Delete issue' correspondent à votre configuration Notion. Enfin, surveillez le flux pour détecter d'éventuelles erreurs et ajustez les conditions dans le nœud 'Switch' selon vos besoins.