Helpdesk migration
Field-level mapping, validation, and rollback between Helpdesk 365 and Freshdesk. We move data and schema; workflows are rebuilt natively in Freshdesk.
Helpdesk 365
Source
Freshdesk
Destination
Compatibility
8 of 9
objects map 1:1 between Helpdesk 365 and Freshdesk.
Complexity
CModerate
Timeline
2-4 weeks
Overview
Moving from Helpdesk 365 to Freshdesk is a transition from a SharePoint-native helpdesk embedded in Microsoft 365 to a purpose-built customer support platform from Freshworks. Helpdesk 365 stores tickets, contacts, and companies in SharePoint lists with a five-custom-field cap on Standard tier, while Freshdesk offers a full relational schema from its Growth plan at $15 per agent per month. We export Helpdesk 365 records through its REST API with chunked pagination to handle SharePoint list throttling, then import into Freshdesk via its CSV import flow or REST API depending on volume. Key migration sequencing constraints include Freshdesk's requirement that at least ten tickets exist before contacts can be imported, and the need to pre-create custom fields in Freshdesk before mapping data to them. We do not migrate automation rules, SLA policies, or routing logic as these are configuration rather than data in both platforms; we deliver a written inventory of these for the customer to rebuild in Freshdesk.
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 Helpdesk 365 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.
Helpdesk 365
Ticket
Freshdesk
Ticket
1:1Helpdesk 365 Ticket records map to Freshdesk Ticket with status, priority, assignee, requester, created date, updated date, and thread history preserved. We extract the ticket thread (public and internal notes) as conversation records, preserving the original timestamp and author agent. The ticket ID from Helpdesk 365 is stored in a custom field h365_ticket_id__c for audit traceability. Freshdesk's ticket status model (Open, Pending, Resolved, Closed) is mapped from Helpdesk 365's equivalent status values during scoping.
Helpdesk 365
Contact
Freshdesk
Customer (Contact)
1:1Helpdesk 365 Contacts (requesters) map to Freshdesk Customers. Email address is the primary dedupe key. We pull name, email, phone, organization link, language, and timezone from the Helpdesk 365 contact record. Freshdesk requires at least ten tickets in the account before a contact import will succeed; if the Freshdesk account is new, we seed a minimum of ten ticket records before running the contact import phase. Any contact without an email address is flagged during scoping for the customer to resolve before migration.
Helpdesk 365
Company
Freshdesk
Organization
1:1Helpdesk 365 Company records map to Freshdesk Organizations. The company name becomes the Organization name, and domain information maps to Freshdesk's domain field used for automatic contact-to-organization association. Organization is created before the contact import phase so that the organization lookup is satisfied at the moment of contact insert. If the company name in Helpdesk 365 contains special characters, we sanitize it to Freshdesk's naming constraints during the transform step.
Helpdesk 365
Agent
Freshdesk
Agent
1:1Helpdesk 365 Agent profiles (name, email, role, team membership) map to Freshdesk Agent accounts. We resolve agents by email match against the Freshdesk destination account's agent list. If a Helpdesk 365 agent has no corresponding Freshdesk agent, we create a placeholder agent record and flag it in the reconciliation report for the customer's admin to assign proper Freshdesk permissions before go-live. Group membership in Helpdesk 365 maps to Freshdesk Groups for routing purposes.
Helpdesk 365
Custom Field
Freshdesk
Custom Field
lossyHelpdesk 365 custom fields on tickets are pre-created in Freshdesk as identically named fields before any data import begins. Freshdesk supports String, Boolean, Number, Date, and Dropdown custom field types; we map Helpdesk 365 field types to the equivalent Freshdesk type during scoping. Helpdesk 365 Standard tier's five-field cap means most source schemas are compatible with Freshdesk Growth's custom field allowance, but we audit the source schema during discovery and flag any fields that require Freshdesk Plan upgrades for the customer before migration begins.
Helpdesk 365
Tag
Freshdesk
Tag
1:1Helpdesk 365 tags are extracted from ticket records during ticket export (no standalone tag export endpoint is documented for Helpdesk 365). We preserve the full tag list on each ticket and create the corresponding tag in Freshdesk at migration time. Freshdesk treats tags as first-class objects; tags with identical names across multiple tickets consolidate into a single Freshdesk tag record.
Helpdesk 365
Knowledge Base Article
Freshdesk
Solution Article
1:1Helpdesk 365 Knowledge Base articles are extracted from the SharePoint-backed KB with title, HTML body, category, and publish status. Freshdesk's Solutions API (Growth and above) accepts article title, description (HTML), section_id, and status. We flag that knowledge base migration in Freshdesk can produce duplicates (community reports of 4x article multiplication) when the same migration runs multiple times; we perform a single migration run with a pre-clear of any existing Freshdesk KB articles to prevent duplication.
Helpdesk 365
Attachment
Freshdesk
Attachment
1:1Helpdesk 365 attachments are stored as URLs pointing to SharePoint document libraries. We extract the full attachment URL from the ticket record and preserve it as a Freshdesk attachment record pointing to the original SharePoint URL. If the customer requests file migration rather than URL preservation, we download files from the SharePoint URL and upload them to Freshdesk's attachment storage; this requires the customer's SharePoint credentials and extends the migration timeline depending on file count and size. We flag any attachment types (exe, bat, dll) that Freshdesk blocks from upload so the customer can decide how to handle them before migration.
Helpdesk 365
Ticket Conversation
Freshdesk
Ticket Conversation (Note)
1:1Helpdesk 365 ticket thread entries (customer replies and agent responses) map to Freshdesk Conversation records on the corresponding ticket. Each conversation entry is tagged as either Incoming (customer) or Outgoing (agent) to match Freshdesk's conversation direction model. Internal notes in Helpdesk 365 map to Freshdesk's private notes with the is_private flag set. The original timestamp, author agent, and content body (HTML or plain text) are preserved. Thread ordering is maintained by sorting on the original Helpdesk 365 timestamp before insert.
| Helpdesk 365 | Freshdesk | Compatibility | |
|---|---|---|---|
| Ticket | Ticket1:1 | Fully supported | |
| Contact | Customer (Contact)1:1 | Fully supported | |
| Company | Organization1:1 | Fully supported | |
| Agent | Agent1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Tag | Tag1:1 | Fully supported | |
| Knowledge Base Article | Solution Article1:1 | Fully supported | |
| Attachment | Attachment1:1 | Fully supported | |
| Ticket Conversation | Ticket Conversation (Note)1: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.
Helpdesk 365 gotchas
Standard plan caps custom fields at five
API key tied to admin user account
No documented bulk export endpoint
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 plan verification
We audit the Helpdesk 365 source environment: ticket volume, contact count, company count, agent roster, active custom fields, knowledge base article count, and attachment URL inventory. We verify the customer's Freshdesk plan tier (Sprout, Blossom, Growth, Pro, Enterprise) to confirm API availability and custom field limits. We also inspect the Helpdesk 365 Standard vs Enterprise license to confirm whether the five-custom-field cap applies, and we document the SharePoint document library URL structure for attachment feasibility assessment.
Custom field pre-creation in Freshdesk
We pre-create every Helpdesk 365 custom field in Freshdesk before any data import. Each field is created with the correct type (String, Number, Boolean, Date, Dropdown) and added to the relevant Freshdesk ticket, contact, or organization field section. If the customer is on Sprout (no API access), we provide a field creation checklist that the customer's Freshdesk admin completes manually before the migration window. If the source schema exceeds Freshdesk's field limits at the customer's plan tier, we flag the overage with options: upgrade the plan or archive inactive custom fields from the source.
Schema mapping and transform design
We design the field-level mapping between Helpdesk 365 and Freshdesk: ticket status values map to Freshdesk ticket status, priority levels map to Freshdesk priority, and any SLA-related fields are evaluated for Freshdesk SLA object compatibility. We design the thread-to-conversation transform so that internal notes from Helpdesk 365 land as private notes in Freshdesk and public replies as standard conversations. The Helpdesk 365 ticket ID is stored in a custom field h365_ticket_id__c on every migrated ticket for audit and reconciliation. Date fields are normalized to YYYY-MM-DD in the transform layer.
Sandbox migration and contact import prerequisite
We run a full migration into a fresh Freshdesk account (or Sandbox if the customer uses Freshdesk Enterprise) using a representative sample of records. As part of setup, we seed ten placeholder ticket records to satisfy Freshdesk's contact import prerequisite. The customer reviews the migrated tickets, contacts, organizations, and agent assignments, confirming that field mapping and conversation threading meet expectations. Any mapping corrections are applied to the transform design before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: placeholder tickets (to unblock contacts), Organizations (from Helpdesk 365 Companies), Customers (from Helpdesk 365 Contacts with OrganizationId resolved), Agents (with group membership mapped to Freshdesk Groups), Tickets (with CustomerId and AgentId resolved), Conversations (linked to parent ticket), Tags (consolidated), Custom Field values, and Knowledge Base Articles (with category mapping). Each phase emits a row-count reconciliation report before the next phase begins. If Freshdesk Sprout is in use, we switch to CSV-based import at this step.
Cutover, validation, and configuration handoff
We freeze Helpdesk 365 writes during cutover, run a delta migration of any records modified during the migration window, then enable Freshdesk as the system of record. We deliver a written inventory of Helpdesk 365 automation rules, SLA policies, and routing configurations for the customer's Freshdesk admin to rebuild as Freshdesk automations, SLA policies, and group assignments. We support a 72-hour post-migration window for reconciliation issues. We do not rebuild Helpdesk 365 automation logic in Freshdesk as that is outside the standard migration scope.
Platform deep dives
Helpdesk 365
Source
Strengths
Weaknesses
Freshdesk
Destination
Strengths
Weaknesses
Complexity grading
Moderate Helpdesk migration. 3 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Helpdesk 365 and Freshdesk.
Object compatibility
3 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
Helpdesk 365: Not publicly documented; Microsoft Graph throttling applies as the backend transport.
Data volume sensitivity
Helpdesk 365 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 Helpdesk 365 to Freshdesk migration scoping. Not seeing yours? Book a call.
Walk through your Helpdesk 365 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 Helpdesk 365
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.