Automatisation n8n : clonage de workflows entre instances
- Ce workflow n8n a pour objectif de faciliter le clonage de workflows entre différentes instances de n8n en utilisant l'API de n8n. Dans un contexte où les entreprises cherchent à optimiser leur gestion de workflows, cette automatisation permet de gagner un temps précieux en évitant les configurations manuelles répétitives. Les cas d'usage incluent la duplication de processus entre environnements de développement et de production, ou la migration de workflows d'une instance à une autre sans effort.
- Le workflow débute avec un déclencheur manuel, permettant à l'utilisateur de tester le flux. Ensuite, il effectue une requête GET pour récupérer les workflows existants, suivie de la création d'un nouveau workflow basé sur les données récupérées. L'automatisation utilise également des requêtes HTTP pour interagir avec les projets n8n, en récupérant les informations nécessaires pour associer les workflows clonés à des projets spécifiques.
- Les étapes incluent la récupération des workflows sources, la création de nouveaux workflows, et l'association de ces derniers à des projets via des requêtes PUT. En intégrant des nœuds de traitement comme le filtrage et le fractionnement, le workflow assure une gestion efficace des données. Les bénéfices pour les entreprises incluent une réduction des erreurs humaines, une meilleure cohérence entre les environnements et une augmentation de la productivité des équipes. Grâce à cette automatisation n8n, les utilisateurs peuvent se concentrer sur des tâches à plus forte valeur ajoutée.
Workflow n8n productivité : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n productivité : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"id": "yOhH9SGiZgZTDUB4",
"meta": {
"instanceId": "ecc960f484e18b0e09045fd93acf0d47f4cfff25cc212ea348a08ac3aae81850",
"templateCredsSetupCompleted": true
},
"name": "Clone n8n Workflows between Instances using n8n API",
"tags": [
{
"id": "aw8suPYTKfXDtMZl",
"name": "Utility",
"createdAt": "2025-02-10T14:41:49.045Z",
"updatedAt": "2025-02-10T14:41:49.045Z"
},
{
"id": "6rb8rVhKZj4t0Kne",
"name": "Current",
"createdAt": "2025-02-04T18:13:17.427Z",
"updatedAt": "2025-02-04T18:13:17.427Z"
}
],
"nodes": [
{
"id": "9e61140a-2b09-4dab-9a3b-3ca9781410cf",
"name": "When clicking ‘Test workflow’",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-80,
-260
],
"parameters": {},
"typeVersion": 1
},
{
"id": "50fdfb08-0ca1-4bb4-82a6-46b81ef6e3b2",
"name": "GET - Workflows",
"type": "n8n-nodes-base.n8n",
"position": [
180,
-400
],
"parameters": {
"filters": {},
"requestOptions": {}
},
"credentials": {
"n8nApi": {
"id": "HBPpxcTQs4aNcq4K",
"name": "AK n8n original account"
}
},
"typeVersion": 1
},
{
"id": "7c1b5530-bc0c-41f8-ac5f-d53c42ea9c44",
"name": "CREATE - Workflow",
"type": "n8n-nodes-base.n8n",
"position": [
1200,
-160
],
"parameters": {
"operation": "create",
"requestOptions": {},
"workflowObject": "={\n \"name\": \"{{ $json.name }}\",\n \"nodes\": {{ JSON.stringify($json[\"nodes\"]) }},\n \"connections\": {{ JSON.stringify($json[\"connections\"] || {}) }}\n}\n"
},
"credentials": {
"n8nApi": {
"id": "0XLL6lxiSB0ORf5Z",
"name": "AlexK1919 n8n ent account"
}
},
"typeVersion": 1
},
{
"id": "af3a81b1-f09f-4373-b603-657bba8c1776",
"name": "n8n - GET - Projects",
"type": "n8n-nodes-base.httpRequest",
"position": [
1400,
-160
],
"parameters": {
"url": "https://n8n-ent.alexk1919.com/api/v1/projects",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "n8nApi"
},
"credentials": {
"n8nApi": {
"id": "0XLL6lxiSB0ORf5Z",
"name": "AlexK1919 n8n ent account"
}
},
"typeVersion": 4.2
},
{
"id": "852e6236-aafd-4223-bb90-42db4c923a59",
"name": "SET Project ID",
"type": "n8n-nodes-base.set",
"position": [
2000,
-160
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "6ba45511-cf1b-42e6-b711-b9abd33ed7e3",
"name": "data.id",
"type": "string",
"value": "={{ $json.data.id }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "e8dfa94b-82c1-45ee-b87b-f88996569957",
"name": "PUT - Workflow in Project",
"type": "n8n-nodes-base.httpRequest",
"position": [
2200,
-160
],
"parameters": {
"url": "=https://n8n-ent.alexk1919.com/api/v1/workflows/{{ $('CREATE - Workflow').item.json.id }}/transfer",
"method": "PUT",
"options": {},
"sendBody": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "destinationProjectId",
"value": "={{ $json.data.id }}"
}
]
},
"nodeCredentialType": "n8nApi"
},
"credentials": {
"n8nApi": {
"id": "0XLL6lxiSB0ORf5Z",
"name": "AlexK1919 n8n ent account"
}
},
"typeVersion": 4.2
},
{
"id": "e705f445-c125-4ce5-aa33-f91c3f1fb2a6",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1000,
-260
],
"parameters": {
"options": {},
"batchSize": 5
},
"typeVersion": 3
},
{
"id": "cec95100-64a0-4d56-986a-1cdeb6063b96",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1740,
-300
],
"parameters": {
"color": 3,
"width": 220,
"content": "### Change the Destination Project by changing the Project Name"
},
"typeVersion": 1
},
{
"id": "b23a6293-a732-42b4-9976-6d3ab750bd44",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
120,
-540
],
"parameters": {
"color": 3,
"width": 220,
"content": "### Change the Source n8n Instance by changing the Credential"
},
"typeVersion": 1
},
{
"id": "a4e2f1f9-dab9-4576-ba66-d36a16a4d82a",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
120,
-220
],
"parameters": {
"color": 3,
"width": 220,
"content": "### Change the Destination n8n Instance by changing the Credential"
},
"typeVersion": 1
},
{
"id": "56997c18-8985-4fdd-b313-de07ee67c6d7",
"name": "GET - Destination Workflows",
"type": "n8n-nodes-base.n8n",
"position": [
180,
-80
],
"parameters": {
"limit": 200,
"filters": {},
"returnAll": false,
"requestOptions": {
"batching": {
"batch": {}
}
}
},
"credentials": {
"n8nApi": {
"id": "0XLL6lxiSB0ORf5Z",
"name": "AlexK1919 n8n ent account"
}
},
"typeVersion": 1
},
{
"id": "c9bb6d33-a674-416b-916d-56352b74a603",
"name": "Code",
"type": "n8n-nodes-base.code",
"disabled": true,
"position": [
800,
-260
],
"parameters": {
"jsCode": "const data = $json;\nconsole.log(\"Merged Output:\", data);\nreturn [data];\n"
},
"typeVersion": 2
},
{
"id": "3357623e-e41a-4441-aba4-4593cbc77bdd",
"name": "Split Out Workflows",
"type": "n8n-nodes-base.splitOut",
"position": [
380,
-400
],
"parameters": {
"include": "allOtherFields",
"options": {},
"fieldToSplitOut": "id"
},
"typeVersion": 1
},
{
"id": "b1a2d1df-4957-491d-9c8d-347c4c5197f1",
"name": "Split Out Workflows1",
"type": "n8n-nodes-base.splitOut",
"position": [
380,
-80
],
"parameters": {
"include": "allOtherFields",
"options": {},
"fieldToSplitOut": "id"
},
"typeVersion": 1
},
{
"id": "f0f4c869-f171-4019-a081-9c232851f0a9",
"name": "Merge Workflows",
"type": "n8n-nodes-base.merge",
"position": [
600,
-260
],
"parameters": {
"mode": "combineBySql",
"query": "SELECT input1.name, input1.createdAt, input1.updatedAt, input1.active, input1.nodes, input1.settings, input1.connections, input1.pinData, input1.tags, input1.id\nFROM input1\nLEFT JOIN input2 \nON input1.name = input2.name\nWHERE input2.name IS NULL\n"
},
"typeVersion": 3
},
{
"id": "f69c8787-7590-4011-a36f-36c9192089cf",
"name": "Split Out Projects",
"type": "n8n-nodes-base.splitOut",
"position": [
1600,
-160
],
"parameters": {
"include": "allOtherFields",
"options": {},
"fieldToSplitOut": "data"
},
"typeVersion": 1
},
{
"id": "7c8f8957-f80c-4250-96fb-f86032e3aacc",
"name": "Filter Project",
"type": "n8n-nodes-base.filter",
"position": [
1800,
-160
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "74ca2595-359b-4e17-988b-799306f748cf",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.name }}",
"rightValue": "z Original n8n Workflows from AlexK1919"
}
]
}
},
"typeVersion": 2.2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "0178ee38-a035-40e7-9a62-34dfdf6f0b93",
"connections": {
"Code": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Filter Project": {
"main": [
[
{
"node": "SET Project ID",
"type": "main",
"index": 0
}
]
]
},
"SET Project ID": {
"main": [
[
{
"node": "PUT - Workflow in Project",
"type": "main",
"index": 0
}
]
]
},
"GET - Workflows": {
"main": [
[
{
"node": "Split Out Workflows",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[],
[
{
"node": "CREATE - Workflow",
"type": "main",
"index": 0
}
]
]
},
"Merge Workflows": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"CREATE - Workflow": {
"main": [
[
{
"node": "n8n - GET - Projects",
"type": "main",
"index": 0
}
]
]
},
"Split Out Projects": {
"main": [
[
{
"node": "Filter Project",
"type": "main",
"index": 0
}
]
]
},
"Split Out Workflows": {
"main": [
[
{
"node": "Merge Workflows",
"type": "main",
"index": 0
}
]
]
},
"Split Out Workflows1": {
"main": [
[
{
"node": "Merge Workflows",
"type": "main",
"index": 1
}
]
]
},
"n8n - GET - Projects": {
"main": [
[
{
"node": "Split Out Projects",
"type": "main",
"index": 0
}
]
]
},
"PUT - Workflow in Project": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"GET - Destination Workflows": {
"main": [
[
{
"node": "Split Out Workflows1",
"type": "main",
"index": 0
}
]
]
},
"When clicking ‘Test workflow’": {
"main": [
[
{
"node": "GET - Workflows",
"type": "main",
"index": 0
},
{
"node": "GET - Destination Workflows",
"type": "main",
"index": 0
}
]
]
}
}
}Workflow n8n productivité : pour qui est ce workflow ?
Ce workflow s'adresse aux équipes techniques et aux développeurs travaillant avec n8n, ainsi qu'aux responsables de l'automatisation des processus au sein d'entreprises de taille moyenne à grande. Un niveau technique intermédiaire est recommandé pour tirer pleinement parti de cette automatisation.
Workflow n8n productivité : problème résolu
Ce workflow résout le problème de la duplication manuelle des workflows entre différentes instances de n8n, ce qui peut être fastidieux et source d'erreurs. En automatisant ce processus, il élimine les frustrations liées à la configuration manuelle et réduit le risque de perte de données ou d'incohérence entre les environnements. Les utilisateurs bénéficient d'un gain de temps significatif et d'une plus grande fiabilité dans la gestion de leurs workflows.
Workflow n8n productivité : étapes du workflow
Étape 1 : Le workflow est déclenché manuellement par l'utilisateur.
- Étape 1 : Une requête GET est effectuée pour récupérer les workflows existants.
- Étape 2 : Les workflows récupérés sont traités pour extraire les informations nécessaires.
- Étape 3 : Un nouveau workflow est créé à partir des données récupérées.
- Étape 4 : Les projets sont récupérés via une requête HTTP pour associer les workflows clonés.
- Étape 5 : Les workflows sont mis à jour et associés à leurs projets respectifs.
- Étape 6 : Des nœuds de filtrage et de fractionnement sont utilisés pour gérer efficacement les données tout au long du processus.
Workflow n8n productivité : guide de personnalisation
Pour personnaliser ce workflow, vous pouvez modifier l'URL de l'API n8n dans les nœuds HTTP, ainsi que les paramètres de filtrage pour les workflows et les projets. Assurez-vous également d'adapter les identifiants de projet et de workflow selon vos besoins. Pour intégrer d'autres outils, envisagez d'ajouter des nœuds supplémentaires pour des notifications ou des mises à jour. Enfin, il est conseillé de sécuriser les accès API en utilisant des méthodes d'authentification appropriées.