Helpdesk migration
Field-level mapping, validation, and rollback between Frappe Helpdesk and Zoho Desk. We move data and schema; workflows are rebuilt natively in Zoho Desk.
Frappe Helpdesk
Source
Zoho Desk
Destination
Compatibility
10 of 13
objects map 1:1 between Frappe Helpdesk and Zoho Desk.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Frappe Helpdesk to Zoho Desk is a multi-phase migration that translates PostgreSQL DocTypes into Zoho Desk's department-centric data model. Frappe Helpdesk stores tickets and communications as HD Ticket and Communication DocTypes in a self-hosted PostgreSQL database, while Zoho Desk organizes support around Tickets, Contacts, Accounts, and a multi-department hierarchy with Blueprint-based workflow automation. We access the Frappe database at the DocType level to extract tickets, customer records, conversations, SLA definitions, canned responses, and custom fields, then re-import them through Zoho Desk's REST API or CSV import endpoints with parent-record lookup resolution. Zoho Desk does not migrate teams as a native concept during third-party imports; we add agents to departments manually as a post-import step. Workflows, SLA triggers, and assignment rules do not migrate as automation code; we deliver a written inventory of every rule requiring rebuild in Zoho Desk Blueprint or Macros. Private file attachments in Frappe that require authenticated sessions may be inaccessible without the site's session cookie; we flag these during discovery and advise customers to temporarily open access before the migration window.
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 Frappe Helpdesk 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.
Frappe Helpdesk
HD Ticket
Zoho Desk
Ticket
1:1HD Ticket records map to Zoho Desk Ticket with status, priority, ticket type, creation and modification timestamps, description HTML, and SLA deadline fields transferred directly. We preserve the original Frappe created_on timestamp in a custom Zoho Desk field frappe_created_date__s to maintain reporting continuity. Thread history (agent replies, customer messages) migrates as Zoho Desk Comments ordered chronologically. HD Ticket Template custom fields require explicit field-level mapping to Zoho Desk custom ticket fields during scoping; we flag all HD Ticket custom fields during discovery and pre-create equivalent Zoho Desk fields before import.
Frappe Helpdesk
HD Customer
Zoho Desk
Contact
1:1HD Customer records map to Zoho Desk Contact with name, email, phone, organization link, and custom fields transferred directly. Portal user linkage is preserved in a custom field for reconciliation. If the source HD Customer has an organization link, we create a corresponding Zoho Desk Account and set the Contact's AccountId lookup. HD Customer custom fields require mapping to Zoho Desk Contact custom fields before import.
Frappe Helpdesk
HD Customer Organization
Zoho Desk
Account
1:1Frappe Helpdesk organizations attached to HD Customer map to Zoho Desk Account. The organization's name, website, territory, and industry fields transfer directly. Account is created before Contact import so that the AccountId lookup is satisfied at the moment of Contact insert. If no organization exists in the source, Contact records are created without an AccountId and assigned to an Unassigned Account placeholder for post-import cleanup.
Frappe Helpdesk
Team
Zoho Desk
Department
lossyFrappe Helpdesk Teams define agent groupings and email inbox routing. Zoho Desk does not have a native Team equivalent; it uses Department as the agent grouping construct. We map team names to Zoho Desk Departments and add agents to the relevant departments during the post-import agent provisioning step. Email inbox routing rules from Frappe Teams are translated to Zoho Desk department-level email configurations. If multiple Frappe Teams map to a single Zoho Desk Department, agent assignment is cumulative.
Frappe Helpdesk
Agent
Zoho Desk
Agent
1:1Frappe Helpdesk Agent records (user accounts, roles, permissions) map to Zoho Desk Agent profiles. We match agents by email address. Any Frappe Agent without a corresponding Zoho Desk agent account is placed in a reconciliation queue and the customer's Zoho admin provisions the missing account before record import resumes. Agent role scoping (tier-1, tier-2, supervisor) maps to Zoho Desk agent Level and field-level security.
Frappe Helpdesk
SLA Policy
Zoho Desk
SLA Policy
1:1Frappe Helpdesk SLA Policies define response and resolution time windows by priority or ticket type. Zoho Desk SLA Policies support first-response and resolution targets scoped per department. We map Frappe SLA Policy definitions to Zoho Desk SLA Policy configurations with matching time windows. If the destination Zoho Desk plan does not include SLA management, we preserve SLA policy names and target minutes in a custom field on the Ticket for manual policy application post-migration.
Frappe Helpdesk
Assignment Rule
Zoho Desk
Blueprint or Macro
lossyFrappe Helpdesk Assignment Rules automate ticket routing based on subject keywords, customer tier, and ticket type. These are configuration records that do not migrate as automation code. We export all active assignment rules, document their trigger conditions, actions, and order, and deliver a written inventory recommending equivalent Zoho Desk Blueprint stages or Macro triggers for each rule. The customer's admin rebuilds automation rules in Zoho Desk post-migration.
Frappe Helpdesk
Knowledge Base Article
Zoho Desk
Article
1:1KB Articles in Frappe Helpdesk are DocTypes with category assignments and HTML article content. We migrate articles and category hierarchy to Zoho Desk Help Center Articles and Sections. Article view counts and feedback ratings are not transferred because Zoho Desk's Article object does not store these as standard fields. Knowledge base attachments (images embedded in articles) require manual re-upload to Zoho Desk because third-party imports do not transfer KB attachments.
Frappe Helpdesk
Canned Response
Zoho Desk
Macro
1:1Pre-written response templates in Frappe Helpdesk store subject and content as DocType fields. These migrate cleanly as text blobs to Zoho Desk Macros, which contain a name, description, and set of automated actions (reply content, field updates, tag additions). Dynamic variable substitution syntax such as {{ticket.customer_name}} in Frappe canned responses does not have a direct Zoho Desk equivalent; we strip the template variables and flag them in the handoff document for manual update.
Frappe Helpdesk
Communication
Zoho Desk
Comment
1:1Frappe Helpdesk Communication records represent agent replies and customer messages linked to HD Ticket. We preserve chronological order and thread structure by inserting Comments on the mapped Zoho Desk Ticket in original timestamp sequence. Comment author is preserved in a custom Comment field frappe_author__s because Zoho Desk third-party imports do not always carry the original author name. Inline images embedded in Communication records are dropped during import; we flag these in the attachment inventory for manual re-insertion.
Frappe Helpdesk
HD Ticket Template
Zoho Desk
Custom Ticket Fields
lossyHD Ticket Template is a Frappe Doctype that controls which custom fields render in the agent form view. Custom fields on HD Ticket exist as Frappe Custom Field records but do not appear in the agent interface until they are added to the Template. We export all HD Ticket Template entries, map each custom field definition to a Zoho Desk custom ticket field with an equivalent data type, and document any fields that exist in the source but have no Zoho Desk equivalent for the customer's admin to review.
Frappe Helpdesk
Attachment (public file)
Zoho Desk
Ticket Attachment
1:1Frappe Helpdesk file records linked to HD Ticket that are stored as public files are re-downloaded using the Frappe site's public URL and uploaded to Zoho Desk as ticket attachments. We preserve the original filename and attach it to the corresponding migrated Ticket. Attachment migration is attempted during the main import phase and failed downloads are logged in the attachment inventory for the customer's review.
Frappe Helpdesk
Tag
Zoho Desk
Tag
1:1Tags applied to HD Ticket records are mapped to Zoho Desk Tags. If Zoho Desk's tagging feature is not enabled in the destination account, we migrate tag names as a custom multi-select picklist field on the Ticket for post-migration admin review and tagging-system activation.
| Frappe Helpdesk | Zoho Desk | Compatibility | |
|---|---|---|---|
| HD Ticket | Ticket1:1 | Fully supported | |
| HD Customer | Contact1:1 | Fully supported | |
| HD Customer Organization | Account1:1 | Fully supported | |
| Team | Departmentlossy | Fully supported | |
| Agent | Agent1:1 | Fully supported | |
| SLA Policy | SLA Policy1:1 | Fully supported | |
| Assignment Rule | Blueprint or Macrolossy | Fully supported | |
| Knowledge Base Article | Article1:1 | Fully supported | |
| Canned Response | Macro1:1 | Fully supported | |
| Communication | Comment1:1 | Fully supported | |
| HD Ticket Template | Custom Ticket Fieldslossy | Fully supported | |
| Attachment (public file) | Ticket Attachment1:1 | Fully supported | |
| Tag | Tag1: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.
Frappe Helpdesk gotchas
HD Ticket custom fields require HD Ticket Template configuration
Workflow resets after Frappe version upgrades
Errors when Helpdesk is installed on existing ERPNext + HR sites
Rate limiting is time-based, not request-count based
Private file attachments require authentication to re-download
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 site health assessment
We audit the source Frappe Helpdesk instance across PostgreSQL DocTypes: HD Ticket volume and custom field count, HD Customer records, Communication record count, SLA Policy definitions, active Assignment Rules, KB Article count and category structure, canned response volume, Team structures, and attachment inventory (public vs private files). We also run Frappe site health checks to identify the GitHub issue #3003 site-configuration conflict that can render tickets invisible in the agent view. If that conflict is present, we resolve it before exporting or use a direct database connection to bypass the application layer. Discovery output is a written migration scope, object inventory, and Frappe site health report.
Schema design and field mapping
We design the destination Zoho Desk schema based on the discovery inventory. This includes creating Zoho Desk custom fields for every Frappe Helpdesk HD Ticket custom field and HD Customer custom field, mapping Frappe Teams to Zoho Desk Departments, designing the SLA Policy mapping, and documenting which canned responses require template variable cleanup. We pre-create the Zoho Desk custom fields via API before any data import begins so that the import job can write directly to typed fields. The customer provisions Zoho Desk agents and departments in advance so that agent email matching and department assignment are ready before record migration starts.
Sandbox migration and reconciliation
We run a full migration into the customer's Zoho Desk sandbox using production-like data volume. The customer reconciles record counts (Tickets in, Contacts in, Accounts in, Comments in), spot-checks 25-50 random tickets for field accuracy and thread completeness, and reviews the attachment inventory. Any field mapping corrections, SLA policy adjustments, or department assignments are finalized here. Sign-off on sandbox results authorizes the production migration start date. This step also confirms the scope of any delta migration window (tickets created in Frappe Helpdesk during the migration window) that requires a second pass.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Frappe organizations), Contacts (with AccountId resolved and HD Customer custom fields mapped), Departments (from Frappe Teams), Agents (matched by email, with role and level mapped), SLA Policies (definition mapping), Knowledge Base Articles and Sections, Canned Responses to Macros (with template variables flagged), Tickets (with original creation date preserved in custom field, SLA deadline fields mapped, and status translated), Comments (chronological order preserved, author flagged in custom field, inline images logged separately), and Attachments (public files re-downloaded and re-uploaded). Each phase emits a row-count reconciliation report before the next phase begins.
Agent provisioning and team mapping
We reconcile Frappe Helpdesk agents against Zoho Desk agent accounts by email. Agents without a Zoho Desk account are logged in the reconciliation queue for the customer's admin to provision. We add each Frappe agent to the corresponding Zoho Desk Department based on the Team-to-Department mapping designed during schema design. If a Frappe agent appears in multiple Teams, they are added to multiple Zoho Desk Departments. Role scoping (tier-1, tier-2, supervisor) maps to Zoho Desk agent Level configuration.
Cutover, delta sync, and workflow rebuild handoff
We freeze Frappe Helpdesk writes during cutover, run a final delta migration of any records modified or created during the migration window, then mark Zoho Desk as the system of record. We deliver the Assignment Rule and SLA trigger inventory document to the customer's admin team with Blueprint and Macro recommendations for each migrated rule. We do not rebuild Frappe Helpdesk workflows as Zoho Desk Blueprint stages inside the migration scope; that is a separate engagement or an internal admin task. We support a five-business-day hypercare window for reconciliation issues raised during the first week of production use in Zoho Desk.
Platform deep dives
Frappe Helpdesk
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 Frappe Helpdesk 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
Frappe Helpdesk: Fixed-window rate limiting based on cumulative request time; no public per-endpoint limit documented.
Data volume sensitivity
Frappe Helpdesk 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 Frappe Helpdesk to Zoho Desk migration scoping. Not seeing yours? Book a call.
Walk through your Frappe Helpdesk 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 Frappe Helpdesk
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.