Helpdesk migration
Field-level mapping, validation, and rollback between Zammad and Salesforce Service Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Service Cloud.
Zammad
Source
Salesforce Service Cloud
Destination
Compatibility
9 of 12
objects map 1:1 between Zammad and Salesforce Service Cloud.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Zammad to Salesforce Service Cloud is a structural migration that restructures Zammad's flat ticket-and-user model into Salesforce's entitlement-driven, multi-object case hierarchy. Zammad's ticket-centric organization maps cleanly to Cases, but Organizations must be resolved as Accounts before Contacts load, and Groups require queue creation before ticket assignment records can reference them. We handle the dependency chain in scoping order, pre-create the destination schema including custom fields and Business Hours calendars, and run validation in a Salesforce Sandbox before production cutover. Zammad Triggers, Macros, and Text Modules do not migrate as automation code; we deliver a written inventory for the customer's Salesforce admin to rebuild in Flow and Quick Actions. Time entries in Zammad are immutable, so any corrections must happen in the source before migration begins, or they carry forward with the correction flag noted in the reconciliation report.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Source platform
Zammad platform overview
Scorecard, SWOT, gotchas, and pricing for Zammad.
Destination platform
Salesforce Service Cloud platform overview
Scorecard, SWOT, gotchas, and pricing for Salesforce Service Cloud.
Data migration guide
The complete Salesforce Service Cloud migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
Salesforce Service Cloud migration checklist
Pre- and post-cutover tasks for moving onto Salesforce Service Cloud.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Zammad object lands in Salesforce Service Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Zammad
Ticket
Salesforce Service Cloud
Case
1:1Zammad Tickets map directly to Salesforce Cases. Ticket state (new, open, pending, closed) maps to Case Status, priority maps to Case Priority, and the group assignment maps to the Salesforce Queue or direct OwnerId assignment. Full article thread history migrates as EmailMessage records (for email-type articles) and ContentDocumentLink-attached Files (for internal notes and attachments), preserving author, timestamp, and body content in the original sequence. Zammad ticket tags migrate as a custom multi-select picklist field on Case.
Zammad
User (Agent)
Salesforce Service Cloud
User + Contact
1:1Zammad Agents map to Salesforce User records (agent side) and optionally to Contact records if the agent is also a customer contact in the system. We resolve by email match against the destination org's User table. Agents without matching Users go to a reconciliation queue for the customer's Salesforce admin to provision before the ticket migration phase begins, because OwnerId references are required on Case insert.
Zammad
User (Customer)
Salesforce Service Cloud
Contact
1:1Zammad Customers map to Salesforce Contacts. The Zammad customer User account is not a licensed User in Salesforce; it becomes a Contact record linked to the parent Account (mapped from Zammad Organization). We resolve the AccountId lookup at migration time using the Zammad Organization reference.
Zammad
Organization
Salesforce Service Cloud
Account
1:1Zammad Organizations map to Salesforce Accounts. Organization membership links are preserved as Contact-to-Account relationships. A Zammad User can belong to multiple Organizations, which maps to a Contact belonging to one primary Account with additional AccountContactRelation records for secondary affiliations. Organization-level custom Object Attributes migrate to custom fields on Account.
Zammad
Group
Salesforce Service Cloud
Queue + Group
lossyZammad Groups control ticket assignment and agent access. We map Groups to Salesforce Queues (for case routing) and Salesforce Groups (for sharing rules and access). Group email addresses become Case origin email addresses on the Queue. Each Queue is created before the Case migration phase so that the QueueId reference is satisfied on every Case insert.
Zammad
SLA
Salesforce Service Cloud
Entitlement + Entitlement Process
1:1Zammad SLAs with response and resolution time commitments tied to Calendars map to Salesforce Entitlements and Entitlement Processes. The Zammad Calendar (business hours definition) maps to Salesforce Business Hours. We pre-create Business Hours records matching Zammad's calendar timezone and working-day configuration before Entitlement records are inserted, because Entitlement references Business Hours by ID.
Zammad
Calendar (Business Hours)
Salesforce Service Cloud
Business Hours
1:1Zammad Calendars define business hours for SLA calculations. We migrate Calendar configurations including working days, timezone, and holiday schedules as Salesforce Business Hours records. Holiday schedules from Zammad calendars migrate as Salesforce Operating Hours Holiday records. Salesforce supports multiple Business Hours sets; we map each Zammad Calendar to a named Salesforce Business Hours record.
Zammad
Tag
Salesforce Service Cloud
Multi-Select Picklist or Topic
lossyZammad tags are flat key-value labels attached to Tickets. We migrate all tags as a custom multi-select picklist field on the Case object (for ticket-level classification). If tags are used for content taxonomy rather than ticket labeling, we map them to Salesforce Topics with TopicAssignment records linked to Case.
Zammad
Knowledge Base Article
Salesforce Service Cloud
Knowledge Article
1:1Zammad Knowledge Base articles migrate to Salesforce Knowledge articles of the matching article type. We preserve article title, body content, category assignments (mapped to Salesforce data categories), and internal/external visibility flags. Note that Zammad article visibility settings must be reviewed against Salesforce Knowledge visibility rules, which use customer type, account, and permission-based access rather than a simple internal/external flag.
Zammad
Custom Object / Object Attribute
Salesforce Service Cloud
Custom Field on Standard Object
1:1Zammad Custom Objects and Object Attributes attached to Tickets, Users, Organizations, and Groups migrate to Salesforce custom fields on the corresponding standard object (Case, Contact, Account, User). We pre-create the destination schema including field type mapping (Zammad Boolean to Salesforce Checkbox, DateTime to Datetime, Integer to Number, Text to Text, Single Select to Picklist, Multi Select to Multi-Select Picklist) before any data import begins.
Zammad
Attachment
Salesforce Service Cloud
ContentDocument (File)
1:1Attachments on Zammad ticket articles migrate as Salesforce Files attached to the parent Case via ContentDocumentLink. We preserve filename, content-type, and file size. Files over 25 MB are chunked during upload to respect Salesforce file size limits. The original attachment author and timestamp migrate as File metadata fields.
Zammad
Trigger
Salesforce Service Cloud
Flow (inventory only)
lossyZammad Triggers automate actions based on ticket conditions. We do not migrate Triggers as automation code because Zammad triggers and Salesforce Flow have different trigger models, condition operators, and action types. We deliver a written inventory of every active Zammad Trigger including its conditions, actions, and a recommended Salesforce Flow equivalent for the customer's admin to rebuild post-migration.
| Zammad | Salesforce Service Cloud | Compatibility | |
|---|---|---|---|
| Ticket | Case1:1 | Fully supported | |
| User (Agent) | User + Contact1:1 | Fully supported | |
| User (Customer) | Contact1:1 | Fully supported | |
| Organization | Account1:1 | Fully supported | |
| Group | Queue + Grouplossy | Fully supported | |
| SLA | Entitlement + Entitlement Process1:1 | Fully supported | |
| Calendar (Business Hours) | Business Hours1:1 | Fully supported | |
| Tag | Multi-Select Picklist or Topiclossy | Fully supported | |
| Knowledge Base Article | Knowledge Article1:1 | Fully supported | |
| Custom Object / Object Attribute | Custom Field on Standard Object1:1 | Fully supported | |
| Attachment | ContentDocument (File)1:1 | Fully supported | |
| Trigger | Flow (inventory only)lossy | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Zammad gotchas
Migration Wizard requires empty, uninitialized instance
Agent count limits are enforced, not advisory
Time entries are immutable post-creation
Custom Objects use a disabled-not-deleted convention
Annual billing cancellation requires 90-day notice
Salesforce Service Cloud gotchas
Data Export 512MB file size cap breaks large org exports
API Daily Request Limits vary by license edition
No automatic data backup in base Salesforce
Picklist dependencies silently break records when unmapped
Workflow rules fire unexpectedly during data load
Pair-specific challenges
Migration approach
Discovery and data audit
We audit the source Zammad instance across version, deployment type (SaaS vs self-hosted), and enabled channels. We extract ticket volume, user counts (Agents vs Customers), Organization count, SLA count, Knowledge Base article count, and custom Object Attribute definitions. We also identify any tickets with time accounting that may require pre-migration correction and any attachments exceeding 25 MB that require chunked upload. The discovery output is a written migration scope document with record counts per object and a flag list of any items requiring source-side correction before extraction.
Schema pre-creation in Salesforce Sandbox
We create the destination schema in a Salesforce Sandbox before any production data moves. This includes provisioning Queues for each Zammad Group, Business Hours records for each Zammad Calendar, custom fields on Case and Contact matching Zammad custom Object Attributes, Entitlement Processes matching Zammad SLAs, and Salesforce Knowledge article types matching the Zammad Knowledge Base structure. Schema is validated against the scoping document before proceeding to data extraction.
User reconciliation and provisioning
We extract every distinct Zammad User referenced as a ticket owner and map them by email to Salesforce User records. Agents without matching Salesforce Users go to a reconciliation queue for the customer's admin to provision before Case migration begins. Organizations are extracted and mapped to Salesforce Accounts before Contacts load, because the AccountId lookup is required on Contact insert. Customers are extracted as Contacts with the AccountId resolved from their Zammad Organization reference.
Import mode activation and data extraction
We coordinate with the customer's Zammad admin to enable Import Mode (for SaaS via Zammad support, for self-hosted via Rails console). With Import Mode active, we extract all Tickets with full article thread history, Organizations, Users, Groups, SLAs, Calendars, Knowledge Base articles, and custom Object Attribute values via the Zammad REST API. Attachments are extracted separately as binary blobs for ContentDocument upload.
Sandbox migration and reconciliation
We run a full migration into the Salesforce Sandbox using production-like data volume. The customer's Salesforce admin and support operations lead reconcile record counts (Cases in, Contacts in, Accounts in), spot-check 25-50 random Cases against Zammad source for field-level accuracy, and validate SLA milestone calculation on a sample of Entitlement records. Any mapping corrections, missing custom fields, or missing Queue assignments are corrected in the Sandbox schema before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Zammad Organizations), Contacts (with AccountId resolved), Users (agents provisioned and reconciled), Queues (created from Zammad Groups), Business Hours (from Zammad Calendars), Entitlements (from Zammad SLAs), Cases (with QueueId and OwnerId resolved, article thread as EmailMessages and Files), Knowledge Articles, and custom field values. Each phase emits a row-count reconciliation report before the next phase begins. We use the Salesforce Bulk API with batch chunking for Case and Contact loads exceeding 10,000 records.
Cutover, delta sync, and Trigger inventory handoff
We freeze Zammad writes during cutover, run a final delta migration of any records modified during the migration window, then enable Salesforce Service Cloud as the system of record. We deliver the Trigger, Macro, and Text Module inventory document to the customer's admin team for rebuild in Salesforce Flow and Quick Actions. We support a one-week hypercare window where we resolve reconciliation issues raised by the support team. We do not rebuild Zammad automations as Salesforce Flow inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Zammad
Source
Strengths
Weaknesses
Salesforce Service Cloud
Destination
Strengths
Weaknesses
Complexity grading
Moderate Helpdesk migration. 1 of 7 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Zammad and Salesforce Service Cloud.
Object compatibility
1 of 7 objects need a manual workaround.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
7-object category — typical timelines run 2–7 days end-to-end.
API constraints
Zammad: Not publicly documented in core REST API docs — Zammad is self-hostable, so effective limits depend on each instance's deployment topology and any reverse-proxy throttling in front of the app.
Data volume sensitivity
Zammad doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Zammad to Salesforce Service Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Zammad to Salesforce Service Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Zammad
Other ways to arrive at Salesforce Service Cloud
Same-Helpdesk migrations
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.