CRM migration

Migrate from Insightly CRM to Microsoft Dynamics 365 Sales

Field-level mapping, validation, and rollback between Insightly CRM and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .

Insightly CRM logo

Insightly CRM

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

70%

7 of 10

objects map 1:1 between Insightly CRM and Microsoft Dynamics 365 Sales .

Complexity

CModerate

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Insightly CRM to Microsoft Microsoft Dynamics 365 Sales is a migration between platforms with fundamentally different relationship models. Insightly uses explicit link records to associate Contacts with Organizations; Microsoft Dynamics 365 Sales uses native Account-Contact lookups with a parent-child hierarchy that is automatic once AccountId is set on the Contact. We resolve this by importing Organizations first, then Contacts with AccountId resolved from the Organization mapping, and reconstructing any supplemental link records as Contact Account associations. Opportunities carry custom-named pipeline stages that require an explicit stage-name mapping table before migration. Notes become Dynamics Annotations. Custom fields on every object require a FIELD_NAME metadata lookup against Insightly's /CustomFields/{objectName} endpoint before writes; without this step the fields are silently omitted. Workflow automations, AppConnect integrations, and project management configurations do not migrate as code; we deliver a written inventory for the customer's admin to rebuild in Dynamics or Power Automate.

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

Insightly CRM logo

Insightly CRM

What's pushing teams away

  • Workflow automation and AI Copilot are locked behind the Professional tier, pushing teams with automation needs to higher-cost plans quickly as headcount grows.
  • Custom field handling requires referencing FIELD_NAME in API calls, and the UI documentation is described as incomplete and overwhelming by power users.
  • Setup is time-consuming, particularly for automation configuration, with users reporting frequent timeouts during the process.
  • Limited customization compared to enterprise CRMs — some users find field-level tailoring insufficient for complex sales processes.

Choosing

Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales

What's pulling them in

  • Deep Microsoft 365, Teams, and Outlook integration makes Microsoft Dynamics 365 Sales a natural fit for Microsoft-first organizations already invested in that ecosystem
  • Sales Enterprise and Premium tiers offer unlimited custom tables and advanced AI-driven forecasting and predictive analytics not available in lower tiers
  • Professional tier pricing at $65 per user per month offers a lower entry cost than Salesforce for SMB teams with straightforward CRM needs
  • Flexible customization options allow businesses to build bespoke apps, tailor forms and views, and integrate with other Dynamics 365 modules
  • Microsoft Copilot AI tools are embedded directly into the sales workflow on Enterprise and Premium, automating routine tasks and providing deal intelligence

Object mapping

How Insightly CRM objects map to Microsoft Dynamics 365 Sales

Each row shows how a Insightly CRM 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.

Insightly CRM

Organization

maps to

Microsoft Dynamics 365 Sales

Account

1:1
Fully supported

Insightly Organizations map directly to Microsoft Microsoft Dynamics 365 Sales Account records. OrganizationId serves as the dedupe key during import. Account is created first, before any Contact import, so that the AccountId lookup is available at Contact insert time. Address fields (street, city, state, postal code, country) map directly to the Account address composite. Industry and annual revenue fields migrate as custom fields if they are non-standard Insightly fields.

Insightly CRM

Contact

maps to

Microsoft Dynamics 365 Sales

Contact

1:1
Fully supported

Insightly Contacts map to Microsoft Dynamics 365 Sales Contact records. Each Contact receives the corresponding AccountId from the Organization mapping. Email, phone, title, and address fields map 1:1. Any duplicate email addresses detected in the Insightly dataset are held in a reconciliation queue for the customer to resolve before final import. Contact links originally managed via Insightly's Add/Update Link endpoints are resolved as AccountId on the Contact record, which is the Dynamics-native equivalent.

Insightly CRM

Lead

maps to

Microsoft Dynamics 365 Sales

Lead

1:1
Fully supported

Insightly Leads map directly to Microsoft Dynamics 365 Sales Lead records. Lead status from Insightly maps to the configured Lead Status picklist in Dynamics, with any custom Insightly status values added to the Dynamics picklist before migration. Lead scores, if stored as Insightly custom fields, migrate to custom numeric fields on the Lead.

