CRM migration
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
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
7 of 10
objects map 1:1 between Insightly CRM and Microsoft Dynamics 365 Sales .
Complexity
CModerate
Timeline
2-4 weeks
Overview
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.
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
Insightly CRM platform overview
Scorecard, SWOT, gotchas, and pricing for Insightly CRM.
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 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
Microsoft Dynamics 365 Sales
Account
1:1Insightly 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
Microsoft Dynamics 365 Sales
Contact
1:1Insightly 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
Microsoft Dynamics 365 Sales
Lead
1:1Insightly 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
Microsoft Dynamics 365 Sales
Opportunity
1:1Insightly 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
Microsoft Dynamics 365 Sales
Sales Process + Stage
lossyInsightly 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
Microsoft Dynamics 365 Sales
Annotation
1:1Insightly 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
Microsoft Dynamics 365 Sales
Task
1:1Insightly 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
Microsoft Dynamics 365 Sales
Multi-Select Picklist
lossyInsightly 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
Microsoft Dynamics 365 Sales
Custom Field
lossyInsightly 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
Microsoft Dynamics 365 Sales
Custom Entity
1:1Insightly 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.
| Insightly CRM | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Organization | Account1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Sales Process + Stagelossy | Fully supported | |
| Note | Annotation1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Tag | Multi-Select Picklistlossy | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Custom Object | Custom Entity1: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.
Insightly CRM gotchas
Free plan record cap applies to all Insightly objects
API rate limits vary by plan and reset daily
Custom fields require FIELD_NAME lookup before writes
XML export only captures default fields for migrations out
Link relationships must be rebuilt via dedicated endpoints
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 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.
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.
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.
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.
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.
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
Insightly CRM
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Insightly CRM and Microsoft Dynamics 365 Sales .
Object compatibility
2 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
Insightly CRM: 10 requests per second; daily limit varies by plan (starting at 1,000 requests/day for free plan).
Data volume sensitivity
Insightly CRM 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 Insightly CRM to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Insightly CRM
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.