Helpdesk migration

Migrate from Frappe Helpdesk to Salesforce Service Cloud

Field-level mapping, validation, and rollback between Frappe Helpdesk and Salesforce Service Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Service Cloud.

Frappe Helpdesk logo

Frappe Helpdesk

Source

Salesforce Service Cloud

Destination

Salesforce Service Cloud logo

Compatibility

67%

8 of 12

objects map 1:1 between Frappe Helpdesk and Salesforce Service Cloud.

Complexity

CModerate

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Frappe Helpdesk and Salesforce Service Cloud operate on fundamentally different data architectures. Frappe Helpdesk stores tickets, customers, and conversations as DocType records in a PostgreSQL database tied to the ERPNext ecosystem, while Salesforce Service Cloud uses a relational CRM model centered on Case, Contact, Account, and Entitlement objects with role-based access controls. We extract at the DocType level, transform Frappe field names and picklist values to typed Salesforce fields, resolve Agent-to-User lookups by email, and route conversation threads to EmailMessage records attached to Cases. HD Ticket Template custom fields require explicit mapping to Salesforce custom fields because they do not auto-render without template configuration. SLA policies map to Salesforce Entitlement Processes with milestone triggers. Assignment Rules, Customer Portal Settings, and Workflow definitions are configuration records; we deliver a written inventory of these for the customer's admin to rebuild in Salesforce Flow or Omni-Channel Routing. We do not migrate Workflows or automations as code.

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

Frappe Helpdesk logo

Frappe Helpdesk

What's pushing teams away

  • The agent count and ticket volume that Frappe Helpdesk was designed for caps out around mid-market; large enterprise teams hit scaling limits in self-hosted deployments.
  • Custom field rendering requires manual template configuration in HD Ticket Template, which frustrates non-technical admins who expect standard form behavior.
  • Rate limiting on the Frappe Framework is based on cumulative request time rather than request count, making API-heavy automations unpredictable without load testing.
  • Workflow resets after minor version upgrades, forcing admins to reconfigure assignment rules and triggers after routine system maintenance.
  • Limited third-party integrations outside the Frappe ecosystem means teams using Salesforce or Zendesk on other functions end up maintaining parallel tooling.

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 Frappe Helpdesk objects map to Salesforce Service Cloud

Each row shows how a Frappe Helpdesk 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.

Frappe Helpdesk

HD Ticket

maps to

Salesforce Service Cloud

Case

1:1
Fully supported

HD Ticket maps directly to Salesforce Case. We extract ticket status, priority, type, creation and modification timestamps, resolution description, and SLA deadline fields from the Frappe database. The destination Status field uses Salesforce's standard Open, Pending, Waiting on Customer, Escalated, and Closed values mapped from Frappe's Open, On Hold, Resolved, Closed. HD Ticket priority (Low, Medium, High, Urgent) maps to Case Priority with a custom field hd_original_priority__c preserving the Frappe label. Resolution date and SLA breach timestamps migrate to Case milestones through the Entitlement Process linkage.

Frappe Helpdesk

HD Customer

maps to

Salesforce Service Cloud

Contact

1:1
Fully supported

HD Customer records map to Salesforce Contact. Name, email, phone, and organization link extract cleanly. The HD Customer's portal user status maps to a custom HasOptedOutOfEmail or Contact Active field depending on whether the portal was active. Organization link resolves to a Salesforce Account by name match; if no matching Account exists, we create one from the organization name before Contact insert. Custom fields on HD Customer require explicit field-level mapping to Salesforce custom Contact fields during scoping.

Frappe Helpdesk

Conversations / Communication

maps to

Salesforce Service Cloud

EmailMessage + Case Thread ID

1:1
Fully supported

Every HD Ticket's Communication records migrate as Salesforce EmailMessage records linked to the parent Case. We preserve chronological order by setting EmailMessage.MessageDate to the original Frappe timestamp. Agent replies and customer messages are distinguished by the author field. Threading is maintained by setting the Case's Thread_ID__c field to the Frappe ticket name so email threading resumes correctly in Salesforce if the customer's email-to-case gateway is configured.

Frappe Helpdesk

SLA Policy

maps to

Salesforce Service Cloud

