CRM migration
Field-level mapping, validation, and rollback between MetroLeads and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
MetroLeads
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
6 of 12
objects map 1:1 between MetroLeads and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from MetroLeads to Microsoft Microsoft Dynamics 365 Sales is a schema redesign, not a record copy. MetroLeads organizes data around a lead-centric model where each Lead carries state, source_tags, and custom lead_fields keyed by internal property IDs. Dynamics 365 uses the Account-Contact hierarchy with a separate Lead object for unqualified prospects, and lifecycle stages are managed through configurable status values. We extract the MetroLeads property schema first to build the ID-to-name mapping that prevents destination custom fields from being named after internal IDs, then sequence the Lead-to-Contact split using the customer's state-to-lifecycle mapping. Events and Advanced Data Modules require custom object creation in Dynamics 365 with equivalent field types. Workflows, automations, and telephony configurations do not migrate; we deliver a written inventory of these for the customer's admin to rebuild in Dynamics 365.
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
MetroLeads platform overview
Scorecard, SWOT, gotchas, and pricing for MetroLeads.
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 MetroLeads 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.
MetroLeads
Lead
Microsoft Dynamics 365 Sales
Lead or Contact (split required)
1:manyMetroLeads Leads map to Dynamics 365 Lead for unqualified prospects or Contact attached to an Account for qualified buyers. The split rule is defined during discovery by reviewing MetroLeads state values and mapping them to Dynamics 365 Lead Status and Contact Lifecycle Stage. The original MetroLeads state is preserved in a custom field metro_state__c on both Lead and Contact for audit and historical reporting. We also extract and resolve assigned_to user references by matching against Dynamics 365 Users by email before the Lead or Contact is created.
MetroLeads
Company
Microsoft Dynamics 365 Sales
Account
1:1MetroLeads Companies map directly to Dynamics 365 Account. The Company UUID becomes the external ID for deduplication. The /companies/{uuid}/leads/ hierarchy establishes the parent relationship that informs how grouped Leads map to Accounts. If a Company has no Leads, it still migrates as an Account with no Contacts. Company-level custom properties migrate to Account custom fields using the property ID resolution step before field names are written.
MetroLeads
Events
Microsoft Dynamics 365 Sales
Activity (Task, Email, Meeting)
1:manyMetroLeads Events track engagement history tied to Leads. We export the event_type and event metadata, then split into Dynamics 365 Task (for calls and generic tasks), Email (for email activities), and Event (for meetings). The event-to-lead association is preserved through the WhoId field pointing to the migrated Lead or Contact record. ActivityDate ordering is preserved so the timeline reflects the original sequence.
MetroLeads
Phones
Microsoft Dynamics 365 Sales
Phone Number fields on Contact
1:1Phones are embedded arrays within MetroLeads Lead records with type metadata (Work, Mobile, etc.). We extract each phone entry and write it to the corresponding typed phone field on the migrated Contact record. Phone type metadata is preserved in a custom field or the phone number label so that Work versus Mobile versus Home is distinguishable in Dynamics 365.
MetroLeads
Emails
Microsoft Dynamics 365 Sales
Email fields on Contact
1:1Emails are embedded arrays within MetroLeads Lead records with type and address. We extract each email entry and write it to the appropriate typed email field on the migrated Contact record. Primary versus secondary email designation is preserved through the email address order in the source array.
MetroLeads
Custom Properties (lead_fields)
Microsoft Dynamics 365 Sales
Custom Fields on Lead, Contact, or Account
lossyMetroLeads lead_fields store tenant-specific custom property values keyed by internal property IDs (e.g. customer_id_070) rather than human-readable names. We fetch the MetroLeads property schema first, build an ID-to-name mapping, then create corresponding custom fields in Dynamics 365 with the correct field types (text, number, date, picklist) before any data is written. This prevents destination fields from being named after internal MetroLeads IDs.
MetroLeads
Advanced Data Modules
Microsoft Dynamics 365 Sales
Custom Objects
lossyAdvanced Data Modules are tenant-specific data structures extending the MetroLeads base schema with field definitions that vary per organization. We export the module schema alongside records, then map each module to a Dynamics 365 Custom Object on Dataverse with equivalent field types and relationships. The source module definition is documented as the target schema specification for the customer's admin to review before import.
MetroLeads
Intellisearch
Microsoft Dynamics 365 Sales
Custom Fields or Notes
1:1Intellisearch is a MetroLeads-specific search and scoring layer built on top of Lead data. The scoring logic and saved searches do not map 1:1 to Dynamics 365 standard objects. We export the raw Intellisearch configuration data and the resulting lead scores as custom fields on the Lead or Contact record, preserving the score values for reference even if the calculation logic cannot be replicated.
MetroLeads
Source Tags
Microsoft Dynamics 365 Sales
Multi-Select Picklist or Custom Field
lossySource Tags are string arrays on MetroLeads Lead records indicating lead disposition (e.g. disposition_answered). We export the raw tag strings and map them to a Dynamics 365 multi-select picklist field on Lead or Contact, or to a custom text field if the tag count exceeds picklist capacity. The customer chooses the tag strategy during scoping.
MetroLeads
Lead State
Microsoft Dynamics 365 Sales
Lead Status or Lifecycle Stage
lossyMetroLeads Lead state is a tenant-configured string field (e.g. contacted, qualified) where valid values vary per MetroLeads instance. We extract all unique state values during the export scan, present them to the customer for lifecycle-stage mapping against Dynamics 365 Lead Status values, and flag any unmapped values so no records are orphaned during import. This step prevents silent data loss where MetroLeads state values have no corresponding Dynamics 365 picklist entry.
MetroLeads
Lead Group
Microsoft Dynamics 365 Sales
Teams or Custom Grouping Field
1:1Lead Group is a MetroLeads-specific UUID reference grouping related Leads. This concept does not have a direct Dynamics 365 standard equivalent. We export the UUID and the grouped Lead membership, then map grouped Leads to Dynamics 365 Teams if the customer has teams enabled, or to a custom text field on Lead that stores the original MetroLeads lead_group UUID for grouping reference.
MetroLeads
User
Microsoft Dynamics 365 Sales
User
1:1MetroLeads User records with id, name, and role assignments are exported for owner resolution. We match MetroLeads assigned_to references to Dynamics 365 Users by email lookup. Any MetroLeads Owner without a matching Dynamics 365 User goes to a reconciliation queue for the customer's admin to provision before record import resumes. OwnerId references are required on most standard objects, so this step gates the record import phases.
| MetroLeads | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Lead | Lead or Contact (split required)1:many | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Events | Activity (Task, Email, Meeting)1:many | Mapping required | |
| Phones | Phone Number fields on Contact1:1 | Fully supported | |
| Emails | Email fields on Contact1:1 | Fully supported | |
| Custom Properties (lead_fields) | Custom Fields on Lead, Contact, or Accountlossy | Fully supported | |
| Advanced Data Modules | Custom Objectslossy | Mapping required | |
| Intellisearch | Custom Fields or Notes1:1 | Mapping required | |
| Source Tags | Multi-Select Picklist or Custom Fieldlossy | Fully supported | |
| Lead State | Lead Status or Lifecycle Stagelossy | Mapping required | |
| Lead Group | Teams or Custom Grouping Field1:1 | Mapping required | |
| User | 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.
MetroLeads gotchas
Merge API field priority can silently overwrite data
Custom lead_fields use property IDs not property names
Tenant-specific state values require pre-migration catalog
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 scope definition
We audit the MetroLeads portal across all supported objects including Leads, Companies, Events, Advanced Data Modules, and Intellisearch configuration. We extract the property schema to build the ID-to-name mapping, catalog all unique state values for lifecycle stage mapping, and assess data quality issues including duplicate leads requiring merge resolution and incomplete records. The discovery output is a written migration scope with object counts, custom field list, lifecycle mapping table, and Dynamics 365 edition recommendation based on the target schema complexity.
Schema design in Dynamics 365
We design the destination schema in Dynamics 365, creating custom fields on Lead, Contact, and Account with correct field types, custom objects for Advanced Data Modules with equivalent Dataverse field definitions, and the lifecycle stage mapping table. The Lead Status and Contact Lifecycle Stage picklists are configured to accept the MetroLeads state values before any data import. Schema is deployed into a Dynamics 365 Sandbox via the Dataverse Web API for validation before production migration begins.
Sandbox migration and reconciliation
We run a full migration into a Dynamics 365 Sandbox using production-like data volume. The customer's admin reconciles record counts across all objects, spot-checks 25-50 random records against the MetroLeads source, and reviews the custom field values to confirm property ID resolution produced readable names. Any schema corrections, mapping adjustments, or unmapped state values are resolved in the sandbox before production migration begins.
Owner reconciliation and User provisioning
We extract every distinct MetroLeads assigned_to user reference and match by email against the Dynamics 365 destination org's User table. Any MetroLeads Owner without a matching Dynamics 365 User goes to a reconciliation queue. The customer's Dynamics 365 admin provisions missing Users (active or inactive depending on whether the original MetroLeads user is still active). OwnerId references are required on most standard Dynamics 365 objects, so this step gates the record import phases.
Production migration in dependency order
We run production migration in record-dependency order: Users (validated), Accounts (from MetroLeads Companies), Contacts (with AccountId resolved and Lead-Contact split applied), Leads (with lifecycle mapping applied), Events (split into Tasks, Emails, Meetings via Dataverse Web API), Advanced Data Modules (as Custom Objects with custom field lookups resolved), and Intellisearch scores (as custom fields). Each phase emits a row-count reconciliation report before the next phase begins. We use the Dataverse Web API with batch requests, appropriate concurrency handling, and parent-record lookup resolution at migration time.
Cutover, delta sync, and handoff
We freeze MetroLeads writes during cutover, run a delta migration of any records modified during the migration window, then enable Dynamics 365 as the system of record. We deliver a written inventory of any MetroLeads Workflows, automations, and telephony configurations that were not migrated, with recommendations for Dynamics 365 equivalents. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's sales team.
Platform deep dives
MetroLeads
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between MetroLeads and Microsoft Dynamics 365 Sales .
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across MetroLeads and Microsoft Dynamics 365 Sales .
Object compatibility
All 8 core objects map 1:1 between MetroLeads and Microsoft Dynamics 365 Sales .
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
MetroLeads: Not publicly documented in the available research data.
Data volume sensitivity
MetroLeads 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 MetroLeads to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your MetroLeads 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 MetroLeads
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.