CRM migration
Field-level mapping, validation, and rollback between Dynamics 365 Marketing and HighLevel. We move data and schema; workflows are rebuilt natively in HighLevel.
Dynamics 365 Marketing
Source
HighLevel
Destination
Compatibility
7 of 10
objects map 1:1 between Dynamics 365 Marketing and HighLevel.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Dynamics 365 Marketing to GoHighLevel is a platform consolidation as much as a data migration. Dynamics 365 Marketing's $1,500 per tenant price point, complex Dataverse-backed schema with msdynmkt_ prefixed marketing tables, and the June 30, 2025 outbound marketing end-of-life deadline push organizations toward GoHighLevel's $97 per month flat rate and all-in-one platform model. We handle the Contact and Account extraction from Dataverse, resolve the Marketing Contact billing flag during import, preserve campaign structure and marketing list memberships, and migrate engagement history (calls, emails, meetings, tasks) as GoHighLevel activities linked to the correct Contact and Deal records. Dynamics 365 workflows, Power Automate flows, Customer Insights segments, and marketing email templates do not migrate as code; we deliver written inventories for the customer's admin to rebuild in GoHighLevel's workflow builder. The migration scope is scoped to CRM and marketing record data, not the Microsoft stack integrations that require separate redesign.
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 Dynamics 365 Marketing object lands in HighLevel, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Dynamics 365 Marketing
Contact
HighLevel
Contact
1:1Dynamics 365 Contact records map to GoHighLevel Contact objects. We extract standard fields (full name, email, phone, address, company name) from the Dataverse contact table and import via GoHighLevel's Contacts API. The Dynamics 365 Contact-to-Account lookup is preserved as the GoHighLevel Contact's company association. We flag contacts that qualify as Marketing Contacts in Dynamics 365 for the customer's awareness during import because GoHighLevel bills contacts differently (by usage, not by marketing status).
Dynamics 365 Marketing
Lead
HighLevel
Contact
1:manyDynamics 365 Leads merge into GoHighLevel Contacts when the destination does not use a separate Lead object. We import Lead records with leadscore, leadstatus, and conversion data preserved as custom fields on the GoHighLevel Contact. Any Lead_Status values from Dynamics 365 are stored in a custom field for segmentation review in GoHighLevel. The original Lead creation date and owner are preserved for audit purposes.
Dynamics 365 Marketing
Account
HighLevel
Company
1:1Dynamics 365 Account records map to GoHighLevel Company records. Industry classification, address fields, and account hierarchy parent references transfer directly. Account custom fields and custom properties require pre-creation in GoHighLevel before import because GoHighLevel's custom field schema must be defined before data is written.
Dynamics 365 Marketing
Opportunity
HighLevel
Opportunity
1:1Dynamics 365 Opportunities map to GoHighLevel Opportunities. Pipeline stage, estimated close date, estimated value, probability, and owner assignment transfer directly. We create GoHighLevel pipeline stages that correspond to the Dynamics 365 sales process stage values before migration so that the Opportunity import resolves stage references correctly.
Dynamics 365 Marketing
Campaign
HighLevel
Campaign
1:1Dynamics 365 Campaigns map to GoHighLevel Campaigns. Campaign name, objective, target products, budget, start and end dates, and owner transfer. We preserve the campaign structure for historical reporting purposes. Active campaign tracking migrates with the understanding that ongoing campaign activity continues in GoHighLevel post-migration.
Dynamics 365 Marketing
Marketing List
HighLevel
Tag or Group
1:1Dynamics 365 Marketing Lists containing member records map to GoHighLevel Tags or Groups depending on list size and intended use. We extract the marketing list membership (Contact IDs and Account IDs), re-associate each member with the corresponding GoHighLevel Contact or Company, and create the tag or group in GoHighLevel before importing membership records. Large lists with thousands of members are batched into API chunks to respect GoHighLevel rate limits.
Dynamics 365 Marketing
ActivityPointer (Email, Task, PhoneCall, Appointment)
HighLevel
Activity (Email, Call, Meeting, Task)
1:1Dynamics 365 activity records (Email, Task, PhoneCall, Appointment) stored in ActivityPointer and type-specific child tables map to GoHighLevel activity records. The regarding object lookup (Contact or Opportunity) is resolved at migration time by matching the Dynamics 365 record ID to the corresponding GoHighLevel Contact or Opportunity. Activity timestamps, disposition codes, duration, and notes body transfer directly. GoHighLevel's activity timeline uses a unified activity model versus Dynamics 365's split table model.
Dynamics 365 Marketing
Annotation (Note with Attachment)
HighLevel
Note
1:1Dynamics 365 Annotations (notes with optional file attachments) map to GoHighLevel Notes. We export the note body as plain text or rich text, extract the file attachment as a blob, and re-associate it with the target Contact or Opportunity in GoHighLevel. Annotations are handled in a separate pass after the parent Contact and Opportunity records are confirmed in GoHighLevel.
Dynamics 365 Marketing
Custom Entity (msdyn_ or custom solution tables)
HighLevel
Custom Field
lossyCustom Dataverse entities created in a managed solution require pre-migration schema export from the Configuration Migration Tool. We do not infer custom entity structure from UI exports. Each custom entity field is defined in GoHighLevel as a custom field on the corresponding object (Contact, Company, or Opportunity) before any data import. Lookup relationships between custom entities require resolution ordering to ensure parent records exist before child records are written.
Dynamics 365 Marketing
msdynmkt_email (Marketing Email)
HighLevel
Email Template
lossyMarketing emails stored in the msdynmkt_email table (Customer Insights - Journeys schema) are not migratable as functional templates. GoHighLevel uses its own email template format with drag-and-drop builder. We extract the email subject and HTML body from Dynamics 365 and document the content for manual recreation in GoHighLevel's email builder. This is a written handoff, not an automated template migration, because template structures differ fundamentally between platforms.
| Dynamics 365 Marketing | HighLevel | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Lead | Contact1:many | Fully supported | |
| Account | Company1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Campaign | Campaign1:1 | Fully supported | |
| Marketing List | Tag or Group1:1 | Fully supported | |
| ActivityPointer (Email, Task, PhoneCall, Appointment) | Activity (Email, Call, Meeting, Task)1:1 | Fully supported | |
| Annotation (Note with Attachment) | Note1:1 | Fully supported | |
| Custom Entity (msdyn_ or custom solution tables) | Custom Fieldlossy | Fully supported | |
| msdynmkt_email (Marketing Email) | Email Templatelossy | 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.
Dynamics 365 Marketing gotchas
Marketing Contact billing triggers on record import
Configuration Migration Tool does not migrate high-volume transactional data
Customer Insights segments are stored separately from Dataverse CRM records
Marketing Lists and Campaign Activities have legacy schema dependencies
Custom entities require a managed solution schema, not a UI export
HighLevel gotchas
Sub-account architecture creates isolated data silos per client
Usage-based telecom and AI costs are not in the subscription price
Workflows have no native equivalent in most destination CRMs
API rate limits cap bulk migration throughput at 100 requests per 10 seconds per sub-account
White-label configuration and branding assets do not export via API
Pair-specific challenges
Migration approach
Discovery and schema audit
We audit the source Dynamics 365 Marketing environment across installed solutions, custom Dataverse entities, active outbound marketing assets (Customer Journeys, marketing lists, segments), engagement volume, and Power Automate flow inventory. We pair this with a GoHighLevel environment review to confirm plan tier, existing custom fields, pipeline structure, and workflow inventory. The discovery output is a written migration scope that explicitly identifies what migrates as data, what migrates as documented content, and what requires rebuild as GoHighLevel configuration.
Schema preparation in GoHighLevel
We pre-create all required custom fields in GoHighLevel, including fields for legacy Dynamics 365 properties (lead score, lead status, original contact type, marketing list membership flags). We configure pipeline stages to match the Dynamics 365 sales process, set up campaign structure, and create the tag and group taxonomy that maps to Dynamics 365 marketing lists. Schema preparation runs against the customer's live GoHighLevel environment or a designated staging sub-account.
Record dependency ordering and export
We extract data from Dynamics 365 Dataverse in dependency order: Accounts first (as parent records), then Contacts and Leads, then Opportunities, then Campaign and Marketing List membership, then Activities. Custom entity exports run last after their parent record lookups are resolved. Each export pass produces a row-count reconciliation report. Large exports (over 50,000 records) are chunked using continuation token pagination with checkpoint resume.
GoHighLevel import in dependency order
We import records into GoHighLevel in reverse dependency order: Companies first, then Contacts and Leads, then Opportunities, then Campaigns and Tags, then Activities and Notes. Each phase waits for the previous phase's reconciliation report before proceeding. Owner assignment maps by email match against GoHighLevel Users. Any Contact without a matching Company record is held in a quarantine pass until the Company import is confirmed.
Marketing asset documentation and workflow rebuild handoff
We deliver a written inventory of every active Dynamics 365 Customer Journey, Power Automate flow, segment definition, and marketing email template that requires rebuild in GoHighLevel. The inventory includes the trigger, conditions, actions, and recommended GoHighLevel workflow equivalent for each automation item. GoHighLevel's native workflow builder replaces Power Automate flows; Customer Journeys are rebuilt as automation sequences in GoHighLevel's workflow editor. We do not rebuild workflows as code inside the migration scope.
Cutover, delta sync, and validation
We freeze Dynamics 365 writes during the cutover window, run a final delta migration of any records modified since the last export pass, and enable GoHighLevel as the active system of record. We validate record counts, spot-check 25-50 records against the source, and deliver a final reconciliation report. We support a one-week hypercare window for reconciliation issues. Post-migration admin support, training, and GoHighLevel workflow rebuild are outside standard migration scope.
Platform deep dives
Dynamics 365 Marketing
Source
Strengths
Weaknesses
HighLevel
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Dynamics 365 Marketing and HighLevel.
Object compatibility
1 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
Dynamics 365 Marketing: Dataverse Web API enforces organization-level throttling; specific limits vary by workload and are not publicly documented at fixed thresholds.
Data volume sensitivity
Dynamics 365 Marketing 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 Dynamics 365 Marketing to HighLevel migration scoping. Not seeing yours? Book a call.
Walk through your Dynamics 365 Marketing to HighLevel migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Dynamics 365 Marketing
Other ways to arrive at HighLevel
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.