CRM migration
Field-level mapping, validation, and rollback between Function 365 and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.
Function 365
Source
Nutshell
Destination
Compatibility
14 of 15
objects map 1:1 between Function 365 and Nutshell.
Complexity
BStandard
Timeline
48–72 hours
Overview
Function 365 (typically Microsoft Dynamics 365 Sales) and Nutshell represent fundamentally different CRM philosophies. Dynamics 365 Sales is a modular enterprise platform where Accounts, Contacts, Leads, and Opportunities are separate objects with record types, business units, and field-level security. Nutshell collapses Leads and Opportunities into a single Leads object and does not support Quotes, Invoices, or territories natively. The migration therefore requires careful schema redesign: your Dynamics Opportunity records (with stage, amount, probability, and close date) must merge into Nutshell Leads with a custom pipeline stage field and probability preserved as a custom numeric field. We map all standard person fields (first name, last name, email, phone, title, address) directly, resolve account ownership by email match against Nutshell users, and re-attach activities (calls, emails, meetings) as Nutshell Activities. The migration runs via API with a sample-first approach: a 100–500 record slice migrates first with a field-level diff so you verify stage mapping and owner resolution before the full run commits. Nutshell's JSON-RPC API with per-key impersonation controls how our migration agent authenticates and writes records. Workflows, Power Automate flows, and business rules do not migrate — we export those definitions for your admin to rebuild in Nutshell's automation layer or as exported documentation.
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 Function 365 object lands in Nutshell, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Function 365
Account
Nutshell
Company
1:1Direct object-to-object map. Nutshell's Company entity holds the business-level record — website, industry, address, and employee count all map to matching Nutshell Company fields. Parent-account hierarchies in Dynamics collapse to a single Parent Company link in Nutshell. Multi-address accounts require address-type tagging in Nutshell's single address block.
Function 365
Contact
Nutshell
Person
1:1Direct map. Nutshell Person entity stores first name, last name, email, phone, title, and address fields that match Dynamics Contact schema. Person records link to one primary Company via the 'works for' association. Multiple company affiliations in Dynamics (N:N contact-to-account relationships) collapse to the primary company in Nutshell unless the secondary affiliations are recorded as tags.
Function 365
Lead
Nutshell
Lead
1:1Direct map for Dynamics Leads that have not yet converted. Nutshell Lead entity captures lead name, email, company, status, source, and owner. Lead status pick-list values map value-by-value — your Dynamics Lead status values (New, Contacted, Qualified, Unqualified) require explicit mapping to Nutshell's Lead status options.
Function 365
Opportunity
Nutshell
Lead
many:1Opportunities merge into Nutshell Leads because Nutshell has no separate Opportunity entity. Each Dynamics Opportunity maps to a Nutshell Lead record with deal name, amount, stage, and close date preserved as standard and custom fields. The merge rule is: one Opportunity = one Nutshell Lead with a custom 'Original Opportunity Stage' field retaining the Dynamics stage name. Loss/reason data migrates as a custom text field.
Function 365
Opportunity Product (Quote Product / Order Product)
Nutshell
Product + Custom Note
1:1Nutshell Products store product name and price but have no line-item model. Each Dynamics Opportunity Product line becomes a note attached to the migrated Nutshell Lead, listing product name, quantity, unit price, and discount. If line-item detail is critical, we create separate Product records and document the grouping as a rebuild item for your admin.
Function 365
Task
Nutshell
Activity
1:1Direct map. Dynamics Tasks map to Nutshell Activities with the same subject, description, due date, and owner. Completed status and completion timestamps transfer. Tasks with 'Regarding' pointing to Accounts or Contacts link to the corresponding Nutshell Person or Company record.
Function 365
PhoneCall
Nutshell
Activity
1:1Dynamics PhoneCall activities migrate as Nutshell Activities with Type='Call'. Subject, duration, direction (inbound/outbound), phone number, and owner transfer. Call notes from Dynamics Description field become the Nutshell Activity note body. No call recording files transfer — those are stored in Dynamics/Teams and require separate file export.
Function 365
Email (Email activity)
Nutshell
Activity
1:1Dynamics Email activities migrate as Nutshell Activities with Type='Email'. Subject line maps to Nutshell Activity subject; body maps to note. Attachments on emails are downloaded as files and re-attached to the Nutshell Activity record if under Nutshell's file size limits.
Function 365
Appointment
Nutshell
Activity
1:1Dynamics Appointments migrate as Nutshell Activities with the original start time, end time, location, and subject preserved. Time zones are kept as stored; we convert to Nutshell's UTC offset if needed. Attendees from the Dynamics meeting become a note on the Nutshell Activity documenting who was invited. Recurring appointment series are collapsed into a single activity entry, as Nutshell does not support recurrence patterns.
Function 365
Note (Annotation)
Nutshell
Activity Note
1:1Dynamics Note annotations (plain text and HTML notes attached to any entity) migrate to Nutshell Activity notes attached to the corresponding Person, Company, or Lead. HTML-formatted notes are stripped to plain text during migration to avoid display issues in Nutshell's note renderer.
Function 365
Product
Nutshell
Product
1:1Nutshell Products store product name, SKU, unit price, and description. Dynamics Products map directly — product name to name, product number to SKU, and default price to unit price. Products not linked to any migrated Opportunity are migrated as orphan Product records for your Nutshell admin to re-associate.
Function 365
Competitor
Nutshell
Competitor
1:1Direct map. Dynamics Competitor entity maps to Nutshell Competitor records. Competitor names and websites transfer, preserving the URL format as entered. When a Competitor is linked to a migrated Opportunity, we attach a custom 'Lost To Competitor' text field on the corresponding Nutshell Lead to preserve win/loss context. If a Competitor has no associated Opportunities, it appears as a standalone Competitor record for future reference.
Function 365
Territory
Nutshell
Tag
1:1Nutshell has no native Territory entity. Dynamics Territory names are mapped to Nutshell Tags on the relevant records — each Territory name becomes a Tag and is applied to all Person, Company, and Lead records originally assigned to that Territory. Reporting by territory requires rebuilding in Nutshell's list filters.
Function 365
Campaign
Nutshell
Source
1:1Dynamics Campaign names and campaign type transfer to Nutshell Lead 'Source' field as value mappings. Campaign responses (marketing qualified leads) are noted on individual Lead records. Full campaign analytics do not transfer — those require rebuilding in Nutshell's reporting or a BI tool.
Function 365
Quote / Order / Invoice
Nutshell
No Equivalent
1:1Nutshell has no Quote, Order, or Invoice entity. These records cannot migrate natively. We export Quote and Order metadata (customer, line items, totals, status, dates) as a CSV attachment to the corresponding migrated Lead record and provide a rebuild checklist for your admin to recreate in a dedicated quoting tool.
| Function 365 | Nutshell | Compatibility | |
|---|---|---|---|
| Account | Company1:1 | Fully supported | |
| Contact | Person1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Opportunity | Leadmany:1 | Fully supported | |
| Opportunity Product (Quote Product / Order Product) | Product + Custom Note1:1 | Fully supported | |
| Task | Activity1:1 | Fully supported | |
| PhoneCall | Activity1:1 | Fully supported | |
| Email (Email activity) | Activity1:1 | Fully supported | |
| Appointment | Activity1:1 | Fully supported | |
| Note (Annotation) | Activity Note1:1 | Fully supported | |
| Product | Product1:1 | Fully supported | |
| Competitor | Competitor1:1 | Fully supported | |
| Territory | Tag1:1 | Fully supported | |
| Campaign | Source1:1 | Fully supported | |
| Quote / Order / Invoice | No Equivalent1: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.
Function 365 gotchas
AI-assisted notes are proprietary — verify clinical-record export coverage
NHS Number format must be preserved exactly
Implementation specialist time is paid extra at £55/session
GDPR consent timestamps are regulatory artefacts
Nutshell gotchas
Contact tier limits enforced on import
No bulk API endpoint requires paginated extraction
Email sequences not exportable via API
Foundation plan disables key sales features
Pair-specific challenges
Migration approach
Audit Dynamics schema and export entity inventory
We connect to your Dynamics 365 instance using a service account with read-only permissions scoped to the entities confirmed in the migration plan. We extract the full entity inventory — Account, Contact, Lead, Opportunity, Task, PhoneCall, Email, Appointment, Note, Product, Competitor, and Campaign — plus all active custom fields on each entity. We generate a record-count breakdown by entity and stage, flagging entities with zero records (to skip), entities with bulk records requiring batched API writes, and entities with no Nutshell equivalent (Quotes, Orders, Invoices) that require the CSV export and rebuild checklist. This audit output becomes the migration specification that your team reviews before we proceed.
Design Nutshell schema and create custom fields
Before any data moves, we create all required Nutshell custom fields: probability_percent, stage_name_original, source_system_id, original_created_date, and any custom fields from Dynamics that cannot map to standard Nutshell fields. We map Opportunity stage names to Nutshell Lead status values value-by-value, documenting any stage that has no direct Nutshell equivalent. We also map Dynamics Lead status codes and industry codes to Nutshell pick-list values. This step runs in parallel with your Nutshell admin's setup of any new Nutshell users that the pre-migration audit identified as missing.
Run a sample migration with field-level diff
A representative slice of 100–500 records migrates first — typically a mix of Accounts with associated Contacts, a sample of Leads, and a mix of Opportunities representing each pipeline stage. We generate a field-level diff comparing source values against destination values for every mapped field. You review the diff in a shared spreadsheet, verifying that custom field mapping, stage name translation, owner resolution, and activity attachment are correct before we commit to the full run. Any field mapping errors identified here are corrected and the sample re-runs until you sign off.
Execute full migration with delta pickup window
The full migration runs against Nutshell's JSON-RPC API using an impersonation-enabled API key scoped to your Nutshell account. Data moves in dependency order: Accounts first (required for Contact foreign keys), then Contacts and Leads, then Opportunities (merged into Leads), then Activities attached to each record. A delta-pickup window of 24–48 hours opens at cutover, capturing any records modified in Dynamics during the migration run. All operations are logged to an audit trail, and one-click rollback is available if reconciliation counts fail. Quote, Order, and Invoice records are exported as CSV files and attached to the corresponding migrated Lead record as documentation for the rebuild step.
Deliver rebuild reference and post-migration reconciliation
After the migration completes, we deliver: a reconciliation report comparing source and destination record counts by entity; a rebuild checklist for Quotes, Orders, Invoices, Territories, and Power Automate flows; a Dynamics workflow export (JSON) for your Nutshell admin to reference when rebuilding automations; and a field-level diff archive from the sample run for audit purposes. We run a final record-count verification and spot-check 50 records for data accuracy before closing the migration engagement.
Platform deep dives
Function 365
Source
Strengths
Weaknesses
Nutshell
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 Function 365 and Nutshell.
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
Function 365: Not publicly documented.
Data volume sensitivity
Function 365 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 Function 365 to Nutshell migration scoping. Not seeing yours? Book a call.
Walk through your Function 365 to Nutshell migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Function 365
Other ways to arrive at Nutshell
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.