{
  "id": "",
  "name": "Auto-Sync Easy8 Tasks to Microsoft To-Do",
  "tags": [],
  "nodes": [
    {
      "id": "e86e2307-d4d6-416c-95f2-ec5898b13375",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        992,
        560
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ffc03cb7-c8f6-43cb-ae26-0365d9d9ce13",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        16,
        16
      ],
      "parameters": {
        "width": 640,
        "height": 1328,
        "content": "## Auto-Sync Easy8 Tasks to Microsoft To-Do  \n**Automatically sync filtered Easy8 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 Easy8 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\u2019s perfect for teams or individuals using Easy8 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 Easy8 tasks\u2014no manual copy-pasting required.\n\n### Use Case  \nAny user juggling Easy8 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 Easy8 task by filter (get-many: issues)  \n  => Uses saved filters in Easy8 to pull only specific tasks (e.g., tasks assigned to you, open status, etc.).\n\n- Split Out  \n  => Breaks down Easy8  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 Easy8 URL.\n  => Formats each task's data, including a direct Easy8 task link, for Microsoft To Do.\n\n- Create to-do tasks (create: task)  \n  => Creates a new Microsoft To Do item for each Easy8 task.\n\n### How to use  \n- Download and import the workflow into your n8n instance.  \n- Connect your Easy8 and Microsoft To Do (Microsoft Graph) credentials.  \n- Configure the following nodes to match your setup:  \n  => `Get to-do in specific list` \u2192 Select your target Microsoft To Do list  \n  => `Create to-do tasks` \u2192 Use the same list for output  \n  => `Get Easy8 task by filter` \u2192 Set your custom Easy8 filters  \n- Update the Function node generating the task description to use your Easy8 domain:  \n  `https://your-easy8-app.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- Easy8 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\n- Contact our team directly => https://www.easy8.com/ai-agency\n- Visit our youtube channel => https://www.youtube.com/@Easy8Group\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d86ad058-cdb4-4203-bd47-141401526dc7",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        768,
        16
      ],
      "parameters": {
        "color": 7,
        "width": 1872,
        "height": 832,
        "content": "## Auto-Sync Easy8 Tasks to Microsoft To-Do  \n**1) \"Schedule Trigger\" \u2013 run the workflow daily at a chosen time**  \n**2) \"Get all tasks from Microsoft To Do list\" \u2013 clear existing tasks to avoid duplication**  \n**3) \"Code Node\" \u2013 confirm deletion before continuing**  \n**4) \"Get Easy8 tasks by filter\" \u2013 pull tasks using predefined Easy8 filters (e.g. assigned to me, open status)**  \n**5) \"Split\" \u2013 process each task individually**  \n**6) \"Format description with Easy8 link\" \u2013 enrich the task with a direct issue URL**  \n**7) \"Create task in Microsoft To Do\" \u2013 sync each Easy8 task to your To Do list**\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d2971304-13d0-4e70-bb99-7afcaf8af2dc",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2720,
        32
      ],
      "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 Easy8:\n\n---\n\n### \ud83d\udcdd **Task:** Test  \n**\ud83c\udd94 Easy8 Issue ID:** [1354](https://your-easy8-domain.com/issues/1354)  \n**\ud83d\udcc5 Due Date:** 13.02.2025\n**\u2b50 Priority:** Important (starred)\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d66870d4-31da-4dde-9422-98f96a57049b",
      "name": "Get To-Do in Specific List",
      "type": "n8n-nodes-base.microsoftToDo",
      "position": [
        1216,
        560
      ],
      "parameters": {
        "operation": "getAll",
        "taskListId": "YOUR_MICROSOFT_TO_DO_LIST_ID"
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "7628a86d-379f-468c-9d13-e2bf4d2550a8",
      "name": "Clean To-Do List",
      "type": "n8n-nodes-base.microsoftToDo",
      "onError": "continueErrorOutput",
      "position": [
        1424,
        560
      ],
      "parameters": {
        "taskId": "={{ $json.id }}",
        "operation": "delete",
        "taskListId": "YOUR_MICROSOFT_TO_DO_LIST_ID"
      },
      "typeVersion": 1
    },
    {
      "id": "fc6fce0c-2a6e-4def-80be-ed77fa274b62",
      "name": "Just One Output after Deletion",
      "type": "n8n-nodes-base.code",
      "position": [
        1712,
        352
      ],
      "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": "18741ee4-5751-4cdc-99df-f5f4f093ac30",
      "name": "Split Out Tasks",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1904,
        576
      ],
      "parameters": {
        "include": "allOtherFields",
        "options": {},
        "fieldToSplitOut": "issues"
      },
      "typeVersion": 1
    },
    {
      "id": "b36300aa-9b7c-4d96-a3d8-865ff0efcd20",
      "name": "Create To-Do Tasks",
      "type": "n8n-nodes-base.microsoftToDo",
      "position": [
        2288,
        576
      ],
      "parameters": {
        "title": "={{ $('Split Out Tasks').item.json.issues.subject }}",
        "operation": "create",
        "taskListId": "YOUR_MICROSOFT_TO_DO_LIST_ID",
        "additionalFields": {
          "content": "={{ $json.enrichedText }}",
          "dueDateTime": "={{ $('Split Out Tasks').item.json.issues.due_date }}"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2d3d84da-ff0e-4eab-815a-a6ca27ff50f0",
      "name": "Get Easy8 Task by Filter",
      "type": "@easy8/n8n-nodes-easy8.easy8",
      "position": [
        1712,
        576
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "48da9313-d65e-4f29-91fb-0ba39ba40577",
      "name": "Add Easy8 Task Link to To-Do Description",
      "type": "n8n-nodes-base.code",
      "position": [
        2096,
        576
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Fixed part of the URL\nconst baseUrl = \"https://your-easy8-app.com/issues/\"; // here you need to add your Easy8 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
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "executionOrder": "v1"
  },
  "versionId": "",
  "connections": {
    "Split Out Tasks": {
      "main": [
        [
          {
            "node": "Add Easy8 Task Link to To-Do Description",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clean To-Do List": {
      "main": [
        [
          {
            "node": "Just One Output after Deletion",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get Easy8 Task by Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get To-Do in Specific List",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create To-Do Tasks": {
      "main": [
        []
      ]
    },
    "Get Easy8 Task by Filter": {
      "main": [
        [
          {
            "node": "Split Out Tasks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get To-Do in Specific List": {
      "main": [
        [
          {
            "node": "Clean To-Do List",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Just One Output after Deletion": {
      "main": [
        [
          {
            "node": "Get Easy8 Task by Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Easy8 Task Link to To-Do Description": {
      "main": [
        [
          {
            "node": "Create To-Do Tasks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}