AutomationFlowsData & Sheets › Workflow 02

Workflow 02

WorkFlow 02. Uses notion. Scheduled trigger; 23 nodes.

Cron / scheduled trigger★★★★☆ complexity23 nodesNotion
Data & Sheets Trigger: Cron / scheduled Nodes: 23 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "WorkFlow 02",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "months",
              "triggerAtHour": 4
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        464,
        -48
      ],
      "id": "6d478e7e-0d9b-46c2-8698-6e1150c147c7",
      "name": "Schedule Trigger"
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "_log.workflow",
              "value": "={{$workflow.name}}"
            },
            {
              "name": "_log.executionId",
              "value": "={{$execution.id}}"
            }
          ]
        },
        "options": {}
      },
      "id": "23249eb1-67de-4c5e-b3af-5bbaf04fcb7f",
      "name": "Log Meta (expressions)",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        672,
        -48
      ]
    },
    {
      "parameters": {
        "functionCode": "return items.map(i => {\n  const startedAt = new Date().toISOString();\n  i.json._log = {\n    runId: startedAt,\n    workflow: i.json._log?.workflow || null,\n    executionId: i.json._log?.executionId || null,\n    startedAt,\n    ok: 0,\n    ko: 0,\n    actions: [],\n    failedNodes: {}\n  };\n  return i;\n});"
      },
      "id": "439894a7-58fa-43a4-9274-054debc7276d",
      "name": "Start Log",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        896,
        -48
      ]
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "0ff44095-4d62-4f1f-bfb9-2e388a445177",
              "name": "ResponsableID",
              "value": "={{ $('Get Certificat1').item.json.properties[\"Responsable Certificat\"].relation[0].id }}",
              "type": "string"
            },
            {
              "id": "0e44ba96-4d9d-4136-a501-9f05d295a723",
              "name": "Ressource",
              "value": "={{ $json.properties.Ressources.url }}",
              "type": "string"
            },
            {
              "id": "18982cbc-326a-43eb-a3c6-4de2a0fd1fe8",
              "name": "FournisseurID",
              "value": "={{ $('Get Certificat1').item.json.properties[\"Master Fournisseurs\"].relation[0].id }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1424,
        -48
      ],
      "id": "64fab1c9-71f6-4fa9-bf55-01ea8a928a8d",
      "name": "Edit Certificat",
      "notesInFlow": false,
      "alwaysOutputData": false,
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "5b9d675b-f310-4d38-8702-a54be31c4fc3",
              "name": "id",
              "value": "={{ $json.id }}",
              "type": "string"
            },
            {
              "id": "f58754f5-864b-4399-9c99-9fb132aaad1b",
              "name": "name",
              "value": "={{ $('Get Certificat2').item.json.name }}",
              "type": "string"
            },
            {
              "id": "649b3fc3-21c3-49c1-90fe-f7ffe19dac8b",
              "name": "property_ressources",
              "value": "={{ $('Get Certificat2').item.json.property_ressources }}",
              "type": "string"
            },
            {
              "id": "a772f876-d663-4c8f-aaae-75887fda765a",
              "name": "property_contr_le_certificat",
              "value": "={{ $('Get Certificat2').item.json.property_contr_le_certificat }}",
              "type": "string"
            },
            {
              "id": "fc146c4a-d723-4d12-902d-8f4e8cceb478",
              "name": "property_date_due",
              "value": "={{ $('Get Certificat2').item.json.property_date_due }}",
              "type": "object"
            },
            {
              "id": "366690af-0831-48a6-9443-0509cb47d774",
              "name": "Request",
              "value": "={{ $('Get Certificat2').item.json.property_certificat_request }}",
              "type": "boolean"
            },
            {
              "id": "7dfff0c8-c3b5-4a22-a398-687579fe4fc0",
              "name": "ResponsableID",
              "value": "={{ $('Edit Certificat').item.json.ResponsableID }}",
              "type": "string"
            },
            {
              "id": "815a5b7f-50f5-44fb-9c3e-184ffeecc47d",
              "name": "Ressource",
              "value": "={{ $('Edit Certificat').item.json.Ressource }}",
              "type": "string"
            },
            {
              "id": "3829dd80-6740-4b7d-ad80-a5c35e49ea96",
              "name": "FournisseurID",
              "value": "={{ $json.property_master_fournisseurs[0] }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        2192,
        -64
      ],
      "id": "6687322a-cd08-43de-90d2-62ada32e411b",
      "name": "Edit Certificat1",
      "notesInFlow": false,
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "resource": "databasePage",
        "operation": "getAll",
        "databaseId": {
          "__rl": true,
          "value": "{{NOTION_DB_ID_CERTIFICATS_FOURNISSEURS}}",
          "mode": "list",
          "cachedResultName": "Certificats Fournisseurs",
          "cachedResultUrl": "https://www.notion.so/{{NOTION_DB_ID_CERTIFICATS_FOURNISSEURS}}"
        },
        "returnAll": true,
        "simple": false,
        "options": {}
      },
      "type": "n8n-nodes-base.notion",
      "typeVersion": 2.2,
      "position": [
        1120,
        -48
      ],
      "id": "e3f7874c-ee17-4200-a32b-cd320b485d70",
      "name": "Get Certificat1",
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "onError": "continueErrorOutput",
      "notes": "Master Fournisseur : 40%5Bsd"
    },
    {
      "parameters": {
        "resource": "databasePage",
        "operation": "getAll",
        "databaseId": {
          "__rl": true,
          "value": "{{NOTION_DB_ID_CERTIFICATS_FOURNISSEURS}}",
          "mode": "list",
          "cachedResultName": "Certificats Fournisseurs",
          "cachedResultUrl": "https://www.notion.so/{{NOTION_DB_ID_CERTIFICATS_FOURNISSEURS}}"
        },
        "returnAll": true,
        "options": {}
      },
      "type": "n8n-nodes-base.notion",
      "typeVersion": 2.2,
      "position": [
        1696,
        -48
      ],
      "id": "c26fb28c-f280-45ef-bada-4f3c33eb2f11",
      "name": "Get Certificat2",
      "executeOnce": true,
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "onError": "continueErrorOutput"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "914db486-7189-4138-a940-bb7bb6b17c91",
              "leftValue": "={{ $json.property_contr_le_certificat }}",
              "rightValue": "=\ud83d\udcdd \u00e0 valider",
              "operator": {
                "type": "string",
                "operation": "contains"
              }
            },
            {
              "id": "7f2d53da-733f-4ffc-b7cf-b7a4745ea403",
              "leftValue": "={{ $json.Request }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "false",
                "singleValue": true
              }
            },
            {
              "id": "aa646d5e-6523-4088-b3df-3fad80bca75c",
              "leftValue": "={{ $json.property_date_due }}",
              "rightValue": "",
              "operator": {
                "type": "object",
                "operation": "notEmpty",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        2400,
        -64
      ],
      "id": "9cd321b6-67b0-4019-9909-452b88080124",
      "name": "If"
    },
    {
      "parameters": {
        "batchSize": 5,
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        2384,
        176
      ],
      "id": "be335902-72e0-4ae1-8cfb-58894f29120e",
      "name": "Loop Over Items",
      "retryOnFail": false,
      "onError": "continueErrorOutput"
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "_lastNode",
              "value": "={{$prevNode.name}}"
            },
            {
              "name": "_hadError",
              "value": "={{ $json.error !== undefined }}"
            },
            {
              "name": "_errMsg",
              "value": "={{ $json.error?.message || ''}}"
            }
          ]
        },
        "options": {}
      },
      "id": "b7210ec5-3bda-4dd2-b990-732c2150ebce",
      "name": "Log Snapshot3",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        2112,
        192
      ]
    },
    {
      "parameters": {
        "functionCode": "return items.map(i => {\n  const log = i.json._log || {};\n  \n  // LIGNE 5 CORRIG\u00c9E\n  const nodeName = i.json._lastNode || 'UnknownNode';\n  \n  const failed = !!i.json._hadError || !!i.json.error;\n  \n  // Message adaptatif\n  const msg = i.json.error?.message || \n              i.json._errMsg || \n              (failed ? 'Erreur d\u00e9tect\u00e9e' : 'Succ\u00e8s');\n  \n  (log.actions ||= []).push({ node: nodeName, ok: !failed, msg });\n  \n  if (failed) {\n    log.ko = (log.ko || 0) + 1;\n    log.failedNodes = log.failedNodes || {};\n    log.failedNodes[nodeName] = true;\n  } else {\n    log.ok = (log.ok || 0) + 1;\n  }\n  \n  i.json._log = log;\n  return i;\n});"
      },
      "id": "7a8ead8b-468d-40ff-8ceb-e5d302ed0731",
      "name": "Update Log3",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        1952,
        -64
      ]
    },
    {
      "parameters": {
        "functionCode": "return items.map(i => {\n  const log = i.json._log || {};\n  \n  // LIGNE 5 CORRIG\u00c9E\n  const nodeName = i.json._lastNode || 'UnknownNode';\n  \n  const failed = !!i.json._hadError || !!i.json.error;\n  \n  // Message adaptatif\n  const msg = i.json.error?.message || \n              i.json._errMsg || \n              (failed ? 'Erreur d\u00e9tect\u00e9e' : 'Succ\u00e8s');\n  \n  (log.actions ||= []).push({ node: nodeName, ok: !failed, msg });\n  \n  if (failed) {\n    log.ko = (log.ko || 0) + 1;\n    log.failedNodes = log.failedNodes || {};\n    log.failedNodes[nodeName] = true;\n  } else {\n    log.ok = (log.ok || 0) + 1;\n  }\n  \n  i.json._log = log;\n  return i;\n});"
      },
      "id": "e117c747-201f-4f4c-b500-31d92e6f03e8",
      "name": "Update Log",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        2880,
        240
      ]
    },
    {
      "parameters": {
        "functionCode": "return items.map(i => {\n  const log = i.json._log || {};\n  \n  // LIGNE 5 CORRIG\u00c9E\n  const nodeName = i.json._lastNode || 'UnknownNode';\n  \n  const failed = !!i.json._hadError || !!i.json.error;\n  \n  // Message adaptatif\n  const msg = i.json.error?.message || \n              i.json._errMsg || \n              (failed ? 'Erreur d\u00e9tect\u00e9e' : 'Succ\u00e8s');\n  \n  (log.actions ||= []).push({ node: nodeName, ok: !failed, msg });\n  \n  if (failed) {\n    log.ko = (log.ko || 0) + 1;\n    log.failedNodes = log.failedNodes || {};\n    log.failedNodes[nodeName] = true;\n  } else {\n    log.ok = (log.ok || 0) + 1;\n  }\n  \n  i.json._log = log;\n  return i;\n});"
      },
      "id": "447a5eef-60ff-471c-8f62-6b3f2154dadf",
      "name": "Update Log4",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        2160,
        432
      ]
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3.2,
      "position": [
        3344,
        576
      ],
      "id": "b5dad519-0eb8-4d3c-80e5-907c19752464",
      "name": "Merge"
    },
    {
      "parameters": {
        "numberInputs": 3
      },
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3.2,
      "position": [
        4032,
        -32
      ],
      "id": "1ae639c4-c12d-48e8-9676-e60c29354e7d",
      "name": "Merge1"
    },
    {
      "parameters": {
        "workflowId": {
          "__rl": true,
          "value": "Nph7coAgeAm16pwp",
          "mode": "list",
          "cachedResultName": "Logger - Send to Notion"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {},
          "matchingColumns": [],
          "schema": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        },
        "mode": "each",
        "options": {
          "waitForSubWorkflow": true
        }
      },
      "type": "n8n-nodes-base.executeWorkflow",
      "typeVersion": 1.2,
      "position": [
        4624,
        -16
      ],
      "id": "bbe2ffd4-85ee-4412-9897-35214c5a3e57",
      "name": "Execute Logger - Send to Notion"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "5b9d675b-f310-4d38-8702-a54be31c4fc3",
              "name": "id",
              "value": "={{ $json.id }}",
              "type": "string"
            },
            {
              "id": "f58754f5-864b-4399-9c99-9fb132aaad1b",
              "name": "name",
              "value": "={{ $('Get Certificat2').item.json.name }}",
              "type": "string"
            },
            {
              "id": "649b3fc3-21c3-49c1-90fe-f7ffe19dac8b",
              "name": "property_ressources",
              "value": "={{ $('Get Certificat2').item.json.property_ressources }}",
              "type": "string"
            },
            {
              "id": "a772f876-d663-4c8f-aaae-75887fda765a",
              "name": "property_contr_le_certificat",
              "value": "={{ $('Get Certificat2').item.json.property_contr_le_certificat }}",
              "type": "string"
            },
            {
              "id": "fc146c4a-d723-4d12-902d-8f4e8cceb478",
              "name": "property_date_due",
              "value": "={{ $('Get Certificat2').item.json.property_date_due }}",
              "type": "object"
            },
            {
              "id": "366690af-0831-48a6-9443-0509cb47d774",
              "name": "Request",
              "value": "={{ $('Get Certificat2').item.json.property_certificat_request }}",
              "type": "boolean"
            },
            {
              "id": "7dfff0c8-c3b5-4a22-a398-687579fe4fc0",
              "name": "ResponsableID",
              "value": "={{ $('Edit Certificat').item.json.ResponsableID }}",
              "type": "string"
            },
            {
              "id": "815a5b7f-50f5-44fb-9c3e-184ffeecc47d",
              "name": "Ressource",
              "value": "={{ $('Edit Certificat').item.json.Ressource }}",
              "type": "string"
            },
            {
              "id": "3829dd80-6740-4b7d-ad80-a5c35e49ea96",
              "name": "FournisseurID",
              "value": "={{ $('Edit Certificat1').item.json.FournisseurID }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        3088,
        240
      ],
      "id": "35ba7308-c158-42eb-a1c4-8608fe5bbdc9",
      "name": "Edit Certificat2",
      "notesInFlow": false,
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "functionCode": "return items.map(i => {\n  const log = i.json._log || {};\n  \n  // LIGNE 5 CORRIG\u00c9E\n  const nodeName = i.json._lastNode || 'UnknownNode';\n  \n  const failed = !!i.json._hadError || !!i.json.error;\n  \n  // Message adaptatif\n  const msg = i.json.error?.message || \n              i.json._errMsg || \n              (failed ? 'Erreur d\u00e9tect\u00e9e' : 'Succ\u00e8s');\n  \n  (log.actions ||= []).push({ node: nodeName, ok: !failed, msg });\n  \n  if (failed) {\n    log.ko = (log.ko || 0) + 1;\n    log.failedNodes = log.failedNodes || {};\n    log.failedNodes[nodeName] = true;\n  } else {\n    log.ok = (log.ok || 0) + 1;\n  }\n  \n  i.json._log = log;\n  return i;\n});"
      },
      "id": "b2b36bd3-d2e6-4a03-b826-330c7efeae63",
      "name": "Update Log5",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        3504,
        256
      ]
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "_lastNode",
              "value": "={{ ($workflow.name || 'Unknown Workflow') + \" - \" + ($json._log?.actions?.find(action => !action.ok)?.node || Object.keys($json._log?.failedNodes || {})[0] || 'UnknownNode') }}"
            },
            {
              "name": "_hadError",
              "value": "={{ $json.error !== undefined }}"
            },
            {
              "name": "_errMsg",
              "value": "={{ $json.error?.message || ''}}"
            }
          ]
        },
        "options": {}
      },
      "id": "e673f47e-1414-4dc0-acb3-cc753ecb2f5a",
      "name": "Log Snapshot",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        1136,
        592
      ]
    },
    {
      "parameters": {
        "functionCode": "return items.map(i => {\n  const log = i.json._log || {};\n  \n  // LIGNE 5 CORRIG\u00c9E\n  const nodeName = i.json._lastNode || 'UnknownNode';\n  \n  const failed = !!i.json._hadError || !!i.json.error;\n  \n  // Message adaptatif\n  const msg = i.json.error?.message || \n              i.json._errMsg || \n              (failed ? 'Erreur d\u00e9tect\u00e9e' : 'Succ\u00e8s');\n  \n  (log.actions ||= []).push({ node: nodeName, ok: !failed, msg });\n  \n  if (failed) {\n    log.ko = (log.ko || 0) + 1;\n    log.failedNodes = log.failedNodes || {};\n    log.failedNodes[nodeName] = true;\n  } else {\n    log.ok = (log.ok || 0) + 1;\n  }\n  \n  i.json._log = log;\n  return i;\n});"
      },
      "id": "2e81f42b-d1cc-4c1d-8a65-862a8fbd4f6e",
      "name": "Update Log2",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        1424,
        592
      ]
    },
    {
      "parameters": {
        "functionCode": "const i = items[0];\nconst log = i.json._log || {};\nlog.finishedAt = new Date().toISOString();\n\nconst start = new Date(log.startedAt || log.runId || Date.now()).getTime();\nconst end = new Date(log.finishedAt).getTime();\nlog.durationSec = Math.round((end - start) / 1000);\n\n// \ud83c\udfaf CORRECTION : Extraire les noms de n\u0153uds uniques des \u00e9checs\nconst failedNodeNames = [];\nconst uniqueErrorMessages = [];\n\n// Parcourir les actions pour identifier les \u00e9checs\nif (log.actions && Array.isArray(log.actions)) {\n  log.actions.forEach(action => {\n    if (!action.ok) {\n      // Ajouter le nom du n\u0153ud s'il n'est pas d\u00e9j\u00e0 pr\u00e9sent\n      if (!failedNodeNames.includes(action.node)) {\n        failedNodeNames.push(action.node);\n      }\n      \n      // Ajouter le message d'erreur s'il n'est pas d\u00e9j\u00e0 pr\u00e9sent\n      if (action.msg && !uniqueErrorMessages.includes(action.msg)) {\n        uniqueErrorMessages.push(action.msg);\n      }\n    }\n  });\n}\n\n// \ud83c\udfaf R\u00c9SULTATS CORRIG\u00c9S\nlog.failedNodesList = failedNodeNames; // Noms uniques des n\u0153uds en \u00e9chec\nlog.uniqueErrorMessages = uniqueErrorMessages; // Messages d'erreur uniques\nlog.errorSummary = uniqueErrorMessages.join(' | '); // Compilation des erreurs\n\n// Stats am\u00e9lior\u00e9es\nlog.stats = {\n  totalProcessed: log.ok + log.ko,\n  successCount: log.ok,\n  failureCount: log.ko,\n  successRate: `${Math.round((log.ok / (log.ok + log.ko)) * 100)}%`,\n  uniqueFailedNodes: failedNodeNames.length,\n  distinctErrors: uniqueErrorMessages.length\n};\n\ni.json._log = log;\nreturn [i];"
      },
      "id": "897af704-43ec-4b30-b894-c0baa85fb5c2",
      "name": "Finish Log",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        4432,
        -16
      ]
    },
    {
      "parameters": {
        "jsCode": "// Consolidation COMPL\u00c8TE des logs\nconst logData = {\n  workflow: $('Log Meta (expressions)').first().json._log?.workflow || \"WorkFlow 01\",\n  executionId: $execution.id,\n  startedAt: $('Start Log').first().json._log?.startedAt,\n  finishedAt: new Date().toISOString(),\n  runId: $('Start Log').first().json._log?.runId,\n  \n  // Consolidation des compteurs\n  ok: $input.all().reduce((sum, item) => sum + (item.json._log?.ok || 0), 0),\n  ko: $input.all().reduce((sum, item) => sum + (item.json._log?.ko || 0), 0),\n  failedNodes: $input.all().flatMap(item => item.json._log?.failedNodes || []),\n  \n  // Logique Actions\n  actions: (() => {\n    const koCount = $input.all().reduce((sum, item) => sum + (item.json._log?.ko || 0), 0);\n    if (koCount === 0) {\n      return [{ msg: \"Pass\" }];\n    } else {\n      const allActions = $input.all().flatMap(item => item.json._log?.actions || []);\n      return allActions.filter(action => action.msg !== \"Pass\");\n    }\n  })()\n};\n\nreturn [{ json: { _log: logData } }];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        4224,
        -16
      ],
      "id": "3e75e53a-33d6-435d-b370-f771be11e5d4",
      "name": "One Item"
    },
    {
      "parameters": {
        "workflowId": {
          "__rl": true,
          "value": "JRduRVzWHtHDooRk",
          "mode": "list",
          "cachedResultName": "WorkFlow 02.01"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {},
          "matchingColumns": [],
          "schema": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        },
        "mode": "each",
        "options": {
          "waitForSubWorkflow": true
        }
      },
      "type": "n8n-nodes-base.executeWorkflow",
      "typeVersion": 1.2,
      "position": [
        3296,
        240
      ],
      "id": "ce99e657-63d9-47fa-9b2f-0f696b8a66a1",
      "name": "Workflow 02.01",
      "alwaysOutputData": true,
      "onError": "continueErrorOutput"
    }
  ],
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Log Meta (expressions)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log Meta (expressions)": {
      "main": [
        [
          {
            "node": "Start Log",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start Log": {
      "main": [
        [
          {
            "node": "Get Certificat1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Certificat": {
      "main": [
        [
          {
            "node": "Get Certificat2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Certificat1": {
      "main": [
        [
          {
            "node": "Edit Certificat",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log Snapshot",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Certificat2": {
      "main": [
        [
          {
            "node": "Update Log3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log Snapshot",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Certificat1": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If": {
      "main": [
        [
          {
            "node": "Log Snapshot3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "Update Log",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update Log4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log Snapshot3": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Log3": {
      "main": [
        [
          {
            "node": "Edit Certificat1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Log": {
      "main": [
        [
          {
            "node": "Edit Certificat2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Log4": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Merge1": {
      "main": [
        [
          {
            "node": "One Item",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Certificat2": {
      "main": [
        [
          {
            "node": "Workflow 02.01",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Log5": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log Snapshot": {
      "main": [
        [
          {
            "node": "Update Log2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Log2": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "One Item": {
      "main": [
        [
          {
            "node": "Finish Log",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Finish Log": {
      "main": [
        [
          {
            "node": "Execute Logger - Send to Notion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Workflow 02.01": {
      "main": [
        [
          {
            "node": "Update Log5",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update Log4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "167661db-0efe-4e74-8f90-e8c2b2b4f83d",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "KzsADm4gzoQWzTkn",
  "tags": [
    {
      "createdAt": "2025-08-14T02:16:11.616Z",
      "updatedAt": "2025-08-14T02:16:11.616Z",
      "id": "1OOcQbUVIxPSDlKG",
      "name": "Certificat Fournisseur"
    },
    {
      "createdAt": "2025-09-05T21:34:33.550Z",
      "updatedAt": "2025-09-05T21:34:33.550Z",
      "id": "LZmLOxWE5K3Pq3XN",
      "name": "Scan Certificat"
    }
  ]
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

WorkFlow 02. Uses notion. Scheduled trigger; 23 nodes.

Source: https://github.com/WealthFinPilot/notion-qms-platform/blob/main/exports/workflows/wf-02-scan-certificat.json — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Data & Sheets

WorkFlow 05. Uses notion, httpRequest. Scheduled trigger; 44 nodes.

Notion, HTTP Request
Data & Sheets

WorkFlow 08. Uses notion, httpRequest. Scheduled trigger; 37 nodes.

Notion, HTTP Request
Data & Sheets

WorkFlow 01. Uses notion. Scheduled trigger; 30 nodes.

Notion
Data & Sheets

This template is designed for social media managers, content creators, data analysts, and anyone who wants to automatically save and analyze their Meta Threads posts in Notion.

HTTP Request, Notion
Data & Sheets

WorkFlow 03. Uses notion. Scheduled trigger; 22 nodes.

Notion