Helpdesk migration
Field-level mapping, validation, and rollback between OTRS and Zoho Desk. We move data and schema; workflows are rebuilt natively in Zoho Desk.
OTRS
Source
Zoho Desk
Destination
Compatibility
11 of 12
objects map 1:1 between OTRS and Zoho Desk.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from OTRS to Zoho Desk combines two significant transitions: leaving a self-hosted, relational-database-backed service management suite for a cloud-native, department-centric help desk platform. OTRS stores Tickets, Articles, Attachments, Dynamic Fields, and Configuration Items across a normalized MySQL or PostgreSQL schema; we read directly from that schema rather than relying on the OTRS SOAP API, which lacks publicly documented rate limits and is migration-oriented by design. Zoho Desk organizes support around departments and tickets with thread-structured comments; we map OTRS Queues to Zoho Desk departments, OTRS article bodies to Zoho Desk threads, and OTRS SLA escalation metadata to custom fields on each ticket. OTRS Process Management workflows, CMDB workflow definitions, and Stats do not migrate as code; we deliver a written inventory of every active workflow and SLA configuration for the customer's admin to rebuild in Zoho Desk Blueprint and SLA rules.
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.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a OTRS object lands in Zoho Desk, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
OTRS
Ticket
Zoho Desk
Ticket
1:1OTRS Tickets map directly to Zoho Desk Tickets. We extract Title, State, Priority, Queue, Owner, CustomerID, and created_at from the OTRS ticket table and map to Ticket Subject, Status, Priority, Department, Agent, Contact, and Created Time in Zoho Desk. OTRS ticket lock state maps to Zoho Desk Locked status. All linked article history (email, note, external reply) is extracted in a single pass with the ticket and re-imported as thread entries. Dynamic Fields on each ticket are enumerated during scoping and mapped to Zoho Desk custom fields per ticket.
OTRS
Article
Zoho Desk
Thread / Comment
1:1OTRS Articles (email, note, internal/external reply) map to Zoho Desk thread entries. We preserve article direction (Incoming, Outgoing, Internal note) using the Zoho Desk Comment type and author mapping. Article content-type (plain text, HTML, multipart) is handled so HTML articles render correctly in Zoho Desk's thread view. Article sender information maps to the Zoho Desk agent or contact author field. Each ticket's full article chain is sequenced by OTRS article creation time so the conversation reads in chronological order.
OTRS
Customer
Zoho Desk
Contact
1:1OTRS Customer user records (customer login accounts with contact details) map to Zoho Desk Contacts. We extract CustomerID, first name, last name, email, phone, and address fields from the customer user table and map them to the corresponding Zoho Desk Contact fields. OTRS customer companies (organizational units linked to customer users) map to Zoho Desk Accounts, and individual customer users are linked to their parent Account via AccountExtId on the Contact record.
OTRS
Dynamic Field
Zoho Desk
Custom Field
1:1OTRS Dynamic Fields are stored as EAV rows in separate tables (dynamic_field, dynamic_field_value) with field type metadata in the dynamic_field table. During scoping we enumerate every defined Dynamic Field by name, type (Text, Date, Dropdown, Checkbox, Multiselect, DateTime), and the object it attaches to (Ticket, Article, Customer). We map each to an equivalent Zoho Desk custom field on the appropriate module, applying type conversion where field types differ. Dropdown Dynamic Fields map to Zoho Desk Picklist fields with the source values as picklist options.
OTRS
Configuration Item
Zoho Desk
Product or Custom Object
1:1OTRS Configuration Items (CMDB entries with class-based schemas) have no direct Zoho Desk equivalent. We export CI data from the configitem table and the CI-to-Ticket linking table, then map CIs with class type matching standard product data (hardware, software licenses, contracts) to Zoho Desk Products. Complex or custom CI classes that do not map cleanly to Products are exported as a Zoho Desk Custom Object with fields built to match the CI class schema, and the CI-to-Ticket relationship is preserved as a lookup custom field on the ticket.
OTRS
Queue
Zoho Desk
Department
1:1OTRS Queues define ticket routing, access boundaries, and SLA assignment. We export queue names and assignment rules and map them to Zoho Desk Departments, which are the primary organizational unit for ticket ownership and visibility in Zoho Desk. Queue-based SLA configurations migrate as metadata tags on each ticket and as a reference document for rebuilding SLA rules in Zoho Desk Blueprint. Queue-to-agent assignments map to Department membership for each agent in Zoho Desk.
OTRS
User / Agent
Zoho Desk
Agent
1:1OTRS Agents (support staff with login credentials) map to Zoho Desk Agents. We extract agent records from the users table with their role, group, and queue assignments and map to Zoho Desk Agent records with department membership and role assignment. Agent email addresses are used as the dedupe key. Any OTRS agent without a matching Zoho Desk user account goes to a reconciliation queue for the customer's admin to provision before ticket import runs.
OTRS
SLA
Zoho Desk
SLA Policy (custom field metadata)
1:1OTRS SLA definitions link response and solution time targets to queues and ticket types. We export SLA names, response thresholds, and escalation thresholds and store them as custom fields on each migrated ticket (sla_name, first_response_target, resolution_target) so that Zoho Desk SLA rules can be rebuilt against the same data. SLA rules themselves (workflow triggers, escalation actions) are documented as a written handoff for the customer's admin to rebuild in Zoho Desk Blueprint.
OTRS
Attachment
Zoho Desk
Attachment
1:1OTRS stores attachments as binary blobs linked to articles in the database. We extract each attachment with its filename, MIME type, and parent article ID and re-attach it to the corresponding thread entry in Zoho Desk. The OTRS article-to-attachment relationship is resolved at migration time so attachments land in the correct thread without duplication. Note that Zoho Desk's native Zwitch tool does not migrate KB attachments; our direct extraction approach does not have this limitation.
OTRS
Process Management (Workflow)
Zoho Desk
Blueprint (documentation)
lossyOTRS Process Management stores workflow definitions as XML with activity nodes and conditional transition rules. These are proprietary to OTRS and cannot be imported into Zoho Desk Blueprint as code. We export the workflow structure, each activity, and all transition rules and deliver them as a written inventory document with diagrams showing the workflow state machine. The customer's Zoho Desk admin uses this document to rebuild equivalent Blueprint flows post-migration.
OTRS
Service Catalog
Zoho Desk
Product (service mapping)
1:1OTRS Services define available offerings linked to SLAs and queues. We export service names, descriptions, and service-to-SLA associations and map them to Zoho Desk Products (or a custom services module if the customer's service catalog is complex). Service availability rules are documented separately for admin rebuild in Zoho Desk.
OTRS
Stats / Reports
Zoho Desk
Reports (not migrated)
1:1OTRS stores report definitions and rendered output in the database. These are proprietary to OTRS and cannot be directly imported into Zoho Desk reporting. We flag the gap and advise the customer to treat report rebuilding as a post-migration task using Zoho Desk's built-in analytics. We export a list of OTRS report names and their filters as a reference for manual rebuild.
| OTRS | Zoho Desk | Compatibility | |
|---|---|---|---|
| Ticket | Ticket1:1 | Fully supported | |
| Article | Thread / Comment1:1 | Fully supported | |
| Customer | Contact1:1 | Fully supported | |
| Dynamic Field | Custom Field1:1 | Fully supported | |
| Configuration Item | Product or Custom Object1:1 | Fully supported | |
| Queue | Department1:1 | Fully supported | |
| User / Agent | Agent1:1 | Fully supported | |
| SLA | SLA Policy (custom field metadata)1:1 | Fully supported | |
| Attachment | Attachment1:1 | Fully supported | |
| Process Management (Workflow) | Blueprint (documentation)lossy | Fully supported | |
| Service Catalog | Product (service mapping)1:1 | Mapping required | |
| Stats / Reports | Reports (not migrated)1:1 | 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.
OTRS gotchas
Community Edition security freeze forces migration
Direct database export preferred over SOAP API
Major version upgrades can leave login broken
Zoho Desk gotchas
Agent email identity determines comment ownership after migration
Blueprints and SLA policies do not export via API
File upload capped at 10GB per migration batch
Tier-gated export and migration capabilities
Inbound migration is two-phase with a hard Phase 2 cutoff
Pair-specific challenges
Migration approach
Discovery and database access scoping
We audit the OTRS instance: version (Community vs paid), MySQL or PostgreSQL backend, ticket volume, article count, dynamic field inventory (names and types), Configuration Item class list, active Process Management workflows, and SLA definitions. We coordinate with the customer's DBA to establish read-only database access during a scheduled maintenance window. We also assess the Zoho Desk destination portal: plan tier, existing departments, existing custom fields, and agent provisioning status. The discovery output is a written scope document, a migration field mapping table, and a Zoho Desk schema readiness checklist.
OTRS database extraction
We run a direct database read from the OTRS MySQL or PostgreSQL schema. We extract Tickets first (with all standard fields), then Articles (linked to ticket IDs), Attachments (as base64 blobs with parent article references), Customers and CustomerUsers, Dynamic Field values (joined against the EAV tables), Configuration Items, and Queues. We use read-only transactions to avoid locking production data. Each extraction pass emits a row count report that we reconcile against the expected counts from discovery before proceeding to transformation.
Schema mapping and Zoho Desk field creation
We create the Zoho Desk custom fields required for the OTRS Dynamic Field mapping during a pre-import phase. Each OTRS Dynamic Field is assigned a Zoho Desk equivalent (Text, Picklist, Date, Checkbox) and deployed to the Ticket module. OTRS Queues are mapped to Zoho Desk Departments (created if they do not exist). OTRS SLA names and thresholds are stored as metadata fields on the ticket rather than as Zoho Desk SLA rules (SLA rules are rebuilt post-migration by the admin). If Configuration Items are being mapped to a custom Zoho Desk object, we provision that object and its fields before ticket import begins.
Agent and contact pre-import
We import OTRS Agents as Zoho Desk Agents before any ticket data. Agent email addresses are used as the dedupe key. We map each agent to their Zoho Desk department and role. OTRS Customers and CustomerUser records are imported as Zoho Desk Contacts, with CustomerUser organizations mapped to Zoho Desk Accounts. Any OTRS CustomerUser without a matching Zoho Desk Contact goes into a reconciliation queue. This phase must complete before ticket import because ticket records reference agent and contact IDs.
Ticket and attachment import
We import OTRS Tickets in batches using the Zoho Desk REST API. For each ticket we set the subject, status, priority, department (from queue mapping), agent (from agent mapping), contact (from customer mapping), created_at timestamp (preserved from OTRS via API), and all dynamic field values. Article history is imported as thread entries linked to the parent ticket, with article direction preserved as comment type. Attachments are uploaded as binary blobs and linked to the parent thread entry. We chunk by 100 records per batch and monitor Zoho Desk credit consumption, pausing and resuming as needed to avoid quota exhaustion.
Cutover, validation, and handoff
We freeze OTRS writes during the final cutover window, run a delta migration of any records modified since the initial export, then enable Zoho Desk as the system of record. We deliver the Process Management workflow inventory, SLA rule rebuild guide, and report rebuild reference as written documents for the customer's admin. We support a one-week post-migration validation window where we resolve any record mismatches raised by the support team. We do not rebuild OTRS workflows as Zoho Desk Blueprint or rebuild OTRS reports in Zoho Desk Analytics as part of the standard migration scope; these are separate engagements.
Platform deep dives
OTRS
Source
Strengths
Weaknesses
Zoho Desk
Destination
Strengths
Weaknesses
Complexity grading
Moderate Helpdesk migration. 4 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across OTRS and Zoho Desk.
Object compatibility
4 of 7 objects need a mapping; the rest are 1:1.
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
OTRS: Not publicly documented; no published rate limit values.
Data volume sensitivity
OTRS 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 OTRS to Zoho Desk migration scoping. Not seeing yours? Book a call.
Walk through your OTRS to Zoho Desk migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave OTRS
Other ways to arrive at Zoho Desk
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.