{"id":"G0hO05fypS8n8uYu","meta":{"instanceId":"workflow-7485cf23","versionId":"1.0.0","createdAt":"2025-09-29T07:07:43.376204","updatedAt":"2025-09-29T07:07:43.376217","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"name":"INSEE Enrichment for Agile CRM","nodes":[{"id":"a45b34c1-514e-4221-b363-abf2d4de43c4","name":"When clicking ‘Test workflow’","type":"n8n-nodes-base.manualTrigger","position":[-3440,-320],"parameters":{},"typeVersion":1,"notes":"This manualTrigger node performs automated tasks as part of the workflow."},{"id":"d406941b-80a1-43a3-ba19-2e29570192f2","name":"Find Company in SIREN database","type":"n8n-nodes-base.httpRequest","onError":"continueErrorOutput","position":[-2660,-220],"parameters":{"url":"{{ $env.BASE_URL }}","options":{},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"accept","value":"application/json"},{"name":"X-INSEE-Api-Key-Integration","value":"={{ $('Set Insee API Key').all()[0].json['X-INSEE-Api-Key-Integration']  }}"}]}},"typeVersion":4.2,"alwaysOutputData":false,"notes":"This httpRequest node performs automated tasks as part of the workflow."},{"id":"6ab3818b-2f09-44e2-874a-87c51478572b","name":"Request all data from SIREN database","type":"n8n-nodes-base.httpRequest","position":[-2420,-240],"parameters":{"url":"{{ $env.BASE_URL }}","options":{},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"accept","value":"application/json"},{"name":"X-INSEE-Api-Key-Integration","value":"={{ $('Set Insee API Key').all()[0].json['X-INSEE-Api-Key-Integration']  }}"}]}},"typeVersion":4.2,"notes":"This httpRequest node performs automated tasks as part of the workflow."},{"id":"89c223fe-289b-4d0f-922a-e9c0ad672b51","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-3420,-640],"parameters":{"width":460,"height":240,"content":"### Enrich CRM data with data from French INSEE OpenDatabase API\nThis workflow takes all company entries from **Agile CRM** and enriches their data using the French [Insee Opendata API]({{ $env.API_BASE_URL }} (Free Access)\n\n__This will update :__ \n1) Official Address of the company headquarters\n2) Add government company id number (SIREN) in a Custom Field"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"0bdc49dd-6f26-447f-a8ba-c2ba615dc7ec","name":"FilterOut all Company that have the ReadOnly Key set","type":"n8n-nodes-base.code","position":[-2880,-220],"parameters":{"jsCode":"// Get input data\nconst input = $input.all();\nconst output = input.filter(item => {\n    const properties = item.json.properties || [];\n    return !properties.some(property => property.name === \"RO\" && property.value === \"1\"); // Remove all ReadOnly entries\n}).map(item => {\n    const companyId = item.json.id;\n    const denominationUniteLegale = item.json.properties[0]?.value || null; \n    return {\n        json: {\n            companyId,\n            denominationUniteLegale\n        }\n    };\n});\n\n// Return the transformed output\nreturn output;\n"},"typeVersion":2,"notes":"This code node performs automated tasks as part of the workflow."},{"id":"0ef184f7-219c-4eb3-bfe0-4e68d2ce0b43","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-2940,-640],"parameters":{"color":5,"width":647,"height":232,"content":"### 👨‍🎤 Setup\n1. Add your **Agile CRM** credentials\n2. Link each AgileCRM node to the correct **Agile CRM** credentials\n3. Add your **INSEE** API Key to the **\"Set Insee API Key\"** node\n4. Make sure the **Custom Fields** for the **companies** are set as below (Admin Settings):\n   - Label : \"SIREN\", Type : \"Text Field\", Description \"N° de SIREN\"\n   - Label : \"RO\", Type : \"Number\", Description \"Locks entry from update\"\n5. Click on **Test Workflow** to make sure everything is working\n6. Configure schedule if needed and don't forget to change status to **Active**"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"78255253-195d-472d-a76c-ab63ceac126b","name":"Set Insee API Key","type":"n8n-nodes-base.set","position":[-3260,-220],"parameters":{"options":{},"assignments":{"assignments":[{"id":"e993e665-cf31-48b1-8ca8-a4829dc82642","name":"X-INSEE-Api-Key-Integration","type":"string","value":"put-your-insee-api-key-here"}]}},"typeVersion":3.4,"notes":"This set node performs automated tasks as part of the workflow."},{"id":"90b13481-6570-4bfc-b3dc-4b6017c6c8b5","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-3440,-140],"parameters":{"rule":{"interval":[{}]}},"typeVersion":1.2,"notes":"This scheduleTrigger node performs automated tasks as part of the workflow."},{"id":"88c8a6c6-2175-42c3-bfdb-f1d32a5d1c2d","name":"clean_route","type":"n8n-nodes-base.noOp","position":[-2660,-360],"parameters":{},"typeVersion":1,"notes":"This noOp node performs automated tasks as part of the workflow."},{"id":"522d83f6-752e-40b4-a889-334f0a96998b","name":"Get all Compagnies from Agile CRM","type":"n8n-nodes-base.agileCrm","position":[-3080,-220],"parameters":{"options":{},"resource":"company","operation":"getAll"},"credentials":{"agileCrmApi":{"id":"wb0EgiQFLQbiFuy4","name":"AgileCRM account"}},"typeVersion":1,"notes":"This agileCrm node performs automated tasks as part of the workflow."},{"id":"8ff0632b-6aca-47d8-b611-72dbc8dec09b","name":"Enrich CRM with INSEE Data","type":"n8n-nodes-base.agileCrm","position":[-1960,-340],"parameters":{"resource":"company","companyId":"={{ $json.companyId }}","operation":"update","additionalFields":{"addressOptions":{"addressProperties":[{"address":"={{ $json.etablissement.adresseEtablissement.complementAdresseEtablissement }}\n{{ $json.etablissement.adresseEtablissement.typeVoieEtablissement }} {{ $json.etablissement.adresseEtablissement.libelleVoieEtablissement }}\n{{ $json.etablissement.adresseEtablissement.codePostalEtablissement }}{{ $json.etablissement.adresseEtablissement.libelleCommuneEtablissement }}","subtype":"office"}]},"customProperties":{"customProperty":[{"name":"SIREN","value":"={{ $json.etablissement.siren }}","subtype":"TEXT"}]}}},"credentials":{"agileCrmApi":{"id":"wb0EgiQFLQbiFuy4","name":"AgileCRM account"}},"typeVersion":1,"notes":"This agileCrm node performs automated tasks as part of the workflow."},{"id":"8720be96-8181-4ea7-b114-ce0f5b8e09c1","name":"Merge data from CRM and SIREN database with enriched for the CRM","type":"n8n-nodes-base.merge","position":[-2180,-340],"parameters":{"mode":"combine","options":{},"advanced":true,"mergeByFields":{"values":[{"field1":"denominationUniteLegale","field2":"etablissement.uniteLegale.denominationUniteLegale"}]}},"typeVersion":3,"notes":"This merge node performs automated tasks as part of the workflow."},{"id":"855a39e2-83ef-49d9-b630-ec31aaa96e72","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-3460,20],"parameters":{"height":80,"content":"👆 You can use any of those two Trigger to start the process."},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"b003c1b8-6244-4b72-bbb0-025f563b5d71","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-2260,-640],"parameters":{"width":380,"height":240,"content":"### 🗒️ Notes : \n1. This workflow is made to write over any entry already present. You can change this for each company by setting the **\"RO\"** Custom Field to **1**, making it read-only for this workflow.\n\n2. If you want to make it readonly after the update from this workflow, then **add a custom property** in the last node **Enrich CRM with INSEE Data** named **\"RO\"**, SubType **\"Number\"** and Value **\"1\"**"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."}],"active":false,"settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3,"retryDelay":1000},"versionId":"9f328182-d131-4300-a1f4-2cb3dfe91632","connections":{"Find Company in SIREN database":{"main":[[],[],[],[],[],[],[],[],[]]},"Request all data from SIREN database":{"main":[[],[],[],[],[],[],[],[],[]]}},"description":"Automated workflow: INSEE Enrichment for Agile CRM. This workflow integrates 10 different services: stickyNote, httpRequest, code, scheduleTrigger, merge. It contains 18 nodes and follows best practices for error handling and security.","notes":"Excellent quality workflow: INSEE Enrichment for Agile CRM. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}