CRM migration
Field-level mapping, validation, and rollback between Microsoft Dynamics 365 Sales and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Microsoft Dynamics 365 Sales
Source
Freshsales
Destination
Compatibility
8 of 10
objects map 1:1 between Microsoft Dynamics 365 Sales and Freshsales.
Complexity
BStandard
Timeline
3-5 weeks
Try the reverse
Overview
Moving from Microsoft Dynamics 365 Sales to Freshsales is a platform simplification migration. Microsoft Dynamics 365 Sales sits on the Dataverse data layer with a complex entity model, tiered licensing (Professional at $65, Enterprise at $105, Premium by quote), and deep Microsoft 365 integration that creates lock-in beyond the CRM itself. Freshsales by Freshworks targets SMB-to-midmarket teams that want a configured CRM without the overhead of a Microsoft partner ecosystem. We extract records from Dynamics via the Dataverse Web API, resolve the entity relationships (Account-to-Contact, Opportunity-to-Account), handle owner lookups for inactive users, and import into Freshsales in dependency order. Dynamics Power Automate workflows, Dataverse plug-ins, and Dynamics-specific territory hierarchies do not migrate as code; we deliver a written inventory of every active workflow and automation for the customer to rebuild inside Freshsales or as a separate automation engagement. October 2024 pricing increases of $15 per user per month across all Dynamics tiers apply at renewal and are a recurring cost driver that makes the Freshsales switch financially measurable against ongoing Dynamics licensing.
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
Microsoft Dynamics 365 Sales platform overview
Scorecard, SWOT, gotchas, and pricing for Microsoft Dynamics 365 Sales .
Destination platform
Freshsales platform overview
Scorecard, SWOT, gotchas, and pricing for Freshsales.
Data migration guide
The complete Freshsales migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Source platform guide
Microsoft Dynamics 365 Sales migration guide
Understand the data you're exporting from Microsoft Dynamics 365 Sales before mapping it.
Destination checklist
Freshsales migration checklist
Pre- and post-cutover tasks for moving onto Freshsales.
Source checklist
Microsoft Dynamics 365 Sales migration checklist
Exit checklist for unwinding your Microsoft Dynamics 365 Sales setup cleanly.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Microsoft Dynamics 365 Sales 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.
Microsoft Dynamics 365 Sales
Account
Freshsales
Account
1:1Dynamics 365 Accounts map directly to Freshsales Accounts. We extract the account name, website, industry, address fields, and primary contact lookup. The Dataverse accountid becomes the external_id for reconciliation. Freshsales Accounts do not support a separate Company type distinction, so the account name and type (customer, prospect, partner) migrate as a single record with the type stored in the Type picklist field.
Microsoft Dynamics 365 Sales
Contact
Freshsales
Contact
1:1Dynamics Contacts map to Freshsales Contacts with the parent Account resolved via accountid-to-Freshsales Account lookup. Email address is the dedupe key. We preserve the full name split (firstname, lastname), phone numbers, job title, lifecycle stage if present, and owner. Contacts without an email are flagged during scoping and mapped to a placeholder or held for admin review before import.
Microsoft Dynamics 365 Sales
Lead
Freshsales
Lead
1:1Dynamics Leads map to Freshsales Leads. The leadscore, leadsource, and qualification status fields migrate to Freshsales's lead_score, lead_source, and status fields. We preserve the original created_on timestamp for historical attribution. If the destination Freshsales account uses automatic lead conversion, we configure lead-to-contact conversion mapping before migration so converted Leads land in the correct Freshsales Contact and Account.
Microsoft Dynamics 365 Sales
Opportunity
Freshsales
Deal
1:1Dynamics Opportunities map to Freshsales Deals. The opportunityname becomes deal_name, estimatedvalue maps to deal_value, closedate maps to close_date, and pipeline_stage maps to Freshsales deal stage via a stage-mapping table built during scoping. We preserve the parent Account lookup, probability percentage, and loss or win reason custom fields. Closed-won and closed-lost Deals migrate with their status preserved so historical pipeline reporting is intact.
Microsoft Dynamics 365 Sales
Quote, Order, Invoice
Freshsales
Deal Line Items + Notes
1:manyDynamics Quotes, Orders, and Invoices are a three-tier commercial document chain that Freshsales does not model natively as separate objects. We flatten these into the parent Freshsales Deal as line-item-style Notes with a structured format (product name, quantity, unit price, total) and attach a PDF summary if available. The customer chooses during scoping whether to preserve the full document hierarchy or consolidate to deal-level summaries for simplicity.
Microsoft Dynamics 365 Sales
Product
Freshsales
Product
1:1Dynamics Products migrate to Freshsales Products with the product name, SKU (hs_sku equivalent), and unit price preserved. Product bundles in Dynamics are decomposed to individual line items during migration. Freshsales Products are available to all Deals after import and can be reattached during deal management.
Microsoft Dynamics 365 Sales
Price List
Freshsales
Product Pricing
lossyDynamics Price Lists define quantity-based pricing tiers per product. We extract the price-list structure and create Freshsales Product pricing entries at the equivalent tier level. If the destination uses a single standard price per product, we collapse multi-tier price lists to a median or most-common tier during scoping. The customer reviews and approves the collapsing strategy before migration runs.
Microsoft Dynamics 365 Sales
Task, Email, PhoneCall, Appointment
Freshsales
Task, Event
1:1Dynamics Activity entities (Task, Email, PhoneCall, Appointment) map to Freshsales Task and Event records. We preserve the activity type, subject, description, date, and owner. Phone calls migrate as Tasks with a call_disposition custom field. Emails migrate as Tasks with a notes_body field containing the email body. Meetings and appointments migrate as Events with start_time, end_time, and location preserved. Regarding (polymorphic) lookup resolves to the target Freshsales Contact, Account, or Deal ID at migration time.
Microsoft Dynamics 365 Sales
Annotation
Freshsales
Note
1:1Dynamics Annotations (text notes) migrate to Freshsales Notes attached to the parent Contact, Account, Lead, or Deal. We extract the notetext body, created_on timestamp, and owner. File attachments stored as Dataverse annotations migrate as Freshsales attachments linked to the same parent record.
Microsoft Dynamics 365 Sales
User (Owner)
Freshsales
User
1:1Dynamics Users referenced as record owners on Accounts, Contacts, Opportunities, and Activities map to Freshsales Users by email address. We run a pre-migration owner audit: any Dynamics User without a matching Freshsales User email is flagged and mapped to a designated migration admin account or an inactive owner placeholder so no record is orphaned. Active users are provisioned in Freshsales before migration begins; inactive users are held in a reconciliation queue for the customer's admin.
| Microsoft Dynamics 365 Sales | Freshsales | Compatibility | |
|---|---|---|---|
| Account | Account1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Opportunity | Deal1:1 | Fully supported | |
| Quote, Order, Invoice | Deal Line Items + Notes1:many | Fully supported | |
| Product | Product1:1 | Fully supported | |
| Price List | Product Pricinglossy | Fully supported | |
| Task, Email, PhoneCall, Appointment | Task, Event1:1 | Fully supported | |
| Annotation | Note1:1 | Fully supported | |
| User (Owner) | 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.
Microsoft Dynamics 365 Sales gotchas
Professional tier 15-table custom table limit blocks migrations
October 2024 pricing increase applies at renewal for all customers
Custom fields must be created in the UI before API writes
Power Platform request limits apply to bulk migrations
Activity records orphaned to inactive owners fail silently
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
Discovery and scoping
We audit the source Microsoft Dynamics 365 Sales environment via the Dataverse Web API, capturing Accounts, Contacts, Leads, Opportunities, Activities, Products, Price Lists, custom tables, and owner assignments. We identify the Dynamics tier (Professional or Enterprise) to determine the custom table ceiling applicability, flag inactive owners, and assess engagement volume. We pair this with a Freshsales tier review (Growth, Pro, Enterprise) to confirm custom field and object capacity. The discovery output is a written migration scope, a custom field creation checklist for Freshsales, and a source-citation for the October 2024 pricing impact if renewal falls within the migration window.
Schema pre-creation in Freshsales
Before any data moves, we generate a complete Freshsales custom field creation checklist based on the Dynamics schema audit. The customer's Freshsales admin creates each custom field in the destination UI and publishes. We validate the field list against the source schema during a staging check. If custom Dataverse tables exist above the Professional tier ceiling, we negotiate a simplification plan with the customer before proceeding: merge tables, archive stale data, or upgrade the Dynamics license. Schema readiness is a gate condition for migration.
Sandbox migration and reconciliation
We run a full migration into a Freshsales sandbox or staging environment using production-like record volumes. The customer reconciles record counts (Accounts in, Contacts in, Leads in, Deals in, Tasks in), spot-checks 25-50 records field-by-field against the Dynamics source, and signs off the mapping. Any missing fields, incorrect lookups, or data transformations are corrected here. The sandbox run produces a reconciliation report that establishes the baseline for production cutover.
Owner reconciliation and User provisioning
We extract every distinct Dynamics User referenced as an owner on Contacts, Accounts, Opportunities, and Activities and match by email against the Freshsales destination User table. Owners without a matching Freshsales User are flagged in a reconciliation queue. The customer's Freshsales admin provisions any missing Users (active or inactive based on whether the original Dynamics user is still employed). Migration cannot proceed past this step because OwnerID lookups are required on standard objects and unattributed records create data quality issues post-migration.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (first, because all other objects reference them), Contacts (with AccountId resolved), Leads (with status and score preserved), Deals (with AccountId, OwnerId, and stage resolved), Products (with pricing), Activities (Tasks and Events via REST API with batch chunking), Notes and Attachments. Each phase emits a row-count reconciliation report before the next phase begins. If the Dynamics environment has a large engagement history, we chunk the activity migration into batches of 500-1,000 records to stay within Freshsales API rate limits.
Cutover, validation, and automation inventory handoff
We freeze Dynamics writes during cutover, run a final delta migration of any records modified during the migration window, then enable Freshsales as the system of record. We deliver a written inventory of every active Dynamics Power Automate workflow and Dataverse automation with its trigger, conditions, and recommended Freshsales Workflow equivalent. We do not rebuild automations inside the migration scope. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's sales team during the first business week in Freshsales.
Platform deep dives
Microsoft Dynamics 365 Sales
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 Microsoft Dynamics 365 Sales 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
Microsoft Dynamics 365 Sales : Per-user and per-environment request limits enforced across Power Platform; exact limits vary by license tier and environment capacity.
Data volume sensitivity
Microsoft Dynamics 365 Sales exposes a bulk API — large-volume migrations stream efficiently.
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 Microsoft Dynamics 365 Sales to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Microsoft Dynamics 365 Sales 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 Microsoft Dynamics 365 Sales
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.