CRM migration
Field-level mapping, validation, and rollback between Freshmarketer and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Freshmarketer
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
10 of 12
objects map 1:1 between Freshmarketer and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Freshmarketer to Microsoft Microsoft Dynamics 365 Sales crosses from an SMB marketing-automation platform into an enterprise sales CRM with a fundamentally different data model. Freshmarketer stores contacts and companies as separate objects with a lookup relationship; Microsoft Dynamics 365 Sales expects Accounts (the equivalent of Companies) to own Contacts as child records, which changes how deduplication and merge logic work at migration time. We resolve the org_contact_id lookup during scoping, run contact-to-account parent resolution before insert, and preserve Freshmarketer lifecycle stage data in a custom field since Dynamics has no direct equivalent. Marketing Journeys (automation workflows) cannot be exported as executable logic via API; we deliver a written replay plan documenting enrolled contacts and Journey triggers for the customer's admin to rebuild in Dynamics Sales Insights. Segments map to static marketing lists or dataverse tables. Pricing on Microsoft Dynamics 365 Sales Professional starts at $65 per user per month, and implementation complexity rather than licensing tier is the primary cost driver for most Freshmarketer exits.
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
Freshmarketer platform overview
Scorecard, SWOT, gotchas, and pricing for Freshmarketer.
Destination platform
Microsoft Dynamics 365 Sales platform overview
Scorecard, SWOT, gotchas, and pricing for Microsoft Dynamics 365 Sales .
Data migration guide
The complete Microsoft Dynamics 365 Sales migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
Microsoft Dynamics 365 Sales migration checklist
Pre- and post-cutover tasks for moving onto Microsoft Dynamics 365 Sales .
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Freshmarketer object lands in Microsoft Dynamics 365 Sales , including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Freshmarketer
Contact
Microsoft Dynamics 365 Sales
Contact
1:1Freshmarketer Contact maps to Dynamics 365 Contact. Email address is the dedupe key; we check for existing Contacts in the destination org by email before insert and either merge or create fresh per the customer's merge preference. Freshmarketer lifecycle_stage property has no native Dynamics equivalent; we create a custom text field fm_lifecycle_stage__c on Contact to preserve this value for reporting and segmentation post-migration. Owner assignment maps via email match to the Dynamics User table.
Freshmarketer
Company
Microsoft Dynamics 365 Sales
Account
1:1Freshmarketer Company maps to Dynamics 365 Account. Company domain becomes the Account Website field and serves as the secondary dedupe key alongside company name. The org_contact_id lookup on Freshmarketer Contact resolves to the parentaccountid field on Dynamics Contact at migration time. We create Accounts before Contacts so that parentaccountid is satisfied at the moment of Contact insert to avoid orphaned records.
Freshmarketer
Deal
Microsoft Dynamics 365 Sales
Opportunity
1:1Freshmarketer Deal maps to Dynamics 365 Opportunity. Deal stage maps to Dynamics stageName with a pre-configured Sales Process that whitelists the relevant stage values. Pipeline in Freshmarketer maps to the Opportunity Record Type. Closed-Lost and Closed-Won reason custom fields on Deal become custom Opportunity fields for loss and win reason tracking. OwnerId on Deal resolves to Dynamics User via email match.
Freshmarketer
Deal Stage
Microsoft Dynamics 365 Sales
Opportunity Stage
lossyEach Freshmarketer pipeline becomes a Dynamics 365 Record Type on Opportunity with a corresponding Business Process Flow that gates stage progression. Stage probability percentages migrate from Freshmarketer to the Dynamics probability field. We configure stage names in Dynamics before migration so that insert operations do not violate required picklist values.
Freshmarketer
Leads
Microsoft Dynamics 365 Sales
Lead
1:1Freshmarketer standalone does not have a Lead object; if migrating from Freshsales Suite (which includes Lead), Lead maps directly to Dynamics 365 Lead. Lead score from Freshsales maps to fm_lead_score__c on Dynamics Lead. If the source is Freshmarketer standalone, this object is skipped and all contact records land directly as Dynamics Contacts without a Lead-to-Contact conversion step.
Freshmarketer
Activity: Email Log
Microsoft Dynamics 365 Sales
EmailMessage + ActivityPointer
1:1Freshmarketer email activity logs migrate to Dynamics 365 EmailMessage records linked to an ActivityPointer (activity pointer) entry. The Regarding (regardingobjectid) field on EmailMessage points to the parent Contact or Account record resolved at migration time. Email body and subject preserve; attachments migrate as notes or as file attachments via SharePoint integration if the customer has SharePoint configured in Dynamics.
Freshmarketer
Activity: Sales Activity
Microsoft Dynamics 365 Sales
ActivityPointer (Task subtype Call)
1:1Freshmarketer sales activity records (calls, notes, meetings logged against contacts or companies) migrate to Dynamics ActivityPointer records. Calls carry CallDirection, Duration, and any disposition data into custom Task fields. Meeting records with start and end timestamps migrate as Dynamics Event records with Location and duration preserved. All activity timestamps (ActivityDate) preserve the original Freshmarketer creation time for timeline fidelity.
Freshmarketer
Segment
Microsoft Dynamics 365 Sales
Marketing List or Custom Table
1:1Freshmarketer Segments are audience filters without a direct Dynamics 365 equivalent. We map segment criteria to static Marketing Lists (listmember records) where the segment logic was based on explicit field values, and to Dataverse custom tables where the segment used compound filter logic. The customer receives a written Segment inventory documenting which criteria maps to which list or table and which contacts are enrolled, so the marketing team can validate audience completeness post-migration.
Freshmarketer
Marketing Contacts
Microsoft Dynamics 365 Sales
fm_marketing_contact__c (custom field)
lossyFreshmarketer Marketing Contacts is a billing concept tracking contacts actively targeted in campaigns. We preserve this flag in a custom bit field fm_marketing_contact__c on the Dynamics Contact record. There is no billing implication in Microsoft Dynamics 365 Sales because it uses per-user licensing, but preserving the flag allows the customer to re-enroll contacts in Dynamics marketing lists or export the list for use in a separate email marketing platform. We flag the marketing contact count during scoping so the customer understands their post-migration volume exposure before we begin.
Freshmarketer
Tag
Microsoft Dynamics 365 Sales
Dynamic Property (string field)
1:1Freshmarketer Tags applied to contacts, companies, and deals migrate as a semicolon-delimited string field or as individual rows in a custom Dynamics table with a lookup to the primary entity. Tag-based segmentation is preserved as a contact attribute for filtering in Dynamics views and reports. The customer chooses the strategy during scoping.
Freshmarketer
Attachment
Microsoft Dynamics 365 Sales
Annotation (Note) or SharePoint
1:1File attachments on Freshmarketer contacts, companies, and deals export to a file store and attach to the corresponding Dynamics record as an Annotation (Note) with isdocument=true. If the customer has SharePoint document management enabled in their Dynamics environment, attachments land in SharePoint libraries with the Regarding lookup pointing to the Contact, Account, or Opportunity. We preserve the original filename and mime type metadata.
Freshmarketer
Custom Field (Contact/Company/Deal)
Microsoft Dynamics 365 Sales
Custom Attribute on Contact/Account/Opportunity
1:1Freshmarketer custom fields on contacts, companies, and deals map to Dynamics custom attributes. We pre-create the custom fields in the Dynamics Dataverse schema before migration using the target field type that best matches the Freshmarketer field type (text to SingleLineOfText, date to DateOnly, number to Decimal, dropdown to OptionSetValue). Field-level security and field-level visibility on Dynamics forms are set during schema configuration so that migration user permissions are satisfied at insert time.
| Freshmarketer | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Deal Stage | Opportunity Stagelossy | Fully supported | |
| Leads | Lead1:1 | Mapping required | |
| Activity: Email Log | EmailMessage + ActivityPointer1:1 | Fully supported | |
| Activity: Sales Activity | ActivityPointer (Task subtype Call)1:1 | Fully supported | |
| Segment | Marketing List or Custom Table1:1 | Fully supported | |
| Marketing Contacts | fm_marketing_contact__c (custom field)lossy | Mapping required | |
| Tag | Dynamic Property (string field)1:1 | Fully supported | |
| Attachment | Annotation (Note) or SharePoint1:1 | Fully supported | |
| Custom Field (Contact/Company/Deal) | Custom Attribute on Contact/Account/Opportunity1: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.
Freshmarketer gotchas
Marketing Contacts billing model affects migration scoping
Email-based contact merging during Freshsales Suite migration
Journeys stop executing post-migration with no auto-resume
API rate limit of 1000 requests per hour caps migration throughput
Outgoing emails disabled after migration require manual re-enablement
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
Pair-specific challenges
Migration approach
Discovery and environment assessment
We audit the source Freshmarketer account for record volumes (Contacts, Companies, Deals, Activities), custom field definitions, active Segments, active Journeys, owner distribution, and any Freshsales Suite-specific objects (Lead, Deal. We check whether the destination Dynamics 365 environment exists already or requires provisioning, whether a Sandbox is available for validation, and what licensing tier (Professional or Enterprise) the customer has purchased. We also assess the Entra ID tenant for user readiness and identify any company-contact deduplication risks from prior Dynamics usage. The discovery output is a written migration scope document covering object counts, custom field inventory, and a timeline estimate.
Schema design and Dataverse preparation
We design the destination Dynamics 365 schema in a Sandbox environment. This includes provisioning custom fields on Contact, Account, and Opportunity with Dataverse types matched to Freshmarketer field types, creating custom Dataverse tables for any Freshmarketer segments that do not map to standard Marketing Lists, configuring option set definitions for dropdown fields, and setting up Business Process Flows if the customer requires stage gating on the Contact or Opportunity object. We configure record types and sales processes for Deal-to-Opportunity migration. All schema elements deploy via the Dynamics Web API or the Dynamics admin portal before any data moves.
Sandbox migration and reconciliation
We run a full migration into the Dynamics Sandbox using representative data volumes. The customer's Dynamics admin or RevOps lead reviews record counts (Accounts in, Contacts in, Opportunities in, Activities in), spot-checks 25-50 random records against the Freshmarketer source for field accuracy, and validates that custom field values landed correctly in the target Dataverse columns. Any mapping corrections happen in Sandbox before production migration begins. We also validate email-match dedupe behavior during this phase to confirm that the merge-or-create preference is correctly configured.
Owner and user provisioning validation
We extract every distinct owner email referenced on Freshmarketer records and match against the destination Entra ID tenant. Owners without a matching Entra ID user go to a provisioning queue. The customer's IT team creates the necessary Entra ID accounts and assigns Dynamics licenses before we resume record migration. Migration cannot proceed past this step because OwnerId references are required on Account, Contact, and Opportunity records, and unresolved owner references block insert.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Freshmarketer Companies), Contacts (with parentaccountid resolved from the Account mapping and email dedupe applied), Leads (only if the source is Freshsales Suite), Opportunities (with AccountId, OwnerId, and RecordTypeId resolved), Activity history (EmailMessages and Tasks via Dynamics Web API batch endpoint with parent-record resolution), Segments (as Marketing Lists or custom Dataverse table rows), Tags (as string attributes on Contact/Account/Opportunity), and Attachments (as Annotations or SharePoint documents). Each phase emits a row-count reconciliation report showing records processed, inserted, updated, and rejected.
Cutover, Journey handoff, and hypercare
We freeze Freshmarketer writes during cutover, run a final delta migration of any records modified during the migration window, then enable Dynamics 365 as the system of record. We deliver the Journey inventory and replay plan to the customer's admin team as a written document. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's sales or marketing team. We do not rebuild Freshmarketer Journeys as Dynamics Sequences or Sales Insights automations inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Freshmarketer
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
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 Freshmarketer and Microsoft Dynamics 365 Sales .
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
Freshmarketer: 1000 requests per hour per account.
Data volume sensitivity
Freshmarketer 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 Freshmarketer to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Freshmarketer to Microsoft Dynamics 365 Sales migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Freshmarketer
Other ways to arrive at Microsoft Dynamics 365 Sales
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.