Insightly CRM

Opportunity

maps to

Microsoft Dynamics 365 Sales

Opportunity

1:1
Fully supported

Insightly Opportunities map to Microsoft Dynamics 365 Sales Opportunity records. The OpportunityName maps to Dynamics subject or name field, and estimated value, close date, and probability migrate directly. Pipeline stage is a custom string in Insightly and requires an explicit mapping table entry per stage name to the Dynamics Sales Process stage values. We configure the Sales Process and stage entries in Dynamics before migration begins.

Insightly CRM

Pipeline Stage

maps to

Microsoft Dynamics 365 Sales

Sales Process + Stage

lossy
Fully supported

Insightly pipeline stages are custom-named strings attached to each Opportunity. We extract all distinct stage names from the Insightly export, add them as Stage values in a pre-configured Dynamics Sales Process, assign probability percentages matching Insightly where available, and map each Opportunity's stage string to the new Dynamics stage value during the Opportunity import transform.

Insightly CRM

Note

maps to

Microsoft Dynamics 365 Sales

Annotation

1:1
Fully supported

Insightly Notes map to Microsoft Dynamics 365 Sales Annotation records on the Microsoft Dataverse layer. Note body, author, and creation timestamp migrate. Each Note's link to its parent record (Contact, Organization, or Opportunity) is reconstructed as a Regarding (objectid) reference on the Annotation during import, preserving the full note context inside the Dynamics timeline.

Insightly CRM

Task

maps to

Microsoft Dynamics 365 Sales

Task

1:1
Fully supported

Insightly Tasks linked to Contacts, Organizations, or Opportunities migrate to Dynamics Task records with ActivityParty resolution. Task status values (not started, in progress, completed, deferred) map to the corresponding Dynamics Task Status values. OwnerId is resolved by email match against the Dynamics User table.

Insightly CRM

Tag

maps to

Microsoft Dynamics 365 Sales

Multi-Select Picklist

lossy
Fully supported

Insightly tags stored as flat string arrays on Contacts, Organizations, and Opportunities migrate to Dynamics multi-select picklist fields on the corresponding entity. We create the field in the Dynamics schema before migration, populate the picklist values with the distinct tag set, and write the tag arrays as semicolon-delimited values at import time.

Insightly CRM

Custom Field

maps to

Microsoft Dynamics 365 Sales

Custom Field

lossy
Fully supported

Insightly custom fields on Contacts, Organizations, Opportunities, and Leads require a FIELD_NAME metadata lookup via /CustomFields/{objectName} before any write operation. We retrieve all custom field definitions at the start of migration, build a FIELD_NAME-to-API-name reference table, and create matching custom fields in the Dynamics schema before data import begins. Each custom field is created in Dynamics with the equivalent field type (text, number, date, picklist) before records are written.

Insightly CRM

Custom Object

maps to

Microsoft Dynamics 365 Sales

Custom Entity

1:1
Fully supported

Insightly user-defined Custom Objects migrate to Dataverse custom entities in Microsoft Dynamics 365 Sales . The destination entity schema is created first via the Dataverse API, including all custom fields and any lookup relationships to standard entities (Contact, Account, Opportunity). Data is imported last, after all parent standard entities are in place, to satisfy any required lookups.

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.

Insightly CRM logo

Insightly CRM gotchas

High

Free plan record cap applies to all Insightly objects

High

API rate limits vary by plan and reset daily

Medium

Custom fields require FIELD_NAME lookup before writes

Medium

XML export only captures default fields for migrations out

Medium

Link relationships must be rebuilt via dedicated endpoints

Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales gotchas

High

Professional tier 15-table custom table limit blocks migrations

High

October 2024 pricing increase applies at renewal for all customers

Medium

Custom fields must be created in the UI before API writes

Medium

Power Platform request limits apply to bulk migrations

Medium

Activity records orphaned to inactive owners fail silently

