Helpdesk migration
Field-level mapping, validation, and rollback between osTicket and Salesforce Service Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Service Cloud.
osTicket
Source
Salesforce Service Cloud
Destination
Compatibility
5 of 12
objects map 1:1 between osTicket and Salesforce Service Cloud.
Complexity
CModerate
Timeline
2-3 weeks
Overview
Moving from osTicket to Salesforce Service Cloud is a structural migration that handles three fundamental schema differences. First, osTicket's HTTP API supports ticket creation only — there is no bulk read endpoint — so we connect directly to the osTicket MySQL database using a read-only account, reading the full ERD across Tickets, Users, Organizations, Custom Fields, and Attachment records. Second, osTicket stores the entire conversation thread for each ticket as a single merged HTML blob, while Salesforce separates public responses and internal notes into distinct CaseComment records; we split each thread at migration time by parsing the osTicket thread HTML structure and mapping each segment to a typed CaseComment with the correct isPublished flag. Third, osTicket's SLA Plans, Help Topics, and Departments have no direct Salesforce equivalents, so we model them as custom picklist fields and Queue/Team assignments. We do not migrate osTicket workflows, SLA enforcement rules, or Help Topics as automations; we deliver a written inventory of these for your admin to configure post-migration.
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
osTicket platform overview
Scorecard, SWOT, gotchas, and pricing for osTicket.
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 osTicket 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.
osTicket
Ticket
Salesforce Service Cloud
Case
1:1osTicket Ticket maps 1:1 to Salesforce Case. We resolve osTicket ticket number to Case CaseNumber, ticket status (Open, Closed, Archived) to Case Status, priority (Low, Medium, High, Emergency) to Case Priority, and created datestamp to Case CreatedDate. The Help Topic assignment becomes a custom picklist field case_help_topic__c. SLA Plan assignment migrates to a custom field case_sla_plan__c and is also used to assign an Entitlements Process at migration time. Thread history (the merged HTML blob) is split and mapped separately to CaseComment records with isPublished set to true for customer-facing responses and false for internal notes.
osTicket
Thread (ticket conversation)
Salesforce Service Cloud
CaseComment
1:manyosTicket stores all ticket conversation history — customer replies, agent responses, and internal notes — as one merged HTML blob per ticket. We split each blob at migration time by parsing the rendered-thread structure and identifying the CSS class markers that osTicket applies to each segment type. Each segment maps to a separate Salesforce CaseComment record with the correct isPublished flag: true for messages visible to the customer, false for internal agent notes. Author name, author email, and segment timestamp are preserved in the CaseComment CommentBody and the system InsertedById. Thread-splitting logic is version-sensitive to the osTicket release and is validated against a sample of 10-20 tickets before the full migration runs.
osTicket
User (End User / Customer)
Salesforce Service Cloud
Contact
1:1osTicket Users (end customers who submit tickets) map to Salesforce Contact records. We use email address as the dedupe key. Name, email, phone, and address fields map directly. The osTicket Organisation linkage maps to a Contact.AccountId lookup once Account records have been created from osTicket Organisations. Users without an Organisation in osTicket (orphaned records) are flagged in the scoping report and imported as Contacts without an Account link, pending the customer's decision to link them post-migration.
osTicket
Organisation (Company)
Salesforce Service Cloud
Account
1:1osTicket Organisations map to Salesforce Account. Organisation name becomes Account Name, website becomes Account Website, and phone becomes Account Phone. osTicket allows Organisations to exist without linked Users, so we import Organisations first as parent records, then resolve Contact.AccountId during the Contact import phase. If two osTicket Organisations have identical names, we merge them into a single Account and flag the merge in the reconciliation report.
osTicket
Agent (Staff / Operator)
Salesforce Service Cloud
User
1:1osTicket Agents are mapped to Salesforce User records by email match. The migration cannot create new Salesforce Users — only an active Salesforce admin can provision user accounts — so we extract all agent email addresses, match them against the destination org's User table, and place any unmatched agents in a reconciliation queue. Agent department assignments are preserved as a custom field agent_department__c on the User record for queue routing configuration after migration.
osTicket
Department
Salesforce Service Cloud
Queue
lossyosTicket Departments control ticket routing and agent permissions. We map each Department to a Salesforce Queue with the Case object as the supported type. Queue membership is populated from the agent list assigned to each osTicket Department. Department SLA Plan associations are preserved as case_sla_plan__c field values and also used to set Entitlements Process on the Case. If osTicket has more than 10 departments, we recommend a naming convention consolidation with the customer during scoping.
osTicket
Custom Fields (ticket-level)
Salesforce Service Cloud
Custom Fields on Case
lossyosTicket custom fields of type text, boolean, date, list, and integer map to equivalent Salesforce custom fields on the Case object. We pre-create the Salesforce custom fields (with __c suffix and appropriate field types) in the destination org before any data loads. Picklist-type custom fields in osTicket become picklist or multi-select picklist fields in Salesforce with their values explicitly whitelisted. osTicket required custom fields on ticket forms are temporarily set to optional during migration to avoid blocking ticket imports, and we restore the required flag post-migration if requested.
osTicket
Custom Fields (user-level)
Salesforce Service Cloud
Custom Fields on Contact
lossyosTicket user-level custom fields (phone numbers, account numbers, preferences) map to Salesforce custom fields on the Contact object. We pre-create these during schema setup. The same required-field handling applies as for ticket custom fields.
osTicket
SLA Plan
Salesforce Service Cloud
Entitlement + Milestone
lossyosTicket SLA Plans define response and resolution hour windows tied to priority. We migrate SLA plan names and time windows as a custom picklist field case_sla_plan__c. For organisations on Service Cloud Professional or above, we also configure an Entitlements Process with Milestones matching each osTicket SLA plan's response and resolution time. This is a configuration step that the customer's Salesforce admin reviews before migration runs, as it requires Business Hours to be set in the destination org.
osTicket
Help Topic
Salesforce Service Cloud
Case Record Type or custom picklist
lossyosTicket Help Topics are ticket categories that drive routing and SLA assignment. They map to a custom picklist field case_help_topic__c on Case. If the customer uses multiple distinct routing or SLA configurations, we recommend creating Salesforce Case Record Types per Help Topic during scoping, each with its own Page Layout and Entitlements Process. The customer chooses the strategy during the discovery call.
osTicket
Attachment
Salesforce Service Cloud
ContentDocument + ContentVersion + ContentDocumentLink
1:1osTicket attachments are stored separately from the thread record and linked by attachment ID. We extract attachment records alongside ticket data, upload each file as a Salesforce ContentVersion (storing the binary and filename), then link it to the parent Case via a ContentDocumentLink record. Files attached to internal notes use ContentDocumentLink with linkType set to Link for visibility control. We handle file type validation against Salesforce's allowed ContentVersion types and flag any unsupported file types (e.g., .exe) in the reconciliation report.
osTicket
Ticket Status
Salesforce Service Cloud
Case Status
lossyosTicket ticket status values (Open, Pending, Resolved, Closed, Archived) map to Salesforce Case Status picklist values. We align the osTicket status lifecycle with the Salesforce case lifecycle during mapping. Any osTicket statuses that have no Salesforce equivalent (e.g., Archived) are mapped to the Closed status family and flagged in the mapping notes for the customer's admin to split further if needed.
| osTicket | Salesforce Service Cloud | Compatibility | |
|---|---|---|---|
| Ticket | Case1:1 | Fully supported | |
| Thread (ticket conversation) | CaseComment1:many | Fully supported | |
| User (End User / Customer) | Contact1:1 | Fully supported | |
| Organisation (Company) | Account1:1 | Fully supported | |
| Agent (Staff / Operator) | User1:1 | Fully supported | |
| Department | Queuelossy | Fully supported | |
| Custom Fields (ticket-level) | Custom Fields on Caselossy | Fully supported | |
| Custom Fields (user-level) | Custom Fields on Contactlossy | Fully supported | |
| SLA Plan | Entitlement + Milestonelossy | Fully supported | |
| Help Topic | Case Record Type or custom picklistlossy | Fully supported | |
| Attachment | ContentDocument + ContentVersion + ContentDocumentLink1:1 | Fully supported | |
| Ticket Status | Case Statuslossy | 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.
osTicket gotchas
API supports ticket creation only
Ticket threads are a single rich-text blob
Custom fields require optional setting for API
IP-restricted API keys block automated migration tooling
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 MySQL schema audit
We connect to the osTicket MySQL database using a read-only account and map the full ERD across the core tables (ost_ticket, ost_thread, ost_user, ost_organization, ost_department, ost_sla_plan, ost_help_topic, ost_form_entry, ost_attachment). We extract record counts for each table, audit custom field definitions and data types, identify which ticket forms have required custom fields, and assess the osTicket version to confirm the thread HTML structure. We also identify whether direct database access is IP-restricted and coordinate whitelist entries. The discovery output is a written data map and migration scope document that the customer signs off before extraction begins.
Salesforce schema design and pre-creation
We design the Salesforce Service Cloud schema to receive the osTicket data. This includes provisioning custom fields on Case (custom picklists for Help Topic, SLA Plan, Department), pre-creating custom fields on Contact for user-level custom fields, configuring Case Record Types per Help Topic (or a single Record Type if the customer opts for a picklist-only approach), setting up Queues for each osTicket Department with Case as the supported object, and configuring Entitlements and Milestones if the customer is on Professional tier or above. Schema is deployed into a Salesforce Sandbox first for validation before production migration.
Sandbox migration and reconciliation
We run a full migration into a Salesforce Sandbox (Full Copy or Partial Copy) using the production-like data volume extracted from the osTicket MySQL database. The customer's Service Cloud admin reconciles record counts (Cases in, Contacts in, Accounts in, CaseComments in, ContentDocuments in), spot-checks 20-30 random Cases against the osTicket source (status, priority, thread splitting accuracy, attachment presence), and validates that SLA Plan and Help Topic values map correctly. Any thread-splitting corrections, custom field type adjustments, or required-field flag changes are made before the production migration window opens.
Thread-splitting validation
Before running the production migration, we run the thread-splitting transformation against a statistically representative sample of 10-20 tickets (mixing open, closed, high-priority, and multi-participant tickets). Each split result is reviewed against the original osTicket thread render to confirm that internal notes are marked isPublished=false and public responses are marked isPublished=true. Tickets where the HTML structure is malformed or inconsistent are flagged with a low-confidence warning in the reconciliation report and reviewed by the customer before the full migration runs. This step is the highest-risk part of the osTicket migration and cannot be skipped for customers with compliance requirements around internal note visibility.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from osTicket Organisations), Contacts (with AccountId resolved, orphaned Contacts flagged), Cases (with Custom Fields, SLA Plan, Help Topic, and Department mapped), CaseComments (thread segments from the split logic, one record per thread segment), Attachments as ContentVersion and ContentDocumentLink, and Agent department assignments as custom User fields. Each phase emits a row-count reconciliation report before the next phase begins. We use the Salesforce Bulk API 2.0 with batch chunking for Case and CaseComment loads, and exponential backoff on API limit responses.
Cutover, validation, and automation handoff
We freeze new osTicket ticket creation during the cutover window, run a final delta migration of any records modified during the migration run, then enable Salesforce Service Cloud as the system of record. We deliver a written inventory of osTicket SLA Plans, Help Topics, and Department routing configurations for the customer's Salesforce admin to rebuild using Entitlements, Record Types, and Queues in the destination org. We provide a one-week hypercare window to resolve any data quality issues raised by the support team. We do not rebuild osTicket SLA enforcement rules as Salesforce Entitlements inside the migration scope; that is a separate configuration engagement or an internal admin task.
Platform deep dives
osTicket
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 osTicket 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
osTicket: Not publicly documented.
Data volume sensitivity
osTicket 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 osTicket to Salesforce Service Cloud migration scoping. Not seeing yours? Book a call.
Walk through your osTicket 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 osTicket
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.