Entitlement Process + Milestone

lossy
Fully supported

Frappe SLA Policies define response and resolution time windows by priority or ticket type. We map these to Salesforce Entitlement Processes with First Response Target and Resolution Target milestones. Each HD Ticket's SLA deadline migrates as an EntitlementId lookup on Case. If the destination Salesforce org does not have Entitlement Management enabled, SLA deadlines migrate as custom Case fields hd_first_response_due__c and hd_resolution_due__c instead.

Frappe Helpdesk

Team

maps to

Salesforce Service Cloud

Omni-Channel Queue

1:1
Fully supported

Frappe Helpdesk Teams define agent groupings and inbox routing scope. We map team names to Salesforce Omni-Channel Queues with corresponding routing configurations. Team-level SLA assignments attach to the Entitlement Process. If the destination uses a simpler routing model without Omni-Channel, Teams map to Public Groups and assignment rules handle routing by criteria-based Case Assignment.

Frappe Helpdesk

Agent

maps to

Salesforce Service Cloud

User

1:1
Fully supported

Frappe Helpdesk Agent records (user accounts with agent roles and permissions) map to Salesforce User records by email match. We preserve the agent's Frappe role name in a custom field hd_source_role__c. Agent workload history and assignment counts are flaggable as additional custom fields on User if the customer wants post-migration reporting continuity. Any Frappe agent without a matching Salesforce User enters a reconciliation queue for the customer's admin to provision before Case migration begins.

Frappe Helpdesk

Assignment Rule

maps to

Salesforce Service Cloud

Case Assignment Rule or Flow

lossy
Fully supported

Frappe Assignment Rules automate ticket routing based on conditions (subject keywords, customer tier, ticket type). Complex rule logic with multiple conditions may not map directly to Salesforce criteria-based Case Assignment Rules, which support up to 25 criteria rows. We deliver a written inventory of every Frappe Assignment Rule with its conditions, priority order, and actions, mapped to the recommended Salesforce Case Assignment Rule entry or Flow alternative. The customer's admin implements the routing rules post-migration.

Frappe Helpdesk

Knowledge Base Article

maps to

Salesforce Service Cloud

Knowledge Article

1:1
Fully supported

KB Articles and category hierarchy migrate to Salesforce Knowledge with Article Type mapping to the customer's configured article type. Article content HTML migrates as the Salesforce article body. Category assignments map to Data Category Groups. Article view counts and feedback ratings are noted as non-transferable because Salesforce Knowledge does not store these as standard fields; they can be added as custom fields if the customer requires the metric.

Frappe Helpdesk

Canned Response

maps to

Salesforce Service Cloud

QuickText

1:1
Fully supported

Pre-written response templates migrate to Salesforce QuickText as subject and body text. Dynamic variable substitution syntax used in Frappe (such as ticket.customer_name or ticket.subject) is flagged during scoping because Salesforce QuickText uses merge field syntax ({{!Contact.FirstName}}) that differs from Frappe's template engine. We map the available variables and deliver a variable substitution guide for the customer's admin to update canned response templates post-migration.

Frappe Helpdesk

Tag

maps to

Salesforce Service Cloud

Topic or Multi-Select Picklist

lossy
Fully supported

Tags on HD Tickets are stored as Tag entries. We map tag names to Salesforce Topics with TopicAssignment records, or to a custom multi-select picklist field on Case depending on the customer's preference. Tag strategy is chosen during scoping. If the destination Salesforce org uses a tagging taxonomy different from Frappe's, we preserve the original Frappe tag names in a custom field hd_original_tags__c for reference.

Frappe Helpdesk

Attachment

maps to

Salesforce Service Cloud

ContentDocument (via FeedAttachment)

1:1
Fully supported

Ticket and Communication attachments in Frappe's file records migrate to Salesforce ContentDocument linked via FeedAttachment to the parent Case. Private files that require an authenticated Frappe session may be inaccessible during extraction; we flag inaccessible attachments during inventory and advise the customer to temporarily make files public or export them manually alongside the structured data export. Public file URLs re-download and re-upload without issue.

Frappe Helpdesk

Custom Field (HD Ticket / HD Customer)

maps to

Salesforce Service Cloud

