CRM migration

Migrate from Function 365 to Nutshell

Field-level mapping, validation, and rollback between Function 365 and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.

Function 365 logo

Function 365

Source

Nutshell

Destination

Nutshell logo

Compatibility

93%

14 of 15

objects map 1:1 between Function 365 and Nutshell.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Function 365 logo

Function 365

What's pushing teams away

  • Functional Medicine + private-healthcare niche means general medical practices, NHS-primary settings, or non-UK clinics often have a tighter fit with Cliniko, Pabau, or country-specific PMS.
  • Implementation requires a paid specialist session (£55/session) plus optional onsite training (£350) — small clinics that expected pure self-serve may find the onboarding gate frustrating.
  • Smaller installed base than Cliniko, Pabau, or Halaxy means fewer integrations, fewer third-party services, and less peer benchmarking for procurement.
  • No public API documentation surfaced in research; integration with lab vendors, payment processors, or downstream EHRs may require vendor coordination.
  • Solo Practitioner tier (£132/month) is steeper than freemium-style PMS competitors; smallest practices may find the entry price hard to justify against single-clinician alternatives.

Choosing

Nutshell logo

Nutshell

What's pulling them in

  • Lowest cost entry point among mid-market CRMs—Foundation plan starts at $13/user/month, making it accessible for teams validating CRM fit before committing.
  • Integrated sales automation and email sequencing on Pro plans without requiring a separate email marketing platform, per verified Capterra reviews.
  • Consistently praised for intuitive interface and fast onboarding, with case studies reporting 100% team adoption rates within initial deployment periods.
  • Strong customer support responsiveness cited across G2 reviews, with dedicated support tiers available on Enterprise plans.
  • Native integrations with WhatsApp, Facebook Messenger, Instagram, and Slack reduce reliance on third-party middleware for common communication channels.

Object mapping

How Function 365 objects map to Nutshell

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

maps to

Nutshell

Company

1:1
Fully supported

Direct 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

maps to

Nutshell

Person

1:1
Fully supported

Direct 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

maps to

Nutshell

Lead

1:1
Fully supported

Direct 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

maps to

Nutshell

Lead

many:1
Fully supported

Opportunities 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)

maps to

Nutshell

Product + Custom Note

1:1
Fully supported

Nutshell 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

maps to

Nutshell

Activity

1:1
Fully supported

Direct 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

maps to

Nutshell

Activity

1:1
Fully supported

Dynamics 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)

maps to

Nutshell

Activity

1:1
Fully supported

Dynamics 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

maps to

Nutshell

Activity

1:1
Fully supported

Dynamics 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)

maps to

Nutshell

Activity Note

1:1
Fully supported

Dynamics 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

maps to

Nutshell

Product

1:1
Fully supported

Nutshell 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

maps to

Nutshell

Competitor

1:1
Fully supported

Direct 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

maps to

Nutshell

Tag

1:1
Fully supported

Nutshell 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

maps to

Nutshell

Source

1:1
Fully supported

Dynamics 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

maps to

Nutshell

No Equivalent

1:1
Fully supported

Nutshell 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.

Gotchas + challenges

What specifically takes care here

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 logo

Function 365 gotchas

High

AI-assisted notes are proprietary — verify clinical-record export coverage

High

NHS Number format must be preserved exactly

Medium

Implementation specialist time is paid extra at £55/session

Medium

GDPR consent timestamps are regulatory artefacts

Nutshell logo

Nutshell gotchas

High

Contact tier limits enforced on import

Medium

No bulk API endpoint requires paginated extraction

Medium

Email sequences not exportable via API

Medium

Foundation plan disables key sales features

