CRM migration
Field-level mapping, validation, and rollback between Ascora and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Ascora
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
9 of 10
objects map 1:1 between Ascora and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
48–72 hours
Overview
Teams move from Ascora to Dynamics 365 Sales when they need native CRM capabilities — contact management, lead scoring, pipeline forecasting — combined with broader ERP integration across the Microsoft ecosystem. Ascora is a field service platform built for trade businesses (electricians, plumbers, HVAC, construction), with a data model centered on Customers, Sites, Jobs, Quotes, Invoices, and Custom Form Responses. Dynamics 365 Sales is a Dataverse-backed CRM with standard Account, Contact, Lead, and Opportunity objects plus unlimited custom tables on Enterprise licensing. The migration carries everything Ascora stores natively into Dataverse-based custom tables, with Jobs mapped as custom Job__c records, Quotes as custom Quote__c records (linked to Opportunities), and Invoices as custom Invoice__c records. Technician assignments resolve by email match against Dynamics users. Custom form answers field-map into custom fields on the parent record. Workflows, automations, and notification rules have no Ascora-native equivalent to migrate — FlitStack can export Ascora configuration for reference. The migration uses scoped read-only API access on Ascora, bulk API writes into Dataverse, and a delta-pickup window during cutover.
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
Ascora platform overview
Scorecard, SWOT, gotchas, and pricing for Ascora.
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 Ascora 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.
Ascora
Customer
Microsoft Dynamics 365 Sales
Account
1:1Direct map. Ascora Customer full name becomes Account Name, primary email becomes Email, primary phone becomes Telephone 1. Multi-site customers spawn one Account with multiple Address records keyed by site location name. The site location name is stored in the Address Name field to provide a human-readable label for each site within the Dynamics 365 Sales Account.
Ascora
Site
Microsoft Dynamics 365 Sales
Account Address / Custom Site__c table
1:1Site is a sub-record of Customer. Maps to Account Address fields (street, city, state, postal code, country) plus a Site_Location__c custom field for the location name. Latitude/longitude store as custom decimal fields. Multi-site customers produce one Account with N Address records or one Account and N Site__c custom table records.
Ascora
Job
Microsoft Dynamics 365 Sales
Custom Dataverse table: Job__c
1:1Ascora Jobs have no direct CRM equivalent. A custom Dataverse table (Job__c) is created with fields for Job_Number__c, Job_Title__c, Job_Status__c (custom picklist with original Ascora values), Job_Description__c, Job_Priority__c, Job_Type__c, Estimated_Duration__c, Actual_Start__c, Actual_End__c, Site__c (lookup to Account or Site__c), Technician__c (lookup to User or custom field).
Ascora
Quote
Microsoft Dynamics 365 Sales
Opportunity + Custom Quote__c table
many:1Ascora Quotes merge into two constructs: a custom Quote__c table holding quote number, status, expiry, and total, plus an Opportunity record when the quote represents a billable project. Quote Status (Draft, Sent, Approved, Expired) maps to a custom picklist. Approval timestamps and approver name store as custom datetime and text fields on the Quote__c table.
Ascora
Quote Line Item
Microsoft Dynamics 365 Sales
Opportunity Product / Custom QuoteLineItem__c
1:1Quote line items map directly to Opportunity Products (Product Name, Quantity, Unit Price, Manual Discount) when tied to an Opportunity, or to a custom QuoteLineItem__c table when Quote maps to the custom Quote__c table. Each line preserves the original Ascora description and discount amount as custom fields.
Ascora
Invoice
Microsoft Dynamics 365 Sales
Custom Invoice__c table
1:1Invoices have no native Dynamics 365 Sales equivalent. A custom Invoice__c table is created with Invoice_Number__c, Account__c (lookup), Invoice_Status__c, Amount__c, Due_Date__c, Customer_PO__c, Payment_Terms__c, and Original_Invoice_Number__c. Invoice status values (Paid, Overdue, Void) map to a custom picklist. These fields enable full invoice lifecycle tracking within Dynamics 365 Sales.
Ascora
Job Activity (call, note, task log)
Microsoft Dynamics 365 Sales
Task
1:1Job-related activities — technician notes, site visit logs, status-change events — migrate as Dynamics 365 Sales Tasks with Subject, Description, Actual_Duration__c (custom), Technician__c (User lookup or custom field), and Scheduled_Date__c. Original Ascora activity timestamps and owners are preserved. Each task retains its original creation date for audit compliance.
Ascora
Custom Form Response
Microsoft Dynamics 365 Sales
Custom fields on Job__c / Custom FormResponse__c table
1:1Ascora Custom Form questions map field-by-field to custom fields on Job__c or a dedicated FormResponse__c custom table linked to Job__c. Form name and question label are preserved as metadata. Multi-question forms generate multiple custom fields with type-aware mapping (text, number, date, picklist).
Ascora
User / Technician
Microsoft Dynamics 365 Sales
User
1:1Ascora user and technician records are resolved by email address match against Dynamics 365 Sales Users. Unmatched technicians are flagged before migration; your team either invites them to Dynamics first or assigns their records to a fallback owner. Job__c records land with the resolved User as Owner.
Ascora
Attachment / File
Microsoft Dynamics 365 Sales
SharePoint / Annotation
1:1Ascora file attachments are downloaded and re-uploaded to SharePoint (the native Dynamics 365 Sales document store) or stored as Dataverse Annotations with the ParentObjectId pointing to the parent Job__c or Account record. Original filename preserved as name and the Ascora file URL stored as Ascora_File_URL__c custom field for traceability.
| Ascora | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Customer | Account1:1 | Fully supported | |
| Site | Account Address / Custom Site__c table1:1 | Fully supported | |
| Job | Custom Dataverse table: Job__c1:1 | Fully supported | |
| Quote | Opportunity + Custom Quote__c tablemany:1 | Fully supported | |
| Quote Line Item | Opportunity Product / Custom QuoteLineItem__c1:1 | Fully supported | |
| Invoice | Custom Invoice__c table1:1 | Fully supported | |
| Job Activity (call, note, task log) | Task1:1 | Fully supported | |
| Custom Form Response | Custom fields on Job__c / Custom FormResponse__c table1:1 | Fully supported | |
| User / Technician | User1:1 | Fully supported | |
| Attachment / File | SharePoint / Annotation1: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.
Ascora gotchas
No documented public REST API with published rate limits
Custom Forms use Word template field codes with no structured schema export
Xero two-way sync creates reconciliation risk during migration
Excel export is the primary bulk data extraction mechanism
No pricing transparency — plan tiers are not publicly documented
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
Schema discovery and export planning
We connect to Ascora using read-only API credentials and enumerate all active custom forms, custom fields, and object relationships. We document every Job, Quote, and Invoice status value, the technician/user list, and the file attachment inventory. This produces an Ascora Data Dictionary used to design the Dataverse schema (Job__c, Quote__c, Invoice__c custom tables, address handling, and custom fields) and the field-mapping specification delivered before any data moves.
Data quality assessment and cleansing
We profile Ascora records for duplicates (same customer name with variant spellings), incomplete addresses, jobs without an assigned technician, and orphaned attachments. We deliver a data-quality report to your team with exclusion and merge rules. Customers without email are flagged for technician fallback assignment. Records failing validation are quarantined and reported separately — we do not silently drop data. The report also highlights records with missing status values that may require manual review before migration.
Build Dataverse custom tables and resolve users
We create the Job__c, Quote__c, Invoice__c, Site__c (if needed), and FormResponse__c custom tables in your Dynamics 365 Sales Dataverse environment with all custom columns, picklists, and lookups. Technicians are matched by email against Dynamics 365 Sales Users; unmatched technicians are flagged in the owner-resolution report for your team to invite or reassign. No Job__c record lands without a valid Owner or a documented fallback.
Run sample migration with field-level diff
A representative slice — typically 100–300 records spanning customers, sites, jobs, quotes, and a few file attachments — migrates first. We generate a field-level diff report comparing the exported Ascora JSON against the written Dataverse records so you can verify job status mapping, quote-to-opportunity linking, site-address handling, and technician resolution before the full run commits. The diff also highlights any data truncation or formatting changes introduced by the field mapping logic.
Execute full migration and cutover delta-pickup
Full migration runs: Customers → Accounts with address records; Jobs → Job__c; Quotes → Quote__c + Opportunity where applicable; Invoices → Invoice__c; Activities → Tasks; Files → SharePoint with annotation records. During the cutover window (typically 48 hours), your team continues working in Ascora. A delta-pickup captures records modified or created in that window and applies them to Dynamics 365 Sales before go-live. Audit log records every operation; one-click rollback is available if reconciliation uncovers unexpected divergence.
Platform deep dives
Ascora
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Ascora and Microsoft Dynamics 365 Sales .
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Ascora and Microsoft Dynamics 365 Sales .
Object compatibility
All 8 core objects map 1:1 between Ascora and Microsoft Dynamics 365 Sales .
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
Ascora: Not publicly documented.
Data volume sensitivity
Ascora 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 Ascora to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Ascora 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 Ascora
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.