CRM migration
Field-level mapping, validation, and rollback between CRUMP CRM and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
CRUMP CRM
Source
Freshsales
Destination
Compatibility
7 of 9
objects map 1:1 between CRUMP CRM and Freshsales.
Complexity
BStandard
Timeline
2-3 weeks
Overview
CRUMP CRM is a verticalised layer on Microsoft Dynamics 365, so migration begins with an audit of the source org's Dynamics 365 licence tier to determine which entities and API endpoints are accessible. Freshsales uses a standard CRM object model (Leads, Contacts, Accounts, Deals, Tasks, Cases) with a CSV import wizard supporting up to 5 MB files and roughly 1,000 records per 5-10 minute batch. The migration path involves exporting from Dynamics 365 Web API, transforming the schema to match Freshsales field types, and loading through Freshsales REST API with chunking. CRUMP CRM's bundled Project Management and Invoicing modules map selectively—Projects migrate as Deals with a custom project flag, and Invoice headers migrate as line items on the linked Deal. Workflows, automations, and the bundled chat module do not migrate; we deliver a written inventory of these for the customer's admin to rebuild in Freshsales Workflows from the Garden plan upward.
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 CRUMP CRM object lands in Freshsales, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
CRUMP CRM
Contact
Freshsales
Lead or Contact (split required)
1:manyCRUMP CRM Contacts are pulled from Dynamics 365 Contact entity via the web API. Freshsales distinguishes Leads (unqualified prospects) from Contacts (qualified). We evaluate the contact's statuscode, accountid, and any custom lifecycle or qualification fields to determine the split at migration time. Contacts with an associated Account and a closed or active business relationship become Freshsales Contacts; contacts without an Account or flagged as early-stage prospects become Leads. The original Dynamics 365 contact statuscode is preserved in a custom field dynamics_original_status__c for audit.
CRUMP CRM
Account
Freshsales
Account
1:1Dynamics 365 Account records map directly to Freshsales Account. The account name, website, industry, phone, address fields migrate 1:1. Parent-account hierarchy is preserved via the Freshsales Account parent_id field. Accounts must import before Contacts so that AccountId lookups resolve at Contact insert time.
CRUMP CRM
Deal
Freshsales
Deal
1:1Dynamics 365 Opportunity records (CRUMP CRM Deals) map to Freshsales Deal. The opportunitystage maps to Freshsales deal_stage_id, and pipeline assignment maps to Freshsales pipeline_id. We enumerate the source pipeline and stage values during audit and create matching Freshsales pipelines and stages before migration so that stage probabilities and names align. Close date, amount, probability, and owner migrate directly.
CRUMP CRM
Project
Freshsales
Deal with custom project flag
1:1Projects live in the Dynamics 365 Project Management module—a distinct entity from CRM Opportunities. We export project records including project name, status, start and end dates, and assigned team members. In Freshsales, each project becomes a Deal with a custom field project_flag__c set to true and project_type__c carrying the original project status. Task-level detail below the project header is not migrated; we document the project task structure in a written handoff so the customer's admin can recreate it in a project management tool.
CRUMP CRM
Ticket (Case)
Freshsales
Case
1:1Helpdesk tickets export from Dynamics 365 as Cases with status, priority, title, description, and linked contact. We map ticket priority (low, normal, high, urgent) to Freshsales case_priority values, and ticket status to Freshsales case_status. Custom fields on tickets are enumerated during the audit phase and mapped to Freshsales custom case fields created before the import pass.
CRUMP CRM
Invoice
Freshsales
Deal Line Items
lossyCRUMP CRM invoicing module exports invoice records with line items, totals, and payment status. Since Freshsales does not have a native invoicing object, we map invoice header data to the parent Deal as Deal Product entries, with invoice total recorded in a custom field original_invoice_total__c. The relationship to the originating Project or Deal is reconstructed from the Dynamics 365 export using the invoicing entity's regarding_objectid field.
CRUMP CRM
Task
Freshsales
Task
1:1Dynamics 365 tasks from the CRM, project, and helpdesk modules are deduplicated by activityid before export. Each task's regarding_objectid determines whether it links to a Contact, Account, Deal, or Case in Freshsales. Task status, priority, subject, description, due date, and owner migrate. Tasks are imported after the parent record (Contact, Account, Deal) exists in Freshsales to satisfy the lookup dependency.
CRUMP CRM
Custom Object
Freshsales
Custom Module
1:1Custom entities created on the Dynamics 365 instance are enumerated during the audit phase. Each custom entity's schema, field types, and relationships are documented individually since no two Dynamics 365 deployments share identical custom object structures. We create matching custom modules in Freshsales (Garden plan and above) before any data moves, including custom field creation and lookup relationship configuration. Custom objects that reference standard objects (Account, Contact, Deal) are imported last to ensure all parent records are present.
CRUMP CRM
User (Team Member)
Freshsales
User
1:1Dynamics 365 systemuser records are resolved by email against the Freshsales User table. We extract every distinct owner referenced on Contacts, Accounts, Deals, Tasks, and Cases and match by email. Users without a matching Freshsales User go to a reconciliation queue for the customer's admin to provision. Inactive source users are imported as inactive Freshsales Users to avoid orphaned ownership records.
| CRUMP CRM | Freshsales | Compatibility | |
|---|---|---|---|
| Contact | Lead or Contact (split required)1:many | Fully supported | |
| Account | Account1:1 | Fully supported | |
| Deal | Deal1:1 | Fully supported | |
| Project | Deal with custom project flag1:1 | Fully supported | |
| Ticket (Case) | Case1:1 | Fully supported | |
| Invoice | Deal Line Itemslossy | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Custom Object | Custom Module1:1 | Fully supported | |
| User (Team Member) | User1: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.
CRUMP CRM gotchas
Dynamics 365 licensing tier gates API access
No publicly documented API endpoint or developer portal
Per-user pricing creates predictable but escalating costs
Freshsales gotchas
Freddy AI is Pro-tier only despite heavy marketing
Post-migration emails and sequences are disabled
Bot session credits are a one-time 500-session allocation
Phone credits charged per minute with no cap
File storage limits scale with plan tier
Pair-specific challenges
Migration approach
Dynamics 365 licence audit and entity enumeration
We connect to the source CRUMP CRM Dynamics 365 instance using admin or service account credentials and probe the web API for all accessible entity sets. We test read access on Contact, Account, Opportunity, Incident (ticket), msdyn_project, msdyn_projecttask, and any custom entities. We document which entities are accessible, their estimated record counts, and any API-level restrictions imposed by the licence tier. This step produces the entity inventory that drives the full migration scope.
Freshsales destination planning and schema pre-creation
We review the customer's Freshsales plan tier (Free through Forest) and confirm which objects, custom modules, and workflow features are available. We create all required custom fields in Freshsales across Leads, Contacts, Accounts, Deals, Cases, and Tasks before any data import begins. We create Freshsales pipelines and stages matching the source Dynamics 365 opportunity stages and map probability values. This step validates that Freshsales schema can accommodate the source data model before the export begins.
Data export from Dynamics 365 in dependency order
We export from Dynamics 365 web API in record-dependency order: Accounts (first, as parent to Contacts), Contacts, Leads (derived from Contacts without accounts), Opportunities (Deals), Cases (Tickets), custom entities (last, with their parent references resolved), and finally Tasks and Project headers. Each entity export runs with a $filter on modifiedon to capture a delta at cutover. Attachments stored as Dynamics 365 notes or SharePoint document locations are excluded from API-layer migration; we document their locations in the written inventory for the customer to handle separately.
Schema transformation and Freshsales import
We transform the Dynamics 365 export into Freshsales CSV format, applying field type mapping (Dynamics optionset values to Freshsales picklist IDs, date fields to ISO 8601, currency fields to the configured Freshsales currency). We chunk exports exceeding 5 MB into multiple CSV files and process them sequentially through the Freshsales REST API, targeting roughly 1,000 records per 5-10 minute import batch. After each batch, we reconcile row counts and error logs before proceeding.
Activity history and task import with lookup resolution
Tasks, project headers, and ticket-linked activities are imported after their parent records exist in Freshsales to satisfy required lookups. We resolve Dynamics 365 owner IDs to Freshsales User IDs by email match, and Dynamics 365 regarding_objectid references to Freshsales Account, Contact, Deal, or Case IDs. Any unresolved lookups are logged to a reconciliation report for the customer's admin to resolve before the final cutover.
Cutover, delta sync, and workflow rebuild handoff
We freeze writes to the source CRUMP CRM Dynamics 365 instance during the final cutover window, run a delta migration for any records modified during the migration period, then designate Freshsales as the system of record. We deliver the written inventory of CRUMP CRM bundled modules (Projects, Invoices, Chat, Time Tracking, Assets) with recommended Freshsales equivalents and notes on what requires manual rebuild. Workflow and automation rebuilds are outside migration scope; the inventory document provides the reference for the customer's admin to rebuild in Freshsales Workflows (Garden plan and above).
Platform deep dives
CRUMP CRM
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across CRUMP CRM and Freshsales.
Object compatibility
2 of 8 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
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
CRUMP CRM: Not publicly documented; governed by Dynamics 365 licence tier.
Data volume sensitivity
CRUMP CRM 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 CRUMP CRM to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your CRUMP CRM to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave CRUMP CRM
Other ways to arrive at Freshsales
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.