Custom Field on Case / Contact

lossy
Fully supported

Custom fields on HD Ticket and HD Customer are extracted as key-value pairs and mapped to Salesforce custom fields (with __c suffix) on Case and Contact respectively. We pre-create the destination custom fields with matching types during schema design. Note that HD Ticket custom fields require HD Ticket Template configuration in Frappe to render in the agent view; during migration, custom field definitions are portable but the Template entry is not. We flag any missing template entries during validation and list them in the handoff document.

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.

Frappe Helpdesk logo

Frappe Helpdesk gotchas

Medium

HD Ticket custom fields require HD Ticket Template configuration

Medium

Workflow resets after Frappe version upgrades

High

Errors when Helpdesk is installed on existing ERPNext + HR sites

Low

Rate limiting is time-based, not request-count based

Low

Private file attachments require authentication to re-download

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

  • HD Ticket Template custom fields require explicit mapping

    Custom fields created on HD Ticket do not automatically appear in the agent form view in Frappe Helpdesk without an HD Ticket Template entry. This is a known Frappe Helpdesk configuration requirement. During migration, we extract custom field definitions from the Frappe Custom Field DocType, but the Template linkage is not portable. We flag every custom field that lacks a Template entry during discovery. In Salesforce, custom fields render immediately on the Case object once created; the migration team pre-creates all destination custom fields before import so there is no equivalent template-gap in Service Cloud. Post-import, the customer's admin adds the custom fields to Case Page Layouts.

  • Version upgrade can reset workflows and assignment rules

    Frappe Helpdesk workflows, assignment rules, and SLA triggers have been observed to reset to default states after routine Frappe version upgrades. GitHub Issue #3003 and community forum reports confirm this pattern. We export workflow and assignment rule definitions as separate configuration records during discovery, but these are configuration data that cannot be imported into Salesforce as-is. We deliver a written inventory of every Frappe workflow and Assignment Rule with conditions, actions, and recommended Salesforce Flow equivalent. The customer's admin rebuilds them post-migration. We advise against initiating a Frappe version upgrade during the migration window.

  • Private file attachments require session authentication to re-download

    Frappe stores some attachments as private files that require an authenticated session or API access token to access via URL. During migration, we cannot re-download private files without the Frappe site's session cookie or API token. We run an attachment inventory phase that attempts URL access for each file record and flags inaccessible attachments. The customer then either temporarily sets those files to public access in Frappe, exports them manually, or accepts that inaccessible files will not migrate. This is a pair-specific constraint that does not apply to all Frappe-to-Salesforce migrations, only when private file storage is in use.

  • Frappe telephony app migration error on bench update

    GitHub Issue #2592 documents a migration failure triggered by Frappe Helpdesk running bench update with the latest helpdesk version (v1.15.0). The patch add_telephony_app.py attempts to install the telephony app unconditionally, causing a ModuleNotFoundError if the telephony app is not already present. This can block data extraction if the Frappe instance encounters this error during the migration window. We assess the Frappe Helpdesk version and telephony app status during discovery. If the telephony dependency is present, we proceed normally. If not, we use a direct PostgreSQL database connection to extract data at the DocType level, bypassing the application-layer migration patch entirely.

Migration approach

