Synchroniser automatiquement les tâches Easy Redmine avec Microsoft To-Do

Intermédiaire

Ceci est unMiscellaneous, Project Management, Multimodal AIworkflow d'automatisation du domainecontenant 11 nœuds.Utilise principalement des nœuds comme Code, SplitOut, MicrosoftToDo, ScheduleTrigger, EasyRedmine. Synchroniser automatiquement les tâches Easy Redmine vers Microsoft To-Do

Prérequis
  • Aucun prérequis spécial, prêt à l'emploi après importation
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
{
  "id": "K51hnk5IudD64T80",
  "meta": {
    "instanceId": "ccf4e500c5536799e0925f03390f0fd338e2b5a5bc862f6a57b5552acfdf3861"
  },
  "name": "Auto-Sync Easy Redmine Tasks to Microsoft To-Do",
  "tags": [],
  "nodes": [
    {
      "id": "9881a903-5665-4cab-909c-33ace2e1449d",
      "name": "Déclencheur programmé",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -624,
        160
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "33b91048-42f0-4355-810a-c0f60fd0c56e",
      "name": "Note adhésive 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1616,
        -400
      ],
      "parameters": {
        "width": 640,
        "height": 1600,
        "content": "## Auto-Sync Easy Redmine Tasks to Microsoft To-Do  \n**Automatically sync filtered Easy Redmine tasks into a specific Microsoft To Do list, ensuring your task list stays current and clean.**\n\n### About Workflow  \nThis workflow pulls tasks from Easy Redmine using a predefined filter and syncs them to a Microsoft To Do list. Before syncing, it clears existing tasks in the selected list to avoid duplication. It’s perfect for teams or individuals using Easy Redmine for project management but prefer using Microsoft To Do for daily task tracking.\n\nWith this automation, your Microsoft To Do will always reflect your latest Redmine tasks—no manual copy-pasting required.\n\n### Use Case  \nAny user juggling Easy Redmine for planning and Microsoft To Do for execution can benefit from this integration.  \n- Clean up your To Do list daily and refill it with only active tasks.  \n- Helps personal or team task lists stay focused, accurate, and actionable.  \n- Great for daily check-ins, sprint planning, or syncing high-priority tasks.\n\n### How it works  \n- Schedule Trigger  \n  => Executes the workflow at a scheduled time (e.g. every day at 9 AM).  \n\n- Get to-do in specific list (getAll: task)  \n  => Retrieves all tasks currently present in the selected Microsoft To Do list.\n\n- Clean to-do list (delete: task)  \n  => Deletes all existing tasks from the target list to avoid duplicates.\n\n- Just one output after deletion (Code Node)  \n  => Ensures the workflow only continues after all deletions are confirmed and complete.\n\n- Get Easy Redmine task by filter (get-many: issues)  \n  => Uses saved filters in Redmine to pull only specific tasks (e.g., tasks assigned to you, open status, etc.).\n\n- Split Out  \n  => Breaks down Redmine task data to process each item individually.\n\n- Add ER task link to TO-do description (Code Node)  \n  => You need to add your Easy Redmine URL.\n  => Formats each task's data, including a direct Redmine task link, for Microsoft To Do.\n\n- Create to-do tasks (create: task)  \n  => Creates a new Microsoft To Do item for each Redmine task.\n\n### How to use  \n- Download and import the workflow into your n8n instance.  \n- Connect your Easy Redmine and Microsoft To Do (Microsoft Graph) credentials.  \n- Configure the following nodes to match your setup:  \n  => `Get to-do in specific list` → Select your target Microsoft To Do list  \n  => `Create to-do tasks` → Use the same list for output  \n  => `Get Easy Redmine task by filter` → Set your custom Redmine filters  \n- Update the Function node generating the task description to use your Redmine domain:  \n  `https://your-redmine-url.com/issues/{{ $json.id }}`  \n- Adjust the schedule trigger to your local timezone and preferred sync time.  \n- Run a test manually to confirm tasks are being cleared and recreated correctly.\n\n### Requirements  \n- Microsoft To Do account  \n  => With access to the relevant task list  \n- Easy Redmine application\n=> ideally technical user for API calls with specific permissions\n- n8n instance  \n  => Cloud or self-hosted version   \n\n\n### Need Help? \n- Reach out through n8n community => https://community.n8n.io/u/easy8.ai\n- Contant our team directly => Easy8.ai\n- Visit our youtube channel => https://www.youtube.com/@easy8ai \n"
      },
      "typeVersion": 1
    },
    {
      "id": "9c14d374-b5ac-4e41-8aa9-c3215e5f916f",
      "name": "Note adhésive 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -848,
        -384
      ],
      "parameters": {
        "color": 7,
        "width": 1872,
        "height": 832,
        "content": "## Auto-Sync Easy Redmine Tasks to Microsoft To-Do  \n**1) \"Schedule Trigger\" – run the workflow daily at a chosen time**  \n**2) \"Get all tasks from Microsoft To Do list\" – clear existing tasks to avoid duplication**  \n**3) \"Code Node\" – confirm deletion before continuing**  \n**4) \"Get Easy Redmine tasks by filter\" – pull tasks using predefined Redmine filters (e.g. assigned to me, open status)**  \n**5) \"Split\" – process each task individually**  \n**6) \"Format description with Redmine link\" – enrich the task with a direct issue URL**  \n**7) \"Create task in Microsoft To Do\" – sync each Redmine task to your To Do list**\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6625c1e4-095f-4854-aa2b-d49572ee0a0f",
      "name": "Note adhésive 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1104,
        -368
      ],
      "parameters": {
        "width": 512,
        "height": 368,
        "content": "## Final Output Example (Microsoft To-Do)\n\nA new task will be created in Microsoft To-Do with the following fields synced from Easy Redmine:\n\n---\n\n### 📝 **Task:** Test  \n**🆔 Redmine Issue ID:** [1354](https://your-redmine-url.com/issues/1354)  \n**📅 Due Date:** 13.02.2025\n**⭐ Priority:** Important (starred)\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "05c99cdc-59d3-4e8a-8f3e-efc4aadedc3e",
      "name": "Obtenir les tâches dans une liste spécifique",
      "type": "n8n-nodes-base.microsoftToDo",
      "position": [
        -400,
        160
      ],
      "parameters": {
        "operation": "getAll",
        "taskListId": "AAMkADcxZTQyNjNhLWViZmMtNDAzYi05YmVlLTcwN2ZjZmJhMDMzNgAuAAAAAACrAudNNU6fQ4QFo2qMXN9hAQCQ5fbr8-B1RaMBjqcs7HbzAAThA6X8AAA="
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "b60846a5-08d2-4f9b-9861-e59bfa9a7b83",
      "name": "Nettoyer la liste To-Do",
      "type": "n8n-nodes-base.microsoftToDo",
      "onError": "continueErrorOutput",
      "position": [
        -192,
        160
      ],
      "parameters": {
        "taskId": "={{ $json.id }}",
        "operation": "delete",
        "taskListId": "AAMkADcxZTQyNjNhLWViZmMtNDAzYi05YmVlLTcwN2ZjZmJhMDMzNgAuAAAAAACrAudNNU6fQ4QFo2qMXN9hAQCQ5fbr8-B1RaMBjqcs7HbzAAThA6X8AAA="
      },
      "typeVersion": 1
    },
    {
      "id": "d8e153e3-d025-4f13-96be-ea7535791d3d",
      "name": "Sortie unique après suppression",
      "type": "n8n-nodes-base.code",
      "position": [
        96,
        -48
      ],
      "parameters": {
        "jsCode": "const allTasks = items.map(item => item.json);\nconst summary = allTasks.map(task => `- ${task.title}`).join('\\n');\n\nreturn [\n  {\n    json: {\n      summary\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "b9eb8111-45d2-41b7-a360-8d1fb5e05dd7",
      "name": "Obtenir les tâches Easy Redmine par filtre",
      "type": "@easysoftware/n8n-nodes-easy-redmine.easyRedmine",
      "position": [
        96,
        176
      ],
      "parameters": {
        "issueQueryId": 5342
      },
      "credentials": {
        "easyRedmineApi": {
          "id": "abcd1234efgh567",
          "name": "Name of Credentials "
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c728b2f2-a159-4d10-b2ac-7ae6fccc7589",
      "name": "Diviser les tâches",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        288,
        176
      ],
      "parameters": {
        "include": "allOtherFields",
        "options": {},
        "fieldToSplitOut": "issues"
      },
      "typeVersion": 1
    },
    {
      "id": "dc827f02-f252-4d32-8fc4-7a5f3c32e042",
      "name": "Ajouter le lien de la tâche Easy Redmine à la description To-Do",
      "type": "n8n-nodes-base.code",
      "position": [
        480,
        176
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Fixed part of the URL\nconst baseUrl = \"https://es.easyproject.com/issues/\"; // here you need to add your Easy Redmine URL.\"\n\n// Variable part from previous node\nconst variablePart =  $('Split Out Tasks').item.json.issues.id ;// e.g., \"12345\"\n\n// Original text to enrich\nconst text = $('Split Out Tasks').item.json.issues.description; // e.g., \"This is the task description.\"\n\n// Construct the full link\nconst fullLink = `${baseUrl}${variablePart}`;\n\n// Enrich the text\nconst enrichedText = `${fullLink}\\n\\n${text}`;\n\nreturn {\n  json: {\n    enrichedText\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "cb10ba1e-f154-4ca3-a694-2d6b82cdd245",
      "name": "Créer des tâches To-Do",
      "type": "n8n-nodes-base.microsoftToDo",
      "position": [
        672,
        176
      ],
      "parameters": {
        "title": "={{ $('Split Out Tasks').item.json.issues.subject }}",
        "operation": "create",
        "taskListId": "AAMkADcxZTQyNjNhLWViZmMtNDAzYi05YmVlLTcwN2ZjZmJhMDMzNgAuAAAAAACrAudNNU6fQ4QFo2qMXN9hAQCQ5fbr8-B1RaMBjqcs7HbzAAThA6X8AAA=",
        "additionalFields": {
          "content": "={{ $json.enrichedText }}",
          "dueDateTime": "={{ $('Split Out Tasks').item.json.issues.due_date }}"
        }
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "e0842545-bfe2-4c28-8244-d7547918d43c",
  "connections": {
    "c728b2f2-a159-4d10-b2ac-7ae6fccc7589": {
      "main": [
        [
          {
            "node": "dc827f02-f252-4d32-8fc4-7a5f3c32e042",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b60846a5-08d2-4f9b-9861-e59bfa9a7b83": {
      "main": [
        [
          {
            "node": "d8e153e3-d025-4f13-96be-ea7535791d3d",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "b9eb8111-45d2-41b7-a360-8d1fb5e05dd7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9881a903-5665-4cab-909c-33ace2e1449d": {
      "main": [
        [
          {
            "node": "05c99cdc-59d3-4e8a-8f3e-efc4aadedc3e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "05c99cdc-59d3-4e8a-8f3e-efc4aadedc3e": {
      "main": [
        [
          {
            "node": "b60846a5-08d2-4f9b-9861-e59bfa9a7b83",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d8e153e3-d025-4f13-96be-ea7535791d3d": {
      "main": [
        [
          {
            "node": "b9eb8111-45d2-41b7-a360-8d1fb5e05dd7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b9eb8111-45d2-41b7-a360-8d1fb5e05dd7": {
      "main": [
        [
          {
            "node": "c728b2f2-a159-4d10-b2ac-7ae6fccc7589",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dc827f02-f252-4d32-8fc4-7a5f3c32e042": {
      "main": [
        [
          {
            "node": "cb10ba1e-f154-4ca3-a694-2d6b82cdd245",
            "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é ?

Intermédiaire - Divers, Gestion de projet, 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é
Intermédiaire
Nombre de nœuds11
Catégorie3
Types de nœuds6
Description de la difficulté

Adapté aux utilisateurs expérimentés, avec des workflows de complexité moyenne contenant 6-15 nœuds

Auteur
Easy8.ai

Easy8.ai

@easy8ai

We guide B2B companies to use AI agents & automations with ease. Powered by Easy Software & n8n.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34