Helpdesk migration

Migrate from osTicket to Salesforce Service Cloud

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 logo

osTicket

Source

Salesforce Service Cloud

Destination

Salesforce Service Cloud logo

Compatibility

42%

5 of 12

objects map 1:1 between osTicket and Salesforce Service Cloud.

Complexity

CModerate

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

osTicket logo

osTicket

What's pushing teams away

  • No built-in live chat or real-time messaging channel, forcing teams to cobble together third-party chat integrations or manage chat separately from the ticketing workflow.
  • Limited scalability for high-volume environments — teams handling hundreds of tickets per day report performance degradation and lacking advanced routing or queue management.
  • Reporting and analytics are basic at best; there is no native dashboard with trend visualisation, SLA compliance charts, or agent performance metrics without third-party plugins.
  • Community-only support on the free tier means no guaranteed response time, and the commercial support package is priced as a separate annual subscription.
  • Teams outgrow the feature set as they scale — absence of built-in asset management, contract tracking, or advanced automation pushes organisations toward purpose-built ITSM platforms.

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

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

maps to

Salesforce Service Cloud

Case

1:1
Fully supported

osTicket 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)

maps to

Salesforce Service Cloud

CaseComment

1:many
Fully supported

osTicket 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)

maps to

Salesforce Service Cloud

Contact

1:1
Fully supported

osTicket 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)

maps to

Salesforce Service Cloud

Account

1:1
Fully supported

osTicket 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)

maps to

Salesforce Service Cloud

User

1:1
Fully supported

osTicket 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

maps to

Salesforce Service Cloud

Queue

lossy
Fully supported

osTicket 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)

maps to

Salesforce Service Cloud

Custom Fields on Case

lossy
Fully supported

osTicket 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)

maps to

Salesforce Service Cloud

Custom Fields on Contact

lossy
Fully supported

osTicket 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

maps to

Salesforce Service Cloud

Entitlement + Milestone

lossy
Fully supported

osTicket 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

maps to

Salesforce Service Cloud

Case Record Type or custom picklist

lossy
Fully supported

osTicket 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

maps to

Salesforce Service Cloud

ContentDocument + ContentVersion + ContentDocumentLink

1:1
Fully supported

osTicket 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

maps to

Salesforce Service Cloud

Case Status

lossy
Fully supported

osTicket 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.

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.

osTicket logo

osTicket gotchas

High

API supports ticket creation only

Medium

Ticket threads are a single rich-text blob

Medium

Custom fields require optional setting for API

High

IP-restricted API keys block automated migration tooling

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

  • osTicket API supports ticket creation only

    The osTicket HTTP API is read-write exclusively for creating new tickets — there is no endpoint to list tickets, export records, or update existing tickets. This makes the API unusable for bulk data extraction. We connect directly to the osTicket MySQL database using a read-only database account and the documented ERD schema to extract all records. If direct database access is not available due to network restrictions, we fall back to CSV export tooling with a note that Attachments and thread history require separate handling through the file system. During scoping, we verify that the MySQL port (default 3306) is reachable from our migration tooling environment and that the customer can provision a read-only database user with SELECT privileges on the core tables.

  • IP-restricted API keys block automated extraction

    osTicket API keys are bound to a specific source IP address. Even though we primarily use direct MySQL access, IP whitelisting may also apply to any API calls the migration tooling makes. We handle this by scoping the migration tool's egress IP during onboarding and asking the customer to add that IP to the allowed list in osTicket's admin panel before migration begins. If the customer cannot whitelist IPs (e.g., self-hosted on a strict network segment), we fall back to read-only MySQL access as the sole extraction path, which has no IP restrictions beyond standard firewall rules.

  • Ticket thread blob requires HTML-aware splitting

    osTicket stores each ticket's full conversation history as one merged HTML blob. Public customer responses, agent replies, and internal notes are differentiated by CSS classes and HTML structure within that blob. We parse the blob using version-sensitive splitting logic specific to the osTicket release in use. Malformed HTML, manual database edits, or custom CSS overrides in the customer's osTicket instance can cause segments to be misclassified (internal note shown as public reply) or dropped. We run thread-splitting validation against a random sample of 10-20 tickets before committing to the full migration and flag any tickets where splitting confidence is low.

  • Salesforce validation rules can reject Case imports silently

    Salesforce Service Cloud orgs commonly enforce validation rules on Case — required field formats, conditional requirements, picklist value whitelists — that block records during data load. We coordinate with the customer's Salesforce admin to temporarily disable or extend validation rules with a migration-context bypass during the import phase. After migration completes, the admin re-enables or updates the validation rules. Skipping this step typically results in 5-25 percent record rejection on the first import attempt, visible as failed batch records in the Salesforce Bulk API job results.

  • Required custom fields silently block ticket imports

    In osTicket, custom fields marked as required on user-facing ticket forms will cause silent failures during any import that does not populate them. The osTicket API returns a generic error without specifying which field is the blocker. During migration scoping, we audit all user-facing ticket forms for required custom fields, temporarily set them to optional in the database schema for the migration window, and restore the required flag afterward. This is a manual schema change we coordinate with the customer.

Migration approach

Six steps for a successful osTicket to Salesforce Service Cloud data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

osTicket logo

osTicket

Source

Strengths

  • Zero licensing cost for the core open-source edition with optional paid support.
  • Full data residency control on self-hosted infrastructure with no vendor data handling.
  • PHP/MySQL stack runs on commodity hosting with minimal hardware requirements.
  • Configurable ticket forms, SLA plans, and department routing without plugin dependencies.
  • Active open-source community provides plugins, themes, and third-party integrations.

Weaknesses

  • No live chat, real-time messaging, or unified communications channel built in.
  • API surface is narrow — only ticket creation is writable; there is no bulk export or import endpoint.
  • Reporting is minimal; no native trend analysis, SLA dashboards, or agent performance metrics.
  • Limited scalability for large ticket volumes or high agent counts without performance tuning.
  • Upgrade and migration tooling relies on file-based patching with a manual sequence — not designed for automated CI/CD pipelines.
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 osTicket 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

    osTicket: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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 consultation

Most migrations land between two and three weeks for straightforward scopes of fewer than 15,000 tickets, fewer than 10 custom fields, and clean thread HTML. Migrations with high thread complexity (tickets with 20+ thread entries), more than 15 custom fields, large attachment volumes, or a delta-migration pass for records modified during the migration window move to five to eight weeks because of the thread-splitting validation step, ContentDocument batch loading, and multi-pass reconciliation.

Adjacent paths

Related migrations to explore

Ready when you are

Move from osTicket.
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