Pair-specific challenges

  • Insightly link records must be reconstructed as Account lookups

    Insightly does not embed Contact-Organization relationships in the Contact record itself. Instead it uses explicit link records created via the /Links endpoint. Microsoft Dynamics 365 Sales uses a native AccountId field on the Contact record to establish the parent Account relationship. During migration we export link records separately, import Organizations (to Accounts) first, then import Contacts with AccountId populated from the Organization mapping. If the Insightly dataset contains Contacts with multiple Organization links, we flag this during scoping because Dynamics Contact supports only one primary AccountId per Contact, and the customer must decide which Organization takes priority.

  • Custom fields silently drop without FIELD_NAME metadata lookup

    Insightly does not expose custom field IDs in record objects. Writing to a Contact custom field without first retrieving the FIELD_NAME from /CustomFields/Contacts results in the write silently ignoring the field. We retrieve all custom field metadata per object at migration start, build a FIELD_NAME reference table, and use it consistently across all record writes. Customers who have exported Insightly data via the native XML export and then attempted to load it into another system commonly report missing custom fields because the XML export captures only standard fields.

  • Insightly pipeline stage names require explicit mapping table

    Insightly Opportunity stages are free-form strings stored per Opportunity with no centralized enumerated schema. Microsoft Dynamics 365 Sales Opportunity stages are defined in a Sales Process with specific Stage values. We extract all distinct stage name strings from the Insightly export, create corresponding Stage entries in the destination Sales Process before migration, and run a stage-name mapping transform during the Opportunity import. If the customer has renamed stages inconsistently across pipelines (e.g., 'Negotiation' in one pipeline and 'In Negotiation' in another), we consolidate to a single stage name per Dynamics pipeline and document the merge for the customer's review.

  • XML export omits custom fields entirely

    Insightly's native export-to-ZIP function produces XML files that include only default (standard) fields. Custom fields, custom objects, and link records are excluded. Customers who rely on the native export for migration discover after cutover that all custom field data is absent. We bypass the XML export entirely and pull all records directly from the Insightly REST API, including custom fields via the FIELD_NAME approach and link records via the /Links endpoints. We inform customers of this limitation before migration begins.

  • User provisioning requires Active Directory or Entra ID coordination

    Microsoft Dynamics 365 Sales uses Azure Active Directory (now Microsoft Entra ID) for user identity. Insightly Users do not have a direct mapping to Dynamics Users without an Entra ID match. We extract every distinct Owner referenced on Insightly records, match by email against the destination Dynamics org's User table, and hold any unmatched owners in a reconciliation queue. The customer's Dynamics admin must provision Entra ID-synced users for any Insightly owners who do not have a corresponding Dynamics User before the migration can complete record assignment.

Migration approach

Six steps for a successful Insightly CRM to Microsoft Dynamics 365 Sales data migration

  1. Discovery and record count audit

    We audit the Insightly source instance across plan tier, record counts per object type (Organizations, Contacts, Leads, Opportunities, Tasks, Notes), custom field count per object, pipeline count and stage names, active tag usage, and any custom object definitions. We also extract all link records from the /Links endpoints to establish the Contact-to-Organization relationship map. The output is a written migration scope including record counts, a preliminary stage-name mapping table, and a custom field inventory requiring FIELD_NAME metadata retrieval.

  2. FIELD_NAME metadata retrieval and schema creation

    We query /CustomFields/{objectName} for Contacts, Organizations, Opportunities, Leads, and any custom objects to build the FIELD_NAME reference table. We use this to create matching custom fields in the Microsoft Dynamics 365 Sales schema via the Dataverse API before any data import. We also configure the Sales Process with stage entries mapped from the Insightly pipeline stage names, add tag-based multi-select picklist fields, and provision any custom entities for Insightly custom objects.

  3. Organization and Account import

    We import Organizations first as Dynamics Account records. The OrganizationId becomes a reference key held in memory for the Contact import phase. Address fields, industry, and standard fields map directly. We run a reconciliation check to confirm the Account count matches the Insightly Organization count before proceeding.

  4. Contact import with AccountId resolution

    We import Insightly Contacts as Dynamics Contacts, resolving each Contact's AccountId from the Organization mapping. Link records from the Insightly /Links export are applied as AccountId on each Contact. Any Contacts with multiple Organization links are flagged and escalated to the customer's admin for resolution before the import batch closes. Email deduplication is applied to the Contact set.

  5. Lead, Opportunity, and Activity migration

    Leads migrate directly to Dynamics Leads with status mapping. Opportunities migrate with stage name transformation applied from the stage mapping table, AccountId resolved from the Organization mapping, and OwnerId resolved by email match against the Dynamics User table. Tasks and Notes migrate via the Dataverse API with Regarding references set to the parent Contact, Account, or Opportunity.

  6. Cutover, delta sync, and automation handoff

    We freeze Insightly writes during the cutover window, run a final delta migration for any records modified during migration, then deliver the written Workflow and automation inventory to the customer's admin. We provide a one-week post-cutover window to address reconciliation issues. Workflows, AppConnect integrations, and Power Automate flows do not migrate as part of the data scope and are documented separately for the customer's admin or implementation partner to rebuild.