Six steps for a successful Frappe Helpdesk to Salesforce Service Cloud data migration

  1. Discovery and source health assessment

    We audit the source Frappe Helpdesk instance across Frappe version, Helpdesk app version, HD Ticket record count, conversation thread volume, active SLA policies, Assignment Rules, canned response count, KB article count, and attachment inventory. We specifically assess whether GitHub Issue #3003 (site-configuration conflict on ERPNext + HR sites) or GitHub Issue #2592 (telephony app migration failure) applies to this instance. We extract custom field definitions from the Frappe Custom Field DocType, cross-reference them against HD Ticket Template entries, and flag gaps. We capture the site's PostgreSQL connection details or Frappe API credentials. The discovery output is a written migration scope document covering record counts per object, identified gotchas, and a recommendation on extraction method (API or direct database).

  2. Schema design and Salesforce Entitlement configuration

    We design the destination Salesforce schema. This includes creating all destination custom fields on Case and Contact, configuring Entitlement Processes for each Frappe SLA policy, setting up Omni-Channel Queues or Public Groups for each Frappe Team, defining Case Assignment Rules based on the Assignment Rule inventory, and selecting the appropriate Case Page Layouts per ticket type. If the destination org does not have Entitlement Management licensed, we design custom SLA deadline fields and milestone tracking alternatives. Schema is deployed to a Salesforce Sandbox first for validation. We coordinate with the customer's Salesforce admin to grant the migration user Modify All Data and API permissions, and we review existing validation rules and field-level security that could block import.

  3. Sandbox migration and reconciliation

    We run a full migration into a Salesforce Sandbox using representative data volume. The customer's Service Cloud admin reconciles record counts (Cases in, Contacts in, Accounts in, EmailMessages in), spot-checks 25-50 records against the Frappe source for field accuracy and conversation thread integrity, and validates SLA deadline mapping against the Entitlement Process. Any mapping corrections, missing custom fields, or Salesforce validation rule failures are resolved here before production migration begins.

  4. Owner and agent reconciliation

    We extract every distinct Frappe agent referenced on HD Tickets, Assignment Rules, and SLA policies and match by email against the destination Salesforce org's User table. Agents without a matching User enter a reconciliation queue. The customer's Salesforce admin provisions any missing Users (active or inactive depending on whether the original Frappe agent is still active). This step must complete before Case migration begins because Case.OwnerId references require a valid Salesforce User.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Accounts (from HD Customer organization link), Contacts (with AccountId resolved and HD Customer custom fields mapped), Entitlement Processes (SLA policy definitions), Omni-Channel Queues or Public Groups (Team mapping), Cases (with EntitlementId, OwnerId, and HD original priority preserved), EmailMessage records (conversation threads linked to Case by Thread_ID), QuickText (canned responses with variable substitution flagged), Knowledge Articles (KB articles with Data Category assignments), ContentDocument records (public attachments via FeedAttachment), and Topics (tag mapping). Each phase emits a row-count reconciliation report before the next phase begins. Private file attachments that failed inventory access are logged with a resolution recommendation.

  6. Cutover, validation, and configuration handoff

    We freeze writes to the Frappe Helpdesk source during cutover, run a final delta migration of any records modified during the migration window, then switch the customer to Salesforce Service Cloud as the system of record. We deliver the Assignment Rule inventory, SLA-to-Entitlement mapping, Workflow reset checklist, canned response variable substitution guide, and HD Ticket Template gap report. We support a one-week hypercare window where we resolve any record reconciliation issues. We do not rebuild Frappe workflows, Assignment Rules, or portal configuration as Salesforce Flow or Omni-Channel Routing inside the migration scope; those are separate engagements or internal admin tasks.

Platform deep dives

Context on both ends of the pair

Frappe Helpdesk logo

Frappe Helpdesk

Source

Strengths

  • Open-source with AGPL-3.0 license, no per-agent or per-ticket billing
  • Deep ERPNext integration connecting support tickets to financial transactions
  • Full SLA configuration with response and resolution deadline tracking
  • Customizable agent portal and customer portal with white-label branding
  • Built-in knowledge base, canned responses, and customer rating collection

Weaknesses

  • Smaller community and plugin ecosystem compared to Zendesk or Freshdesk
  • Self-hosted deployments require server administration and backup management
  • API documentation is sparse; integrations often require custom Frappe scripting
  • Version upgrade path can break custom apps and custom field configurations
  • Limited native AI or advanced automation capabilities compared to newer SaaS competitors
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 Frappe Helpdesk 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

    Frappe Helpdesk: Fixed-window rate limiting based on cumulative request time; no public per-endpoint limit documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Frappe Helpdesk 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 Frappe Helpdesk to Salesforce Service Cloud data migrations

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

Can't find your answer?

Walk through your Frappe Helpdesk 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 15,000 tickets, no custom objects, and a single team structure. Migrations with active SLA policies, canned response libraries, multi-team routing configurations, large attachment volumes (over 10 GB), or a Frappe site affected by GitHub Issue #3003 or #2592 move to seven to twelve weeks because of Entitlement Process design, Omni-Channel Queue configuration, and direct database extraction complexity.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Frappe Helpdesk.
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