CRM migration
Field-level mapping, validation, and rollback between Copper and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Copper
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
6 of 10
objects map 1:1 between Copper and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
4-8 weeks
Overview
Migrating from Copper to Microsoft Dynamics 365 Sales is a structural shift from a Google Workspace-centric CRM with a flat People-and-Companies model to a hierarchical Dataverse-backed platform that separates Leads from Accounts and Contacts. Copper treats People as the primary contact object; Dynamics 365 treats Leads as the unqualified-prospect entry point that must be converted into Account and Contact records. We resolve that split during scoping by applying a qualification rule based on Copper's Lead Status and People relationship fields. Pipeline stages migrate as Dynamics 365 Sales Process stages with probability values. Activity history (emails, calls, meetings) transfers to Dynamics 365 EmailMessage, Task, and Event records. Workflows, bulk email sequences, and Zapier automations do not migrate; we deliver a written inventory of every automation requiring rebuild in Dynamics 365 Sales, Power Automate, or Azure Logic Apps. Attachment files stored in Google Drive require separate file migration to SharePoint or OneDrive before re-linking to Dynamics 365 records.
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
Copper platform overview
Scorecard, SWOT, gotchas, and pricing for Copper.
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 Copper 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.
Copper
People
Microsoft Dynamics 365 Sales
Lead or Contact (split required)
1:manyCopper People records map to either Dynamics 365 Lead or Contact depending on the prospect's qualification status. We apply a split rule during scoping based on whether the People record has a related Copper Lead, a converted Lead link, or a status indicating active opportunity involvement. Unqualified prospects become Leads; qualified contacts become Contacts attached to the mapped Account. The original Copper contact status and any custom person-level properties migrate to custom fields on both Lead and Contact for audit and reporting continuity.
Copper
Companies
Microsoft Dynamics 365 Sales
Account
1:1Copper Company records map directly to Dynamics 365 Account. The Company domain or website URL becomes the Account Website field and serves as the dedupe key during import. Account is provisioned before any Contact or Lead import so that the parent Account lookup is satisfied at the moment of record insert. We preserve the Company-Industry mapping to Account Industry, and any Company custom fields become Account custom fields.
Copper
Opportunities
Microsoft Dynamics 365 Sales
Opportunity
1:1Copper Opportunities map to Dynamics 365 Opportunity with Pipeline Stage mapped to the configured Sales Process stage. Closed-Won and Closed-Lost probabilities are set from the destination stage probabilities rather than carried from Copper, since Copper does not expose explicit probability values via API. Opportunity.Amount, CloseDate, and OwnerId resolve against the Account and User lookups created in earlier phases. We scope open Opportunities by default and document any closed deals included in the migration scope before extraction begins.
Copper
Pipeline
Microsoft Dynamics 365 Sales
Sales Process + Stage
lossyCopper pipeline stage names and order map to Dynamics 365 Sales Process stage categories. Each Copper pipeline becomes a separate Sales Process in Dynamics 365, and stage probabilities are set to match Copper's stage percentages rounded to the nearest integer. Dynamics 365 requires Sales Processes to be configured in the target environment before Opportunities are imported with stage values, so this phase precedes record migration.
Copper
Leads
Microsoft Dynamics 365 Sales
Lead
1:1Copper Lead records map directly to Dynamics 365 Lead. Copper's Lead_Status maps to the Dynamics 365 Lead Status field, and any lead score or grade values migrate to custom numeric fields. Leads without a matching Company in Copper map to Leads without an AccountName; Leads with a mapped Company resolve the AccountName on the Lead record during migration. We preserve the Lead creation date and owner from Copper for timeline accuracy.
Copper
Tasks
Microsoft Dynamics 365 Sales
Task
1:1Copper Tasks migrate to Dynamics 365 Task records with Status, Priority, and ActivityDate preserved. The task Subject maps to Task.Subject, Description maps to Task.Description, and the related People or Company reference resolves to the WhoId or WhatId on the Task. Open tasks are imported with their existing due dates; completed tasks carry their completion timestamp as ActivityDate. Assignee resolution follows the Owner reconciliation phase.
Copper
Activities
Microsoft Dynamics 365 Sales
EmailMessage, Task, Event
1:1Copper Activities of type email map to Dynamics 365 EmailMessage records (body content) paired with a Task record for the activity timeline entry. Call activities map to Task with TaskSubtype=Call and duration stored in a custom field. Meeting activities map to Event with StartDateTime, EndDateTime, and Location preserved. The WhoId on each record links to the migrated Lead or Contact; the WhatId links to the related Opportunity or Account. Activity timestamps are preserved exactly from Copper to maintain timeline ordering.
Copper
Custom Fields
Microsoft Dynamics 365 Sales
Custom Fields
lossyCopper custom field definitions are enumerated via the Custom Field Definitions API during discovery. Each custom field is created as a new field in Dynamics 365 on the corresponding entity (Account, Contact, Lead, Opportunity, Task) with a type-mapped Dynamics 365 field type. Text fields map to Single Line of Text, numeric fields to Decimal or Whole Number, date fields to Date and Time, and checkbox fields to Two Options. Field labels and API names are preserved where possible, with __c suffix appended per Dynamics 365 convention. Validation rules on the target entity may require adjustment if they reference fields that Copper did not enforce.
Copper
Tags
Microsoft Dynamics 365 Sales
Text Field or Option Set
lossyCopper tags (flat labels applied to People, Companies, and Opportunities) migrate to a custom text field on the corresponding Dynamics 365 entity. If the customer has fewer than 20 distinct tags per entity, we map them to a Dynamics 365 Option Set for filterable reporting. Tags with high cardinality (more than 50 distinct values) are migrated as plain text in a custom text field and the customer decides on consolidation or tagging strategy post-migration.
Copper
Projects
Microsoft Dynamics 365 Sales
Account or Custom Entity
1:1Copper Projects have no direct equivalent in Dynamics 365 Sales. We migrate Projects as Accounts with a custom Account Type value of 'Project' to distinguish them from business Accounts. Associated Tasks migrate to Tasks with the WhatId pointing to the project Account. If the customer requires a distinct project object with budget, timeline, and milestone fields, we provision a custom Dataverse entity during schema design and map Projects there, with Tasks linked via the custom entity lookup.
| Copper | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| People | Lead or Contact (split required)1:many | Fully supported | |
| Companies | Account1:1 | Fully supported | |
| Opportunities | Opportunity1:1 | Fully supported | |
| Pipeline | Sales Process + Stagelossy | Fully supported | |
| Leads | Lead1:1 | Mapping required | |
| Tasks | Task1:1 | Fully supported | |
| Activities | EmailMessage, Task, Event1:1 | Mapping required | |
| Custom Fields | Custom Fieldslossy | Mapping required | |
| Tags | Text Field or Option Setlossy | Mapping required | |
| Projects | Account or Custom Entity1:1 | Mapping required |
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.
Copper gotchas
Contact limit enforcement varies by tier and can block imports
API rate limit of 180 requests per minute requires throttled extraction
Workflows, bulk email, and custom reports are tier-gated features
Attachment files live in Google Drive, not Copper's own storage
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 scoping
We audit the Copper workspace across account plan tier, People count, Company count, Opportunity count and pipeline structure, Lead count, Task volume, Activity history volume, custom field definitions via the Custom Field Definitions API, and active tag taxonomy. We cross-reference this with the destination Dynamics 365 environment: licensed user count, existing Account and Contact volume, active Sales Processes, and any existing custom entities. We produce a written migration scope that defines the Lead-Contact split rule, the Opportunity pipeline-to-Sales Process mapping, and the custom field translation matrix. This phase also includes a Google Drive attachment audit to scope the parallel file migration track.
Schema design and Dynamics 365 pre-configuration
We configure the destination Dynamics 365 environment before any records are imported. This includes provisioning custom fields on Account, Contact, Lead, and Opportunity entities to receive Copper custom field values. We create Sales Processes matching each Copper pipeline with stage names and probabilities. We define Record Types on Opportunity if the customer requires separate page layouts per line of business. Schema configuration is deployed into a Dynamics 365 Sandbox environment first for validation by the customer's admin team. No records are written to production until schema is signed off.
Sandbox migration and reconciliation
We run a full migration into a Dynamics 365 Sandbox using production-like data volume extracted from Copper. The customer's Dynamics 365 admin and RevOps lead reconcile record counts, spot-check field mappings on 25-50 random records, and validate that the Lead-Contact split rule produces the expected distribution. Any field mapping corrections, custom field type adjustments, or stage probability corrections are documented and applied to the production migration scripts. The sandbox sign-off is a required gate before production migration begins.
Owner reconciliation and User provisioning
We extract every distinct Copper owner referenced on People, Company, Opportunity, Lead, and Activity records and match by email against the destination Dynamics 365 User table. Owners without a matching active User are listed in a reconciliation report with their email, record count, and record type. The customer's Dynamics 365 admin provisions missing Users in Azure Active Directory and assigns them to the appropriate Business Unit before production migration. Migration cannot proceed past record insertion until all owner references are resolvable.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Copper Companies), Leads (from Copper Lead records and the People split), Contacts (from Copper People records mapped via the split rule, with AccountId resolved), Opportunities (with AccountId, OwnerId, and Sales Process stage resolved), Tasks (with WhoId and WhatId resolved), Activities (EmailMessage, Task, Event via bulk insert with parent-record lookup), Custom Fields (as field values on each entity), Tags (as text or Option Set values). Each phase emits a row-count reconciliation report before the next phase begins. Bulk API chunking and exponential backoff are used for activity records to stay within Dataverse API rate limits.
Cutover, validation, and automation handoff
We freeze Copper writes during the cutover window, run a final delta migration of any records modified during the window, then re-link SharePoint attachment URLs to Dynamics 365 record document locations. We enable Dynamics 365 as the system of record and deliver the Workflow and Automation Inventory document listing every Copper workflow, Zapier trigger, and bulk email sequence that requires rebuild in Power Automate, Dynamics 365 Sales automation, or Azure Logic Apps. We support a one-week hypercare window for reconciliation issues. We do not rebuild Copper workflows as Power Automate flows as part of the migration scope; that work is a separate engagement or an internal admin task.
Platform deep dives
Copper
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 Copper and Microsoft Dynamics 365 Sales .
Object compatibility
3 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
Copper: 180 requests per minute on a rolling window, returning HTTP 429 when exceeded. Bulk endpoints have a separate ceiling of 3 requests per second..
Data volume sensitivity
Copper 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 Copper to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Copper 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 Copper
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.