Helpdesk migration

Migrate from Zammad to Salesforce Service Cloud

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 logo

Zammad

Source

Salesforce Service Cloud

Destination

Salesforce Service Cloud logo

Compatibility

75%

9 of 12

objects map 1:1 between Zammad and Salesforce Service Cloud.

Complexity

CModerate

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Zammad logo

Zammad

What's pushing teams away

  • Time tracking cannot be corrected after entry — users report frustration that you cannot edit or delete time entries without rewriting entire ticket communications.
  • Feature requests are frequently dismissed by the community team as isolated cases, leaving customers with no clear roadmap for common workflow needs like per-customer PDF reports.
  • Custom field support via the API is poorly documented, requiring developers to experiment with undocumented endpoints to populate or read custom objects on tickets.
  • Organizations outgrow Starter and Professional agent limits and find Plus tier pricing approaches commercial SaaS alternatives, eliminating the cost advantage.
  • Self-hosting operational overhead — server maintenance, updates, backups, and support contracts — grows disproportionately for teams without dedicated DevOps resources.

Choosing

Salesforce Service Cloud logo

Salesforce Service Cloud

What's pulling them in

  • Deep Salesforce ecosystem integration with Sales Cloud, Marketing Cloud, and custom Apex apps creates a single pane of glass for enterprise customer data and cross-functional workflows.
  • Omnichannel case routing — email, chat, phone, social, and messaging — unified under one case object means agents do not lose context when customers switch channels mid-interaction.
  • AI for customer service (Einstein AI / Agentforce) offers automated case classification, suggested replies, and chatbot routing that reduces Tier-1 ticket volume without manual rule authoring.
  • Entitlement and milestone tracking enforces SLA compliance natively, automatically calculating breach windows and surfacing violations to supervisors in dashboards.
  • Salesforce's massive AppExchange ecosystem provides pre-built connectors, industry-specific managed packages, and third-party tools that extend Service Cloud beyond its out-of-box capabilities.

Object mapping

How Zammad objects map to Salesforce Service Cloud

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

maps to

Salesforce Service Cloud

Case

1:1
Fully supported

Zammad 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)

maps to

Salesforce Service Cloud

User + Contact

1:1
Fully supported

Zammad 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)

maps to

Salesforce Service Cloud

Contact

1:1
Fully supported

Zammad 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

maps to

Salesforce Service Cloud

Account

1:1
Fully supported

Zammad 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

maps to

Salesforce Service Cloud

Queue + Group

lossy
Fully supported

Zammad 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

maps to

Salesforce Service Cloud

Entitlement + Entitlement Process

1:1
Fully supported

Zammad 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)

maps to

Salesforce Service Cloud

Business Hours

1:1
Fully supported

Zammad 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

maps to

Salesforce Service Cloud

Multi-Select Picklist or Topic

lossy
Fully supported

Zammad 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

maps to

Salesforce Service Cloud

Knowledge Article

1:1
Fully supported

Zammad 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

maps to

Salesforce Service Cloud

Custom Field on Standard Object

1:1
Fully supported

Zammad 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

maps to

Salesforce Service Cloud

ContentDocument (File)

1:1
Fully supported

Attachments 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

maps to

Salesforce Service Cloud

Flow (inventory only)

lossy
Fully supported

Zammad 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.

Gotchas + challenges

What specifically takes care here

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 logo

Zammad gotchas

High

Migration Wizard requires empty, uninitialized instance

High

Agent count limits are enforced, not advisory

Medium

Time entries are immutable post-creation

Medium

Custom Objects use a disabled-not-deleted convention

Low

Annual billing cancellation requires 90-day notice

Salesforce Service Cloud logo

Salesforce Service Cloud gotchas

High

Data Export 512MB file size cap breaks large org exports

High

API Daily Request Limits vary by license edition

High

No automatic data backup in base Salesforce

Medium

Picklist dependencies silently break records when unmapped

Medium

Workflow rules fire unexpectedly during data load