Pair-specific challenges

  • Opportunity-to-Lead merge inverts your pipeline reporting model

    Dynamics 365 treats Leads and Opportunities as separate objects with a conversion step that moves data from Lead to Opportunity. Nutshell collapses both into a single Lead entity. This means your Dynamics pipeline stage names (Proposal, Negotiation, Closed Won) become custom field values on Nutshell Leads rather than native pipeline stages. Nutshell's native pipeline stage feature operates on a separate visual Kanban model that does not automatically inherit the migrated Opportunity stage values — your admin must either manually reassign every record or use Nutshell's filtering views to segment by the custom stage field. We preserve the original stage name in a custom text field (Stage_Name_Original__c) so reporting continuity is recoverable but requires a manual setup step on the Nutshell side after data lands.

  • Quote, Order, and Invoice entities have no Nutshell destination

    Dynamics 365 Sales Professional and Enterprise include native Quote, Order, and Invoice entities with full lifecycle management (Quote → Order → Invoice → Fulfillment). Nutshell has no equivalent entities. The Quote-to-Order-to-Invoice chain cannot migrate as a connected workflow. FlitStack AI exports all Quote and Order metadata (customer reference, line items, totals, status, dates) as CSV attachments on the corresponding migrated Lead record and provides a rebuild checklist for your admin to recreate the quoting workflow using a dedicated CPQ tool such as Qwilr, PandaDoc, or Nutshell's built-in (limited) quote feature. This is not data loss — it is a documented rebuild item that must be planned before cutover.

  • Nutshell's custom field model limits schema extensibility on Deals

    Nutshell supports custom fields on Company, Person, and Lead entities, but does not support custom objects or a __c-style field naming convention. Your Dynamics custom fields on Opportunity (probability weights, weighted revenue, custom deal type pick-lists) must map to custom fields on the Nutshell Lead entity. If your Dynamics instance has more than 20 custom fields on Opportunity, you may exceed the practical custom-field density for a single Lead record in Nutshell. We identify the field-count ceiling during scoping and present options: field consolidation (merge low-value fields), Tag-based storage (convert pick-list values to Tags), or rebuilding as a separate tracking document for the Nutshell admin.

  • Territory assignments become Tags with no native reporting rollup

    Dynamics 365 Territory management lets you assign records to geographic or organizational territories with rollup reporting at the territory level. Nutshell has no native Territory object — your territory names migrate as Tags applied to the relevant records, but Nutshell's reporting views cannot roll up pipeline value by Tag automatically. Pipeline forecasts by territory require manual filtering in Nutshell's List view or export to a BI tool. If territory-based reporting is a critical KPI for your team, flag this during scoping so we can plan an alternative reporting structure before migration day.

  • User and owner resolution requires exact email matching against Nutshell users

    Dynamics 365 user records map to Nutshell team members via email address match. Any Dynamics user whose email does not correspond to an active Nutshell user at cutover time gets flagged as an unmapped owner and their records are reassigned to a fallback Nutshell user (configurable by you before migration). Because Nutshell's API uses impersonation tokens scoped to specific user emails, a mismatch at this stage causes records to land under the API service account rather than the correct rep. We perform a pre-migration user audit comparing Dynamics user emails against Nutshell user emails and surface discrepancies 48 hours before the migration run so your team can provision missing Nutshell users or confirm fallback assignments.

Migration approach

Six steps for a successful Function 365 to Nutshell data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

Function 365 logo

Function 365

Source

Strengths

  • Integrated PMS (booking, notes, prescriptions, billing, lab orders, telehealth) in one product.
  • GDPR and HIPAA support built into the data model.
  • Transparent per-licence published pricing on the vendor shop.
  • AI-assisted clinical note generation reduces practitioner admin time.
  • Tiered licence pricing rewards larger practices with lower per-seat cost.

Weaknesses

  • Niche fit (UK private healthcare + Functional Medicine) — not suited for NHS-primary or non-UK general practice.
  • Implementation specialist time billed separately (£55/session) plus £350 onsite training.
  • Smaller installed base than Cliniko/Pabau means thinner integration ecosystem.
  • No public API documentation visible in research.
  • Solo Practitioner price (£132/month) higher than some freemium-style PMS competitors.
Nutshell logo

Nutshell

Destination

Strengths

  • Simple, intuitive interface with minimal learning curve for sales teams new to CRM
  • Per-seat pricing is transparent and predictable, with annual billing reducing monthly cost
  • Full data export tool available for all account data including backups
  • Open JSON-RPC API allows programmatic access to all core objects
  • Native multichannel engagement (email, SMS, WhatsApp) without third-party add-ons for communication

Weaknesses

  • Reporting and analytics are considered weak, requiring manual Excel exports for detailed analysis
  • No bulk API endpoint—migration requires paginated API reads that must be rate-limited carefully
  • JSON-RPC API is less common than REST, requiring custom integration code compared to standard REST CRMs
  • Add-on costs (Forms, Nutshell IQ, Email Marketing) are per-company charges that stack on top of per-seat pricing
  • Feature restrictions on entry-level plans mean teams often need mid-tier to get basic automation

Complexity grading

How hard is this migration?

Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Function 365 and Nutshell.

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Function 365: Not publicly documented.

  • Data volume sensitivity

    B

    Function 365 doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Function 365 to Nutshell migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Function 365 to Nutshell data migrations

Answers to the questions buyers ask most during Function 365 to Nutshell migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most Function 365 (Dynamics 365 Sales) to Nutshell migrations complete in 48–72 hours of clock time for under 50,000 total records. Larger instances with 500,000+ records or more than 50 custom fields per entity extend to 5–10 days. The longest single step is the scoping audit and field-mapping design — that planning phase typically runs 3–5 business days before any data moves, so the full engagement from kickoff to go-live is usually 1–2 weeks for a mid-size CRM.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Function 365.
Land in Nutshell, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day