Automatisation de la configuration de projet agile avec GPT-5 Mini, Jira et une interface de formulaire

Avancé

Ceci est unMultimodal AIworkflow d'automatisation du domainecontenant 42 nœuds.Utilise principalement des nœuds comme Set, Jira, Gmail, Limit, Merge. Utiliser GPT-5 Mini, Jira et une interface de formulaire pour automatiser la configuration de projets Agile

Prérequis
  • Compte Google et informations d'identification Gmail API
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
  • Clé API OpenAI

Catégorie

Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "meta": {
    "instanceId": "d1786ab0d745a7498abf13a9c2cdabb1374c006e889b79eef64ce0386b8f8a41"
  },
  "nodes": [
    {
      "id": "437ca695-4819-42a9-bd4d-acfaf65b0d32",
      "name": "Lors du clic sur 'Tester le workflow'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -3580,
        200
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7e3b7bf0-dc63-4e6e-b867-4ebf173a016d",
      "name": "À la soumission du formulaire",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -3580,
        -80
      ],
      "webhookId": "acdbaaf3-4030-4459-a5a9-4d552bc23a4a",
      "parameters": {
        "options": {},
        "formTitle": "Jira Full Project Generator",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Project Name",
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Project Full Features",
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "f616ce48-7636-4abc-b5de-67d01de03501",
      "name": "OpenAI Modèle de chat",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -700,
        260
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-mini",
          "cachedResultName": "gpt-5-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "MGwGMKEkdcjzlYCw",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "fc44a4e8-a301-48dc-b9f7-a09f639844f0",
      "name": "Analyseur de sortie structurée",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -500,
        260
      ],
      "parameters": {
        "jsonSchemaExample": "[\n  {\n    \"story_title\": \"As a [user], I want to [goal], so that [benefit]\",\n    \"story_description\": \"Describe what the user needs and why this feature matters to the business or experience.\",\n    \"epic\": \"Optional Epic Name\",\n    \"sub_tasks\": [\n      {\n        \"title\": \"Design UI for the feature\",\n        \"description\": \"Create wireframes and visual designs for the new feature, ensuring usability and responsiveness.\"\n      },\n      {\n        \"title\": \"Implement frontend logic using React\",\n        \"description\": \"Develop the UI components and integrate them with the application state using React.\"\n      },\n      {\n        \"title\": \"Build backend API endpoint\",\n        \"description\": \"Create the necessary API endpoints using appropriate frameworks to handle feature data.\"\n      },\n      {\n        \"title\": \"Write unit tests\",\n        \"description\": \"Develop unit tests for both frontend and backend components to ensure correctness and reliability.\"\n      },\n      {\n        \"title\": \"Perform integration testing\",\n        \"description\": \"Test how different components interact and ensure the overall feature functions as expected.\"\n      },\n      {\n        \"title\": \"Update project documentation\",\n        \"description\": \"Document the feature’s design, usage instructions, and API endpoints in the project’s knowledge base.\"\n      }\n    ]\n  },\n  {\n    \"story_title\": \"As a [user], I want to [another goal], so that [another benefit]\",\n    \"story_description\": \"Explain why this goal is needed and how it improves user experience or system functionality.\",\n    \"epic\": \"Same or another epic name\",\n    \"sub_tasks\": [\n      {\n        \"title\": \"Task A title\",\n        \"description\": \"Brief but complete description of Task A.\"\n      },\n      {\n        \"title\": \"Task B title\",\n        \"description\": \"Brief but complete description of Task B.\"\n      },\n      {\n        \"title\": \"Task C title\",\n        \"description\": \"Brief but complete description of Task C.\"\n      }\n    ]\n  }\n]"
      },
      "typeVersion": 1.2
    },
    {
      "id": "6b1c7dcb-8ef0-4e87-a116-6d757dfdb089",
      "name": "Boucle sur les éléments",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        0,
        100
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "70df1f92-7042-400c-a022-6056ac631c4e",
      "name": "Diviser",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -280,
        80
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "output"
      },
      "typeVersion": 1
    },
    {
      "id": "f44c306d-7ad8-44b7-9682-cd9a3a0d04de",
      "name": "Créer un projet",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2360,
        100
      ],
      "parameters": {
        "url": "https://nodemationhub.atlassian.net/rest/api/3/project",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"key\": \"{{ $('Project Naming').item.json.output.project_key }}\",\n  \"name\": \"{{ $('Project Naming').item.json.output.project_name }}\",\n  \"projectTypeKey\": \"software\",\n  \"projectTemplateKey\": \"com.pyxis.greenhopper.jira:gh-simplified-agility-scrum\",\n  \"description\": \"Project created via n8n\",\n  \"leadAccountId\": \"5e9e80770d58350c2be60166\", \n  \"assigneeType\": \"PROJECT_LEAD\"\n}\n",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "jiraSoftwareCloudApi"
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "id": "eLBjV5VAQ7XxyjyY",
          "name": "Jira SW Cloud account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "12ac8921-14ab-4d14-b89a-570b546370a8",
      "name": "Analyseur de sortie structurée1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -1900,
        400
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"project_name\": \"Clean and professional project name here\",\n  \"project_description\": \"Clear and concise one-paragraph description of the project with technical clarity and business relevance.\",\n  \"project_key\": \"ABCDE\"\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "3c07cc6e-9f1b-44a6-8622-2f995679d9d6",
      "name": "Nommage du projet",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -3260,
        100
      ],
      "parameters": {
        "text": "=You are a naming expert and technical writer.  \nYour task is to clean up and enhance the following rough input into a professional-sounding **project name** and **concise, clear project description**, and generate a suitable **Jira project key**.\n\nThe project key must be 5 uppercase letters, randomly generated and not necessarily related to the project name. For example, it could be \"XQJTR\" or \"MBZKD\"\n\nReturn only the result in JSON format with three fields: `project_name`, `project_description`, and `project_key`.\n\n---\n\n### Input:\nRaw Project Name: `{{ $json['Project Name'] }}`  \nRaw Project Description: `{{ $json['Project Full Features'] }}`\n\n---\n\n### Output format:\n```json\n{\n  \"project_name\": \"Clean and professional project name here\",\n  \"project_description\": \"Clear and concise one-paragraph description of the project with technical clarity and business relevance.\",\n  \"project_key\": \"ABCDE\"\n}\n```\n\nOnly return the JSON. Do not include any commentary or explanation.\n",
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.6
    },
    {
      "id": "974e678e-7267-42d3-ae7c-fe65eec46bbd",
      "name": "Vérifier la clé du projet et obtenir l'ID de statut",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        -2600,
        100
      ],
      "parameters": {
        "url": "=https://nodemationhub.atlassian.net/rest/api/3/project/{{ $('Set Jira URL').item.json['Jira url'] }}",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "jiraSoftwareCloudApi"
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "id": "eLBjV5VAQ7XxyjyY",
          "name": "Jira SW Cloud account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c5e3b150-6db2-4cdb-9543-00ef8110ed13",
      "name": "Obtenir l'ID de statut",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        -2140,
        100
      ],
      "parameters": {
        "url": "=https://nodemationhub.atlassian.net/rest/api/3/project/{{ $json.key }}",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "jiraSoftwareCloudApi"
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "id": "eLBjV5VAQ7XxyjyY",
          "name": "Jira SW Cloud account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "5660be4c-19f2-4b44-8b5c-c20a14aced12",
      "name": "Diviser1",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        720,
        100
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "sub_tasks"
      },
      "typeVersion": 1
    },
    {
      "id": "14129b11-aaba-4fcd-bea6-c796f3fe71d9",
      "name": "Créer une story",
      "type": "n8n-nodes-base.jira",
      "position": [
        240,
        180
      ],
      "parameters": {
        "project": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Get Status ID').item.json.id }}"
        },
        "summary": "={{ $json.story_title }}",
        "issueType": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Jira Issue ID').item.json[\"story id\"] }}"
        },
        "additionalFields": {
          "description": "={{ $json.story_description }}"
        }
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "id": "eLBjV5VAQ7XxyjyY",
          "name": "Jira SW Cloud account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "16ddae67-4e53-48b0-a928-6053798b53e1",
      "name": "Fusionner",
      "type": "n8n-nodes-base.merge",
      "position": [
        460,
        560
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.1
    },
    {
      "id": "3d64bb50-6887-46cd-b6cf-f6c84160c82c",
      "name": "Limite",
      "type": "n8n-nodes-base.limit",
      "position": [
        -200,
        400
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "1507418d-2328-4126-b188-ba3ee8a54c66",
      "name": "Agréger",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        200,
        -100
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {}
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "57987e01-7da1-4615-b70f-43a19d785e4d",
      "name": "Filtrer",
      "type": "n8n-nodes-base.filter",
      "position": [
        -1640,
        80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2fb0dfa5-853a-4970-8d6a-26d26852c4a8",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": "Story"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "a26ab23f-11c0-4957-ac16-04b23994416f",
      "name": "Filtrer1",
      "type": "n8n-nodes-base.filter",
      "position": [
        -1640,
        260
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2fb0dfa5-853a-4970-8d6a-26d26852c4a8",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": "Subtask"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "d6a7c1ab-958b-4f8f-add0-d1d326278535",
      "name": "Diviser4",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -1800,
        80
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "issueTypes"
      },
      "typeVersion": 1
    },
    {
      "id": "8de2bd70-f220-4022-b2cf-876c7532ffa6",
      "name": "Limite2",
      "type": "n8n-nodes-base.limit",
      "position": [
        -1440,
        80
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "74f719d4-3db2-4c5e-8566-9f9842678428",
      "name": "Limite3",
      "type": "n8n-nodes-base.limit",
      "position": [
        -1440,
        260
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d8a51ff0-807a-4d25-b048-43c19738ca42",
      "name": "Jira ID de statut de story",
      "type": "n8n-nodes-base.set",
      "position": [
        -1220,
        80
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1b64c7dd-dcfb-4550-b6ff-851c0d319070",
              "name": "story id",
              "type": "string",
              "value": "={{ $json.id }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "5d2997aa-9b19-4c08-bc40-34ab6a9834cc",
      "name": "Jira ID de statut de sous-tâche",
      "type": "n8n-nodes-base.set",
      "position": [
        -1220,
        260
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1b64c7dd-dcfb-4550-b6ff-851c0d319070",
              "name": "task id",
              "type": "string",
              "value": "={{ $json.id }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "eb86e993-152b-4525-8591-f889b3954b5b",
      "name": "Jira ID d'issue",
      "type": "n8n-nodes-base.merge",
      "position": [
        -1020,
        180
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.1
    },
    {
      "id": "55eb4c0f-0657-45ce-a355-a48455c36626",
      "name": "Lors de l'exécution par un autre workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        1160,
        580
      ],
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "story_id"
            },
            {
              "name": "key"
            },
            {
              "name": "subtask_title"
            },
            {
              "name": "subtask_description"
            },
            {
              "name": "project_id"
            },
            {
              "name": "subtask_type"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "0e8622d4-2d53-4413-aa92-f17b54a06057",
      "name": "Créer une sous-tâche",
      "type": "n8n-nodes-base.jira",
      "position": [
        1720,
        580
      ],
      "parameters": {
        "project": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.project_id }}"
        },
        "summary": "={{ $json.subtask_title }}",
        "issueType": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.subtask_type }}"
        },
        "additionalFields": {
          "description": "={{ $json.subtask_description }}",
          "parentIssueKey": "={{ $json.key }}"
        }
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "id": "eLBjV5VAQ7XxyjyY",
          "name": "Jira SW Cloud account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f59e37d0-f2cd-4b5e-8231-213420143407",
      "name": "Boucle sur les éléments1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1420,
        580
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "5c44b6b4-25c2-4fa8-92c8-374b2b823de0",
      "name": "Note adhésive4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -940,
        -860
      ],
      "parameters": {
        "color": 4,
        "width": 380,
        "height": 760,
        "content": "# 👋 Hi, I’m Billy\n\nI help businesses build **n8n workflows** & **AI automation projects**.  \nNeed help with n8n or AI Automation projects? \nContact me and let’s build your automation together.\n\n📩 **Email:** billychartanto@gmail.com  \n🤝 **n8n Creator:** [n8n.io/creators/billy](https://n8n.io/creators/billy/)\n🌐 **My n8n Projects:** [billychristi.com/n8n](https://www.billychristi.com/n8n)  \n\n\n\n---\n💡 Feel free to get in touch if you’d like help on your next automation project or if you have any feedback or thoughts to share.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9ee76aee-e9ba-4ce1-8493-4ed125defa97",
      "name": "Note adhésive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2840,
        -440
      ],
      "parameters": {
        "color": 4,
        "width": 780,
        "height": 340,
        "content": "## SETUP REQUIRED\n\nWorkflow Configurations:\n- Configure your Jira instance URL in the HTTP Request nodes\n- Update the email address in the Gmail notification node to match your preferred recipient\n- Adjust the user account ID in the Create Project node for the project lead assignment\n- Modify the JSON schema examples in the Structured Output Parser if you need different story formats\n\nRequired Credentials:\n- Jira Software Cloud API Credential\n- OpenAI API Key\n- Gmail OAuth2 Credential"
      },
      "typeVersion": 1
    },
    {
      "id": "7eacbd69-8bf5-4739-a4e4-b7506b91a482",
      "name": "Note adhésive1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2840,
        -860
      ],
      "parameters": {
        "color": 4,
        "width": 780,
        "height": 400,
        "content": "## JIRA Project Generator & JIRA Story Creator with Form Interface using GPT-5\n\nWhat This Template Does:\n\n- Accepts project input through either a web form or manual trigger with project name and feature descriptions\n- Uses OpenAI's GPT-5 model to intelligently clean and structure project information into professional naming and descriptions\n- Automatically creates a new Jira project with proper configuration and templates\n- Generates comprehensive user stories following Agile best practices with \"As a [user], I want to [goal], so that [benefit]\" format\n- Creates detailed sub-tasks for each user story covering design, development, testing, and documentation phases\n- Automatically creates all stories and sub-tasks in the newly generated Jira project\n- Sends email notifications with project details and links upon successful completion\n- Supports both manual testing workflow execution and form-based project submissions "
      },
      "typeVersion": 1
    },
    {
      "id": "c2db7332-eb11-4c4e-8e03-4ed9634ff817",
      "name": "Note adhésive2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2000,
        -440
      ],
      "parameters": {
        "color": 4,
        "width": 980,
        "height": 340,
        "content": "## WORKFLOW PROCESS OVERVIEW\n\nStep 1: Form Trigger or Manual Trigger collects project name and full feature descriptions from user input\nStep 2: Project Naming uses AI to clean and enhance the raw project name into professional format and generates random 5-letter project key\nStep 3: Check Project Key validates that the generated project key doesn't already exist in Jira\nStep 4: Create Project establishes new Jira project with software template and proper configuration settings\nStep 5: Get Status ID retrieves project details and available issue types for story and sub-task creation\nStep 6: Jira Ticket Generator uses AI to analyze project features and generate structured user stories with sub-tasks in JSON format\nStep 7: Split Out processes the generated stories array for individual story creation\nStep 8: Loop Over Items iterates through each user story for systematic processing\nStep 9: Create Story generates individual Jira stories with proper titles, descriptions, and issue type assignments\nStep 10: Execute Workflow triggers sub-workflow to create all associated sub-tasks for each story\nStep 11: Gmail sends completion notification email with project details and direct Jira links for easy access"
      },
      "typeVersion": 1
    },
    {
      "id": "13a9d4b6-f175-4de1-8deb-d2d7ab99c3c5",
      "name": "Note adhésive3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2640,
        -20
      ],
      "parameters": {
        "color": 4,
        "width": 620,
        "height": 300,
        "content": "## Create Project Process\nConfiguration:\nUpdate the Jira credentials with yours."
      },
      "typeVersion": 1
    },
    {
      "id": "3cdb986d-69d7-41b8-ae77-d3bda9dee5c2",
      "name": "Note adhésive5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -740,
        -40
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 280,
        "content": "## Jira Ticket Generator\nThis is where the story is generated.\nYou can adjust the model & prompt based on your use case."
      },
      "typeVersion": 1
    },
    {
      "id": "5c7d7e57-c431-4642-9662-88b3e21ee8a7",
      "name": "Jira Générateur de stories",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -660,
        80
      ],
      "parameters": {
        "text": "=You are a professional Agile project manager and software architect.  \nBased on the following input, generate a detailed list of user stories and their corresponding sub-tasks in **clean JSON format**, ready to be used in Jira.\n\nEach story should follow Agile best practices, structured as:  \n**\"As a [user], I want to [goal], so that [reason]\"**.\n\nEach story and sub-task must include:\n- A **clear and concise title**\n- A **short but detailed description** (1–3 sentences)\n\n---\n\n### Input:\n**Project Name**: `{{ $('When clicking ‘Test workflow’').item.json['Project Name'] }}`  \n**Full Project Feature Description**:  \n`{{ $('When clicking ‘Test workflow’').item.json['Project Full Features'] }}`\n\n---\n\n### Output format:\n```json\n[\n  {\n    \"story_title\": \"As a [user], I want to [goal], so that [benefit]\",\n    \"story_description\": \"Describe what the user needs and why this feature matters to the business or experience.\",\n    \"epic\": \"Optional Epic Name\",\n    \"sub_tasks\": [\n      {\n        \"title\": \"Design UI for the feature\",\n        \"description\": \"Create wireframes and visual designs for the new feature, ensuring usability and responsiveness.\"\n      },\n      {\n        \"title\": \"Implement frontend logic using React\",\n        \"description\": \"Develop the UI components and integrate them with the application state using React.\"\n      },\n      {\n        \"title\": \"Build backend API endpoint\",\n        \"description\": \"Create the necessary API endpoints using appropriate frameworks to handle feature data.\"\n      },\n      {\n        \"title\": \"Write unit tests\",\n        \"description\": \"Develop unit tests for both frontend and backend components to ensure correctness and reliability.\"\n      },\n      {\n        \"title\": \"Perform integration testing\",\n        \"description\": \"Test how different components interact and ensure the overall feature functions as expected.\"\n      },\n      {\n        \"title\": \"Update project documentation\",\n        \"description\": \"Document the feature’s design, usage instructions, and API endpoints in the project’s knowledge base.\"\n      }\n    ]\n  },\n  {\n    \"story_title\": \"As a [user], I want to [another goal], so that [another benefit]\",\n    \"story_description\": \"Explain why this goal is needed and how it improves user experience or system functionality.\",\n    \"epic\": \"Same or another epic name\",\n    \"sub_tasks\": [\n      {\n        \"title\": \"Task A title\",\n        \"description\": \"Brief but complete description of Task A.\"\n      },\n      {\n        \"title\": \"Task B title\",\n        \"description\": \"Brief but complete description of Task B.\"\n      },\n      {\n        \"title\": \"Task C title\",\n        \"description\": \"Brief but complete description of Task C.\"\n      }\n    ]\n  }\n]\n",
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.6
    },
    {
      "id": "e5283ece-c93f-4e26-bd18-edb44a738566",
      "name": "Note adhésive6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        -220
      ],
      "parameters": {
        "color": 4,
        "width": 440,
        "height": 280,
        "content": "## Gmail - Send Notification\nYou can adjust the subject & body of the notification here.\nAlso, update the recipient email."
      },
      "typeVersion": 1
    },
    {
      "id": "a1bc89b7-03c8-44df-8117-4e53cc1ac374",
      "name": "Gmail - Envoyer une notification",
      "type": "n8n-nodes-base.gmail",
      "position": [
        380,
        -100
      ],
      "webhookId": "50d0ac6a-772b-4ec3-88a1-2d234afa56d4",
      "parameters": {
        "sendTo": "n8n_test_result_replace_me@yopmail.com",
        "message": "={{ $('Project Naming').first().json.output.project_name }} is successfully generated on Jira\nProject ID: {{ $('Create Project').first().json.id }}\nProject Key: {{ $('Create Project').first().json.key }}\nProject Link: https://nodemationhub.atlassian.net/jira/servicedesk/projects/{{ $('Create Project').first().json.key }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "Project successfully generated",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "CeBpTZBQSAMKVKJY",
          "name": "Gmail account (Billy Email 2)"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "0269710e-0785-4681-9da5-ad4d9b8a193c",
      "name": "Définir l'URL Jira",
      "type": "n8n-nodes-base.set",
      "position": [
        -2860,
        100
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "31fe9b8d-1cea-40e8-9381-453bea1d2ad1",
              "name": "Jira url",
              "type": "string",
              "value": "https://nodemationhub.atlassian.net"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a521d267-7c7f-4f8f-a3f5-710169392a9d",
      "name": "Définir le tableau des sous-tâches",
      "type": "n8n-nodes-base.set",
      "position": [
        500,
        100
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b65992ed-e101-4975-9c54-fb6e13d1fd40",
              "name": "sub_tasks",
              "type": "array",
              "value": "={{ $('Loop Over Items').item.json.sub_tasks }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8210520b-f9ab-4b1a-8b31-3bcc2cc1130f",
      "name": "Note adhésive7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2940,
        0
      ],
      "parameters": {
        "color": 4,
        "width": 260,
        "height": 260,
        "content": "Update the Jira URL with your Jira instance URL (example: https://testproject.atlassian.net)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d38423f7-1a04-42de-8d5b-65c912d1f32c",
      "name": "Note adhésive8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1840,
        -20
      ],
      "parameters": {
        "color": 4,
        "width": 980,
        "height": 480,
        "content": "## Get Issue ID for Story & Subtask\n"
      },
      "typeVersion": 1
    },
    {
      "id": "24d11677-ed13-412d-8f74-0b56efdec1f5",
      "name": "Exécuter le workflow de création de sous-tâches",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        920,
        580
      ],
      "parameters": {
        "options": {},
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "YeXZlTxxL8OaYXWN",
          "cachedResultName": "Jira Project Generator Template"
        },
        "workflowInputs": {
          "value": {
            "key": "={{ $json.key }}",
            "story_id": "={{ $json.id }}",
            "project_id": "={{ $('Get Status ID').item.json.id }}",
            "subtask_type": "={{ $('Jira Issue ID').item.json[\"task id\"] }}",
            "subtask_title": "={{ $json.title }}",
            "subtask_description": "={{ $json.description }}"
          },
          "schema": [
            {
              "id": "story_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "story_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "key",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "key",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "subtask_title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "subtask_title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "subtask_description",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "subtask_description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "project_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "project_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "subtask_type",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "subtask_type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "fc0bca3f-2050-46ee-b275-8c8f215dbcba",
      "name": "Note adhésive9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        440
      ],
      "parameters": {
        "color": 4,
        "width": 800,
        "height": 400,
        "content": "## Sub-task creator workflow"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {
    "When Executed by Another Workflow": [
      {
        "key": "JGTLW-1",
        "story_id": "10495",
        "project_id": "10165",
        "subtask_type": "10170",
        "subtask_title": "Design UI for adaptive goal creation flow",
        "subtask_description": "Create wireframes and mockups for the adaptive goal setup and progress-tracking screens."
      },
      {
        "key": "JGTLW-1",
        "story_id": "10495",
        "project_id": "10165",
        "subtask_type": "10170",
        "subtask_title": "Implement adaptive goal logic on the frontend",
        "subtask_description": "Develop the React components that let users create, view, and adjust their personalized fitness goals."
      },
      {
        "key": "JGTLW-1",
        "story_id": "10495",
        "project_id": "10165",
        "subtask_type": "10170",
        "subtask_title": "Build backend logic for adaptive goal adjustments",
        "subtask_description": "Develop backend algorithms and endpoints to evaluate user data and update goals dynamically over time."
      },
      {
        "key": "JGTLW-1",
        "story_id": "10495",
        "project_id": "10165",
        "subtask_type": "10170",
        "subtask_title": "Write unit tests for adaptive goal components",
        "subtask_description": "Ensure all critical logic is covered with unit tests for both client-side and server-side functionality."
      },
      {
        "key": "JGTLW-1",
        "story_id": "10495",
        "project_id": "10165",
        "subtask_type": "10170",
        "subtask_title": "Perform integration and behavior-based testing",
        "subtask_description": "Test how users interact with adaptive goals over time and validate correctness of data and suggestions."
      },
      {
        "key": "JGTLW-1",
        "story_id": "10495",
        "project_id": "10165",
        "subtask_type": "10170",
        "subtask_title": "Document adaptive goals feature implementation",
        "subtask_description": "Update internal and user-facing documentation detailing how adaptive goal logic works and how to use it."
      }
    ],
    "When clicking ‘Test workflow’": [
      {
        "formMode": "test",
        "submittedAt": "2025-07-31T13:06:47.458+08:00",
        "Project Name": "Daily planner schedule - Daily planner project",
        "Project Full Features": "Daily planner schedule - Daily planner project"
      }
    ]
  },
  "connections": {
    "3d64bb50-6887-46cd-b6cf-f6c84160c82c": {
      "main": [
        [
          {
            "node": "6b1c7dcb-8ef0-4e87-a116-6d757dfdb089",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "16ddae67-4e53-48b0-a928-6053798b53e1": {
      "main": [
        [
          {
            "node": "24d11677-ed13-412d-8f74-0b56efdec1f5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "57987e01-7da1-4615-b70f-43a19d785e4d": {
      "main": [
        [
          {
            "node": "8de2bd70-f220-4022-b2cf-876c7532ffa6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8de2bd70-f220-4022-b2cf-876c7532ffa6": {
      "main": [
        [
          {
            "node": "d8a51ff0-807a-4d25-b048-43c19738ca42",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "74f719d4-3db2-4c5e-8566-9f9842678428": {
      "main": [
        [
          {
            "node": "5d2997aa-9b19-4c08-bc40-34ab6a9834cc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a26ab23f-11c0-4957-ac16-04b23994416f": {
      "main": [
        [
          {
            "node": "74f719d4-3db2-4c5e-8566-9f9842678428",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1507418d-2328-4126-b188-ba3ee8a54c66": {
      "main": [
        [
          {
            "node": "a1bc89b7-03c8-44df-8117-4e53cc1ac374",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "70df1f92-7042-400c-a022-6056ac631c4e": {
      "main": [
        [
          {
            "node": "3d64bb50-6887-46cd-b6cf-f6c84160c82c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5660be4c-19f2-4b44-8b5c-c20a14aced12": {
      "main": [
        [
          {
            "node": "16ddae67-4e53-48b0-a928-6053798b53e1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "d6a7c1ab-958b-4f8f-add0-d1d326278535": {
      "main": [
        [
          {
            "node": "57987e01-7da1-4615-b70f-43a19d785e4d",
            "type": "main",
            "index": 0
          },
          {
            "node": "a26ab23f-11c0-4957-ac16-04b23994416f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "14129b11-aaba-4fcd-bea6-c796f3fe71d9": {
      "main": [
        [
          {
            "node": "a521d267-7c7f-4f8f-a3f5-710169392a9d",
            "type": "main",
            "index": 0
          },
          {
            "node": "16ddae67-4e53-48b0-a928-6053798b53e1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0269710e-0785-4681-9da5-ad4d9b8a193c": {
      "main": [
        [
          {
            "node": "974e678e-7267-42d3-ae7c-fe65eec46bbd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c5e3b150-6db2-4cdb-9543-00ef8110ed13": {
      "main": [
        [
          {
            "node": "d6a7c1ab-958b-4f8f-add0-d1d326278535",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "eb86e993-152b-4525-8591-f889b3954b5b": {
      "main": [
        [
          {
            "node": "5c7d7e57-c431-4642-9662-88b3e21ee8a7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f44c306d-7ad8-44b7-9682-cd9a3a0d04de": {
      "main": [
        [
          {
            "node": "c5e3b150-6db2-4cdb-9543-00ef8110ed13",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3c07cc6e-9f1b-44a6-8622-2f995679d9d6": {
      "main": [
        [
          {
            "node": "0269710e-0785-4681-9da5-ad4d9b8a193c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0e8622d4-2d53-4413-aa92-f17b54a06057": {
      "main": [
        [
          {
            "node": "f59e37d0-f2cd-4b5e-8231-213420143407",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6b1c7dcb-8ef0-4e87-a116-6d757dfdb089": {
      "main": [
        [
          {
            "node": "1507418d-2328-4126-b188-ba3ee8a54c66",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "14129b11-aaba-4fcd-bea6-c796f3fe71d9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f59e37d0-f2cd-4b5e-8231-213420143407": {
      "main": [
        [],
        [
          {
            "node": "0e8622d4-2d53-4413-aa92-f17b54a06057",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f616ce48-7636-4abc-b5de-67d01de03501": {
      "ai_languageModel": [
        [
          {
            "node": "3c07cc6e-9f1b-44a6-8622-2f995679d9d6",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "5c7d7e57-c431-4642-9662-88b3e21ee8a7",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "7e3b7bf0-dc63-4e6e-b867-4ebf173a016d": {
      "main": [
        [
          {
            "node": "3c07cc6e-9f1b-44a6-8622-2f995679d9d6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a521d267-7c7f-4f8f-a3f5-710169392a9d": {
      "main": [
        [
          {
            "node": "5660be4c-19f2-4b44-8b5c-c20a14aced12",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5c7d7e57-c431-4642-9662-88b3e21ee8a7": {
      "main": [
        [
          {
            "node": "70df1f92-7042-400c-a022-6056ac631c4e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d8a51ff0-807a-4d25-b048-43c19738ca42": {
      "main": [
        [
          {
            "node": "eb86e993-152b-4525-8591-f889b3954b5b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5d2997aa-9b19-4c08-bc40-34ab6a9834cc": {
      "main": [
        [
          {
            "node": "eb86e993-152b-4525-8591-f889b3954b5b",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "fc44a4e8-a301-48dc-b9f7-a09f639844f0": {
      "ai_outputParser": [
        [
          {
            "node": "5c7d7e57-c431-4642-9662-88b3e21ee8a7",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "12ac8921-14ab-4d14-b89a-570b546370a8": {
      "ai_outputParser": [
        [
          {
            "node": "3c07cc6e-9f1b-44a6-8622-2f995679d9d6",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "974e678e-7267-42d3-ae7c-fe65eec46bbd": {
      "main": [
        [
          {
            "node": "f44c306d-7ad8-44b7-9682-cd9a3a0d04de",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "24d11677-ed13-412d-8f74-0b56efdec1f5": {
      "main": [
        [
          {
            "node": "6b1c7dcb-8ef0-4e87-a116-6d757dfdb089",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "55eb4c0f-0657-45ce-a355-a48455c36626": {
      "main": [
        [
          {
            "node": "f59e37d0-f2cd-4b5e-8231-213420143407",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "437ca695-4819-42a9-bd4d-acfaf65b0d32": {
      "main": [
        [
          {
            "node": "3c07cc6e-9f1b-44a6-8622-2f995679d9d6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - IA Multimodale

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds42
Catégorie1
Types de nœuds18
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
Billy Christi

Billy Christi

@billy

I build scalable automation systems with n8n to help businesses save time and cut costs. 💼 n8n expert available for new projects 📩 billychartanto@gmail.com

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34