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 →
{
"id": "cDmsWx8ASzIxE3zw",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Update all Zammad Roles to default values",
"tags": [],
"nodes": [
{
"id": "32904945-fd7b-413f-898c-62b04406dfb0",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-920,
160
],
"parameters": {},
"typeVersion": 1
},
{
"id": "cbb0abd2-e153-477a-9346-00eaa1628c78",
"name": "Zammad Univeral User Object",
"type": "n8n-nodes-base.set",
"position": [
100,
220
],
"parameters": {
"values": {
"number": [
{
"name": "user_id",
"value": "={{ $json.id }}"
},
{
"name": "organization_id",
"value": "={{ $json.organization_id }}"
}
],
"string": [
{
"name": "email",
"value": "={{ $json.email }}"
},
{
"name": "firstname",
"value": "={{ $json.firstname }}"
},
{
"name": "lastname",
"value": "={{ $json.lastname }}"
},
{
"name": "role_ids",
"value": "={{ $json.role_ids.join() }}\n"
},
{
"name": "groups",
"value": "={{ $json.group_ids }}"
},
{
"name": "active",
"value": "={{ $json.active }}"
}
]
},
"options": {},
"keepOnlySet": true
},
"typeVersion": 1
},
{
"id": "bbf82b69-07b5-4dff-afec-ee65eeedd037",
"name": "Get all Users",
"type": "n8n-nodes-base.zammad",
"position": [
-220,
220
],
"parameters": {
"filters": {},
"operation": "getAll",
"returnAll": true
},
"credentials": {
"zammadTokenAuthApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "0c122c6b-22a7-41f5-8ea1-c9a32cd12ed6",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
400,
220
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "0be03c44-5017-4db6-87cd-91838b953d09",
"operator": {
"type": "array",
"operation": "notContains",
"rightType": "any"
},
"leftValue": "={{ $('Basic Variables').item.json.exclude_zammad_users_by_id }}",
"rightValue": "={{ $json.user_id }}"
},
{
"id": "6a730e91-fa40-4e8a-b6cb-894f2cb367c5",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.active }}",
"rightValue": ""
},
{
"id": "b3d13440-f3fc-4172-b16d-e191f050a2bf",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "63f98607-1f56-4f83-93be-aa3b271da11b",
"name": "Get all Roles",
"type": "n8n-nodes-base.httpRequest",
"position": [
-220,
-20
],
"parameters": {
"url": "={{ $json.zammad_base_url }}/api/v1/roles",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=Bearer {{ $json.zammad_api_key }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "961bf663-30be-45b4-87f0-d7ec94c3435b",
"name": "Basic Variables",
"type": "n8n-nodes-base.set",
"position": [
-620,
160
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "68b32087-5e23-4590-8042-0061234ce479",
"name": "zammad_base_url",
"type": "string",
"value": "-put-your-zammad-base-url-"
},
{
"id": "7db7572e-2524-4f2a-a1d6-b44330662c30",
"name": "zammad_api_key",
"type": "string",
"value": "-put-your-api-key-"
},
{
"id": "7cd0a1d2-8898-47c7-a1c6-195ff6162bb9",
"name": "default_roles",
"type": "array",
"value": "={{ [-put-in-the-default-roles-ids-separated-by-comma-] }}"
},
{
"id": "4628705c-4875-4d42-90d1-692b9b44fc24",
"name": "exclude_zammad_users_by_id",
"type": "array",
"value": "={{ [-put-in-the-user-ids-separated-by-comma-] }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "a86577aa-1eb2-48e6-b941-bdfb37b58073",
"name": "Zammad Univeral Role Object",
"type": "n8n-nodes-base.set",
"position": [
100,
-20
],
"parameters": {
"values": {
"number": [
{
"name": "role_id",
"value": "={{ $json.id }}"
},
{
"name": "name",
"value": "={{ $json.name }}"
}
]
},
"options": {},
"keepOnlySet": true
},
"typeVersion": 1
},
{
"id": "ecc387b3-092d-43c9-9187-784f07c4df77",
"name": "Convert to Excel Roles",
"type": "n8n-nodes-base.convertToFile",
"position": [
760,
-40
],
"parameters": {
"options": {
"fileName": "Zammad_Roles.xlsx"
},
"operation": "xlsx"
},
"typeVersion": 1.1
},
{
"id": "e8055ae6-78d8-4736-adee-4b8c883b4000",
"name": "Filter Roles if needed",
"type": "n8n-nodes-base.if",
"position": [
400,
-20
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "0ca9d3a3-b726-4396-8cec-4a74c8e3949b",
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json }}",
"rightValue": 1781
}
]
}
},
"typeVersion": 2.2
},
{
"id": "45b01919-ba58-4c7a-a97f-d169cb361855",
"name": "Update Users to default Role(s)",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueErrorOutput",
"position": [
760,
200
],
"parameters": {
"url": "={{ $('Basic Variables').item.json.zammad_base_url }}/api/v1/users/{{ $json.user_id }}",
"method": "PUT",
"options": {},
"jsonBody": "={\n \"role_ids\": [\n {{ $('Basic Variables').item.json.default_roles }}\n ]\n} ",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=Bearer {{ $('Basic Variables').item.json.zammad_api_key }}"
}
]
}
},
"typeVersion": 4.2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "4fa55089-104d-477e-8a93-c8cb0caf7bed",
"connections": {
"If": {
"main": [
[
{
"node": "Update Users to default Role(s)",
"type": "main",
"index": 0
}
]
]
},
"Get all Roles": {
"main": [
[
{
"node": "Zammad Univeral Role Object",
"type": "main",
"index": 0
}
]
]
},
"Get all Users": {
"main": [
[
{
"node": "Zammad Univeral User Object",
"type": "main",
"index": 0
}
]
]
},
"Basic Variables": {
"main": [
[
{
"node": "Get all Roles",
"type": "main",
"index": 0
},
{
"node": "Get all Users",
"type": "main",
"index": 0
}
]
]
},
"Filter Roles if needed": {
"main": [
[
{
"node": "Convert to Excel Roles",
"type": "main",
"index": 0
}
]
]
},
"Zammad Univeral Role Object": {
"main": [
[
{
"node": "Filter Roles if needed",
"type": "main",
"index": 0
}
]
]
},
"Zammad Univeral User Object": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Update Users to default Role(s)": {
"main": [
[],
[]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Basic Variables",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
zammadTokenAuthApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
Restoring Zammad roles to their default values ensures your helpdesk system's permissions align with standard configurations, preventing access issues and maintaining compliance without manual reconfiguration. This workflow suits Zammad administrators facing role customisations that have drifted from defaults, particularly after migrations or updates. It begins by fetching all users and roles via the Zammad integration and an HTTP request, then systematically updates each role to predefined defaults, streamlining what could otherwise be a tedious process.
Use this workflow when bulk-resetting roles after significant system changes or to enforce uniformity across your Zammad instance. Avoid it for selective role adjustments, as it applies defaults universally; opt for manual edits in such cases. Common variations include triggering via scheduled events instead of manual for regular audits, or integrating with email notifications to alert on completion.
About this workflow
Update all Zammad Roles to default values. Uses manualTrigger, zammad, httpRequest, convertToFile. Event-driven trigger; 10 nodes.
Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Export Zammad Objects Users, Roles, Groups and Organizations to Excel. Uses manualTrigger, zammad, httpRequest, convertToFile. Event-driven trigger; 18 nodes.
Create Animated Stories using GPT-4o-mini, Midjourney, Kling and Creatomate API. Uses httpRequest, stickyNote, manualTrigger. Event-driven trigger; 51 nodes.
Generate Leads with Google Maps - AlexK1919. Uses manualTrigger, scheduleTrigger, executeWorkflowTrigger, stopAndError. Event-driven trigger; 42 nodes.
Limit Code. Uses microsoftOutlookTrigger, httpRequest, limit, noOp. Event-driven trigger; 41 nodes.
AutoQoutesV2_template. Uses manualTrigger, httpRequest, stickyNote, googleSheets. Event-driven trigger; 28 nodes.