Platform deep dives

Context on both ends of the pair

Insightly CRM logo

Insightly CRM

Source

Strengths

  • CRM, marketing automation, and project management unified in one subscription, reducing tool sprawl for SMBs.
  • Free plan for 2 users and a 2,500-record cap provides a low-risk evaluation environment.
  • AppConnect delivers 500+ no-code integrations with mainstream business tools without requiring developer resources.
  • Modern UI with faster onboarding compared to legacy CRM alternatives, backed by positive ease-of-setup scores on G2.
  • Project creation directly from closed Opportunities keeps post-sale work connected to the originating deal.

Weaknesses

  • Workflow automation and AI Copilot require the Professional tier, making the Plus plan unsuitable for teams with automation needs.
  • Custom field handling requires FIELD_NAME API lookups, which adds complexity to integrations and migrations.
  • Setup time and reported timeouts during automation configuration create friction for new administrators.
  • Documentation is described as incomplete and overwhelming by power users, according to G2 review themes.
Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales

Destination

Strengths

  • Native integration with Microsoft 365, Teams, Outlook, and SharePoint for unified productivity workflow
  • Unlimited custom tables and complex workflows on Enterprise tier enable deep customization for complex sales processes
  • AI-driven predictive analytics and deal intelligence on Enterprise and Premium tiers help sales teams prioritize pipeline
  • Dataverse unified data layer provides a consistent API and data model across all Dynamics 365 and Power Platform apps
  • Strong security model with Field-Level Security and Record Ownership rules for governance-conscious enterprises

Weaknesses

  • Sales Professional tier caps custom tables at 15, creating a migration ceiling for highly customized SMB environments
  • October 2024 pricing increases of $15 per user across all tiers apply to existing customers upon renewal
  • Implementation typically requires costly certified partners, adding 30–50% to total project cost
  • Updates and platform releases can disrupt customizations and plugins, requiring regression testing after each wave
  • Non-Microsoft integrations require additional configuration or middleware, limiting flexibility for heterogeneous tech stacks

Complexity grading

How hard is this migration?

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

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Insightly CRM and Microsoft Dynamics 365 Sales .

  • Object compatibility

    B

    2 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

    C

    Insightly CRM: 10 requests per second; daily limit varies by plan (starting at 1,000 requests/day for free plan).

  • Data volume sensitivity

    B

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

Estimator

Estimate your Insightly CRM to Microsoft Dynamics 365 Sales 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 Insightly CRM to Microsoft Dynamics 365 Sales data migrations

Answers to the questions buyers ask most during Insightly CRM to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Insightly CRM to Microsoft Dynamics 365 Sales migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between two and four weeks for accounts under 10,000 total records with no custom objects and a single pipeline. Migrations with multiple Insightly pipelines, custom objects, large Contact sets with complex link relationships, or more than 50 custom fields per object move to five to ten weeks because of FIELD_NAME metadata retrieval overhead, stage mapping design, and Dataverse API batch sequencing.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Insightly CRM.
Land in Microsoft Dynamics 365 Sales , 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