Helpdesk migration
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
Source
Salesforce Service Cloud
Destination
Compatibility
8 of 12
objects map 1:1 between Frappe Helpdesk and Salesforce Service Cloud.
Complexity
CModerate
Timeline
3-5 weeks
Overview
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.
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
Frappe Helpdesk platform overview
Scorecard, SWOT, gotchas, and pricing for Frappe Helpdesk.
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 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
Salesforce Service Cloud
Case
1:1HD 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
Salesforce Service Cloud
Contact
1:1HD 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
Salesforce Service Cloud
EmailMessage + Case Thread ID
1:1Every 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
Salesforce Service Cloud
Entitlement Process + Milestone
lossyFrappe 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
Salesforce Service Cloud
Omni-Channel Queue
1:1Frappe 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
Salesforce Service Cloud
User
1:1Frappe 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
Salesforce Service Cloud
Case Assignment Rule or Flow
lossyFrappe 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
Salesforce Service Cloud
Knowledge Article
1:1KB 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
Salesforce Service Cloud
QuickText
1:1Pre-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
Salesforce Service Cloud
Topic or Multi-Select Picklist
lossyTags 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
Salesforce Service Cloud
ContentDocument (via FeedAttachment)
1:1Ticket 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)
Salesforce Service Cloud
Custom Field on Case / Contact
lossyCustom 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.
| Frappe Helpdesk | Salesforce Service Cloud | Compatibility | |
|---|---|---|---|
| HD Ticket | Case1:1 | Fully supported | |
| HD Customer | Contact1:1 | Fully supported | |
| Conversations / Communication | EmailMessage + Case Thread ID1:1 | Fully supported | |
| SLA Policy | Entitlement Process + Milestonelossy | Fully supported | |
| Team | Omni-Channel Queue1:1 | Fully supported | |
| Agent | User1:1 | Fully supported | |
| Assignment Rule | Case Assignment Rule or Flowlossy | Fully supported | |
| Knowledge Base Article | Knowledge Article1:1 | Fully supported | |
| Canned Response | QuickText1:1 | Fully supported | |
| Tag | Topic or Multi-Select Picklistlossy | Fully supported | |
| Attachment | ContentDocument (via FeedAttachment)1:1 | Fully supported | |
| Custom Field (HD Ticket / HD Customer) | Custom Field on Case / Contactlossy | 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
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 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).
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.
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.
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.
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.
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
Frappe Helpdesk
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 Frappe Helpdesk 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
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 Salesforce Service Cloud migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Frappe Helpdesk
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.