Sincronizar automáticamente tareas de Easy Redmine con Microsoft To-Do

Intermedio

Este es unMiscellaneous, Project Management, Multimodal AIflujo de automatización del dominio deautomatización que contiene 11 nodos.Utiliza principalmente nodos como Code, SplitOut, MicrosoftToDo, ScheduleTrigger, EasyRedmine. Sincronizar automáticamente tareas de Easy Redmine con Microsoft To-Do

Requisitos previos
  • No hay requisitos previos especiales, puede importar y usarlo directamente
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "K51hnk5IudD64T80",
  "meta": {
    "instanceId": "ccf4e500c5536799e0925f03390f0fd338e2b5a5bc862f6a57b5552acfdf3861"
  },
  "name": "Auto-Sync Easy Redmine Tasks to Microsoft To-Do",
  "tags": [],
  "nodes": [
    {
      "id": "9881a903-5665-4cab-909c-33ace2e1449d",
      "name": "Disparador programado",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -624,
        160
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "33b91048-42f0-4355-810a-c0f60fd0c56e",
      "name": "Nota adhesiva2",
      "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": "Nota adhesiva3",
      "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": "Nota adhesiva4",
      "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": "Get To-Do in Specific List",
      "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": "Clean To-Do List",
      "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": "Just One Output after Deletion",
      "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": "Get Easy Redmine Task by Filtrar",
      "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": "Split Out Tasks",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        288,
        176
      ],
      "parameters": {
        "include": "allOtherFields",
        "options": {},
        "fieldToSplitOut": "issues"
      },
      "typeVersion": 1
    },
    {
      "id": "dc827f02-f252-4d32-8fc4-7a5f3c32e042",
      "name": "Add Easy Redmine Task Link to To-Do Description",
      "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": "Create To-Do Tasks",
      "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": "Get Easy Redmine Task by Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "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": "Get Easy Redmine Task by Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Easy Redmine Task by Filter": {
      "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
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Intermedio - Varios, Gestión de proyectos, IA Multimodal

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos11
Categoría3
Tipos de nodos6
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Autor
Easy8.ai

Easy8.ai

@easy8ai

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

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34