Helpdesk migration
Field-level mapping, validation, and rollback between osTicket and Freshdesk. We move data and schema; workflows are rebuilt natively in Freshdesk.
osTicket
Source
Freshdesk
Destination
Compatibility
7 of 10
objects map 1:1 between osTicket and Freshdesk.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from osTicket to Freshdesk is a data-model translation that starts with a MySQL read rather than an API call. osTicket's HTTP API supports ticket creation only with no bulk export endpoint, so we connect directly to its documented MySQL schema to extract all records. Ticket threads are stored as a single merged rich-text blob per ticket in osTicket; we split each thread into discrete message entries with author, timestamp, and public-or-internal flag preserved in Freshdesk. Organizations are loosely linked to Users in osTicket, so we flag orphaned User records for explicit re-linking before migration. Freshdesk's Custom Objects API lets us map SLA plans and Help Topics from osTicket's first-class objects into Freshdesk's tag and custom-field structures. We do not migrate osTicket's file-based configuration, SLA plugin settings, or email routing rules as code — these require manual rebuild in Freshdesk's admin panel.
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 osTicket object lands in Freshdesk, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
osTicket
Ticket
Freshdesk
Ticket
1:1osTicket Tickets map directly to Freshdesk Tickets with Subject, status, priority, and requester_id preserved. osTicket's ticket ID is stored in a custom field src_ticket_id__c for audit traceability. SLA plan assignment from osTicket maps to Freshdesk SLA policy via a custom field if Freshdesk Omni is in scope; otherwise SLA times migrate as custom ticket fields. Department assignment maps to Freshdesk group_id lookup.
osTicket
Ticket Thread (Conversation)
Freshdesk
Conversation
1:manyosTicket stores the entire ticket conversation history as one merged Thread record per ticket — user replies, agent responses, and internal notes are not normalised at the storage layer. We split the thread into discrete Freshdesk Conversation records at migration time, preserving author type (user/agent), timestamp, message body, and the internal versus public flag for each segment. The splitting logic is derived from osTicket's rendered-thread HTML structure and is version-sensitive to osTicket release. This is the highest-risk transformation in the migration and is validated during the scoping demo.
osTicket
User (End User / Customer)
Freshdesk
Contact
1:1osTicket Users map to Freshdesk Contacts with name, email, phone, and organisation linkage preserved. Email is the primary dedupe key. Users with no Organisation in osTicket migrate as Contacts without a Company association; we flag these in a reconciliation report and offer explicit re-linking during mapping if the Organisation relationship is needed in Freshdesk.
osTicket
Agent (Staff / Operator)
Freshdesk
Agent
1:1osTicket Agents map to Freshdesk Agents. We resolve agents by email match against the destination Freshdesk subdomain. osTicket's per-department permission flags map to Freshdesk's agent role and group membership model. Any osTicket Agent without a matching Freshdesk Agent account goes to a provisioning queue before migration resumes.
osTicket
Organisation (Company)
Freshdesk
Company
1:1osTicket Organisations map to Freshdesk Companies with name, website, and phone preserved. The Organisation-User relationship migrates as the Freshdesk Contact-to-Company lookup. Users orphaned from any Organisation in osTicket are flagged separately since Freshdesk's Contact model benefits from a Company association for full profile completeness.
osTicket
Department
Freshdesk
Group
1:1osTicket Departments map to Freshdesk Groups. Department-level SLA plan associations migrate as Group-level defaults if Freshdesk Omni is in scope; otherwise SLA times are stored as custom fields on the ticket. Email routing addresses tied to Departments do not migrate — these require manual configuration in Freshdesk's inbox routing rules post-migration.
osTicket
Custom Fields
Freshdesk
Custom Fields
1:1osTicket Custom Fields (text, boolean, date, list, and dropdown types) map to Freshdesk custom ticket fields. Field type conversion is applied at migration time — osTicket list fields become Freshdesk dropdowns, boolean fields become checkboxes. Visibility rules (agent-only vs user-visible) map to Freshdesk's agent-only field property.
osTicket
SLA Plan
Freshdesk
SLA Policy (Omni plan) or Custom Fields
lossyosTicket SLA Plans define response and resolution deadlines tied to ticket priority and department. On Freshdesk Growth and Pro, SLA times migrate as custom ticket fields (first_response_due__c, resolution_due__c). On Freshdesk Omni, we create Freshdesk SLA Policies and link them to tickets via ticket_field_estimates. The customer chooses the tier during scoping.
osTicket
Help Topic
Freshdesk
Tag or Ticket Category
lossyosTicket Help Topics are first-class objects used for ticket categorisation and routing. Freshdesk models Help Topics as Tags (Growth/Pro) or Ticket Categories (Omni). We map Help Topic names to Freshdesk tags on the ticket during migration. The customer chooses the tag strategy during scoping based on their Freshdesk plan tier.
osTicket
Attachment
Freshdesk
Attachment
1:1osTicket stores attachments separately from the ticket thread record with a link by attachment ID. We extract attachment records alongside the ticket thread, download the file payload, and re-attach to the corresponding Freshdesk Conversation entry. Inline images embedded in thread HTML migrate as separate attachment records. Attachment files over 10 MB are noted for manual upload post-migration since Freshdesk API enforces a 10 MB per-file limit.
| osTicket | Freshdesk | Compatibility | |
|---|---|---|---|
| Ticket | Ticket1:1 | Fully supported | |
| Ticket Thread (Conversation) | Conversation1:many | Fully supported | |
| User (End User / Customer) | Contact1:1 | Fully supported | |
| Agent (Staff / Operator) | Agent1:1 | Fully supported | |
| Organisation (Company) | Company1:1 | Fully supported | |
| Department | Group1:1 | Fully supported | |
| Custom Fields | Custom Fields1:1 | Mapping required | |
| SLA Plan | SLA Policy (Omni plan) or Custom Fieldslossy | Fully supported | |
| Help Topic | Tag or Ticket Categorylossy | Fully supported | |
| Attachment | Attachment1: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.
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
Freshdesk gotchas
API access is blocked on the free plan
Per-minute rate limits are account-wide and endpoint-specific
Multi-channel source types do not map 1:1 to all destinations
Custom objects created in-product cannot be accessed by other apps
Contact import requires at least 10 existing tickets in the account
Pair-specific challenges
Migration approach
Discovery and connection scoping
We audit the source osTicket deployment: MySQL schema version, ticket volume, thread history length, attachment count and average size, custom field definitions, Organisation-User linkage health, and SLA plan configuration. We also confirm the destination Freshdesk subdomain, plan tier (Growth, Pro, or Omni), and whether Custom Objects or SLA Policies are in scope. If direct MySQL access is available, we map the osTicket ERD and validate read permissions. If MySQL is unavailable, we document the CSV export fallback with its known limitations for Attachments and thread splitting.
Thread splitting logic and demo migration
We run a scoping demo extracting a representative sample of 20-50 osTicket tickets including varied thread lengths, internal notes, and attachment references. The thread-splitting parser is applied and the output is reviewed by the customer's team against the source ticket. Any parsing edge cases (HTML entities, quoted replies, merged internal notes) are logged and the parser is adjusted before full migration begins. This demo typically runs within one week of project kickoff.
Schema preparation and field mapping
We map every osTicket object to its Freshdesk equivalent: Tickets to Tickets, Users to Contacts, Agents to Agents, Organisations to Companies, Departments to Groups, Custom Fields to custom ticket fields, and Help Topics to Tags or Ticket Categories. We also configure any required Freshdesk custom fields, SLA Policies (if Omni), or ticket categories before data import begins. The customer reviews and approves the mapping document before production migration.
Sandbox migration and reconciliation
We run a full migration into the customer's Freshdesk sandbox using production-equivalent data volume. The customer's admin reconciles record counts (Tickets in, Contacts in, Agents in, Conversations in), spot-checks 20-30 random tickets against the osTicket source, and reviews thread ordering on a sample of complex threads. Any mapping corrections happen here, not in production. Owner and Organisation reconciliation also completes at this stage.
Production migration in dependency order
We run production migration in record-dependency order: Contacts (with Company lookup resolved), Agents, Groups, SLA Policies if applicable, Tickets (with SLA field or policy link resolved), and Conversations (split from thread blobs and attached to ticket). Attachment downloads are chunked and rate-limited against the Freshdesk API. Each phase emits a row-count reconciliation report before the next phase begins. We freeze osTicket writes during the cutover window and run a final delta migration of any records modified during the window.
Cutover, validation, and admin rebuild handoff
We enable Freshdesk as the system of record, confirm delivery of all migrated tickets and conversation history, and deliver the written rebuild inventory covering email routing rules ( Departments map to Freshdesk inbox routing), SLA policy configuration, Help Topic-to-Tag assignments, and any automation (Freshdesk automations are documented but not migrated as code). We support a three-day hypercare window where we resolve reconciliation issues raised by the customer's support team. We do not rebuild osTicket's configuration, SLA plugin settings, or file-based customisations as part of the migration scope.
Platform deep dives
osTicket
Source
Strengths
Weaknesses
Freshdesk
Destination
Strengths
Weaknesses
Complexity grading
Standard Helpdesk migration. 2 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across osTicket and Freshdesk.
Object compatibility
2 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
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 Freshdesk migration scoping. Not seeing yours? Book a call.
Walk through your osTicket to Freshdesk 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 Freshdesk
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.