Pair-specific challenges

  • Zammad time entries are immutable after creation

    Once a time entry is saved against a ticket in Zammad, there is no UI or API method to edit or delete it without rewriting the entire ticket communication thread. This means any billing corrections, rounding adjustments, or entry errors in the source system carry forward into the migration. We flag this before migration begins by auditing all tickets with time accounting and recommending customers review and correct time entries in Zammad before the extraction window. Time entries migrate as read-only entries in Salesforce with the original Zammad timestamps and notes preserved.

  • Import mode must be enabled before Zammad data extraction

    Zammad's REST API behaves differently when Import Mode is enabled: dates migrate correctly and notification triggers are suppressed. For Zammad SaaS accounts, this requires contacting Zammad support to activate the mode; for self-hosted instances, it requires running Setting.set('import_mode', true) in the Rails console. We coordinate this activation with the customer's Zammad admin as part of the pre-migration preparation step, before any data extraction begins.

  • Historical timestamps require Set Audit Fields permission in Salesforce

    Migrating Zammad Created At, Closed At, and Last Modified At timestamps into Salesforce requires the Enable Set Audit Fields upon Record Creation permission and the Modify All Data permission on the migration user profile. Without these, Salesforce ignores imported timestamps and sets them to the migration date. We coordinate with the customer's Salesforce admin to enable these permissions before Case migration and document the configuration requirement in the pre-flight checklist.

  • Zammad Groups require Queue pre-creation before Case load

    Zammad ticket group assignments reference Groups by internal ID, and each Group in Zammad has a corresponding email address used for ticket routing. In Salesforce, Queues must exist before Case records can be assigned to them via OwnerId. We create Queues during the schema preparation phase, mapping each Zammad Group to a named Salesforce Queue and preserving the email address for inbound case routing configuration post-migration.

  • Knowledge Base visibility settings do not map directly

    Zammad Knowledge Base articles have internal and external visibility flags that do not map one-to-one to Salesforce Knowledge article visibility rules. Salesforce Knowledge uses customer type, account assignment, and permission-based visibility rather than a simple internal/external flag. We map the visibility as closely as feasible (internal articles become internal-only Knowledge articles, external articles become public) and flag any articles with conditional visibility for the customer's admin to configure post-migration in Salesforce Knowledge setup.

Migration approach

Six steps for a successful Zammad to Salesforce Service Cloud data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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

Context on both ends of the pair

Zammad logo

Zammad

Source

Strengths

  • Fully open-source with both cloud-hosted and self-hosted deployment options, giving complete control over infrastructure.
  • Omnichannel consolidation — email, chat, SMS, Telegram, Twitter/X, Facebook, and WhatsApp unified in a single ticket queue.
  • Per-agent pricing with generous free tier on Starter (€7/agent/month annual) and no per-contact billing surprises.
  • GDPR-compliant with ISO27001-certified German data center for hosted deployments.
  • REST API supports automation, integrations via n8n or custom scripts, and programmatic ticket/User/Organization management.

Weaknesses

  • Time tracking entries cannot be edited or deleted after creation without rewriting the associated ticket communication.
  • Per-agent pricing scales linearly — large support teams on Plus tier (€25/agent/month) approach commercial SaaS cost territory.
  • Custom Objects lack clear API documentation for read/write operations, requiring developer experimentation for integration work.
  • Feature development pace is governed by a small nonprofit team, with community feature requests frequently deprioritized.
  • WhatsApp and Facebook channels are gated behind the €25/agent Plus tier, not available on lower-cost Professional.
Salesforce Service Cloud logo

Salesforce Service Cloud

Destination

Strengths

  • Enterprise-grade security, compliance certifications, and audit logging available across all paid editions with Shield offering enhanced event monitoring.
  • Scalable multi-tenant cloud architecture supporting orgs from 5 users to 150,000+ seat enterprises without infrastructure management overhead.
  • Omnichannel contact center unifying email, live chat, phone, messaging, and social into a single Case timeline per customer interaction.
  • Rich workflow automation via Salesforce Flow, Process Builder, and Apex triggers enabling complex case escalation, routing, and field updates.
  • Native AI capabilities (Agentforce / Einstein) for case auto-routing, classification, suggested responses, and chatbot escalation without third-party add-ons.

Weaknesses

  • Per-seat pricing model with no contact limits creates unpredictable cost scaling for large organizations adding many agents over time.
  • No automatic data backup — organizations must purchase a third-party backup solution or build manual Data Loader exports to protect against data loss from human error, failed deployments, or integrations overwriting records.
  • Steep learning curve for non-technical users requiring dedicated admin resources and formal training investment before teams reach productive velocity.
  • Annual contract requirements and limited pro-ration on exit create significant switching cost friction, especially for organizations evaluating alternatives mid-cycle.
  • Add-on licensing (CPQ, Einstein Activity Capture, Shield, Data Cloud) can double effective per-seat cost without clear documentation of which features are included in base tiers.

Complexity grading

How hard is this migration?

Moderate Helpdesk migration. 1 of 7 objects need a manual workaround.

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Zammad and Salesforce Service Cloud.

  • Object compatibility

    C

    1 of 7 objects need a manual workaround.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    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

    B

    Zammad doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Zammad to Salesforce Service Cloud migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Zammad to Salesforce Service Cloud data migrations

Answers to the questions buyers ask most during Zammad to Salesforce Service Cloud migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most migrations land between three and five weeks for accounts under 20,000 tickets, 3,000 users, and a straightforward Knowledge Base. Migrations with complex SLA calendars, multi-timezone Business Hours, large knowledge bases (over 500 articles), or custom Object Attributes on multiple objects move to eight to twelve weeks because of schema pre-creation time, entitlement process configuration, and Salesforce Knowledge article type setup.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Zammad.
Land in Salesforce Service Cloud, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day