CRM migration
Field-level mapping, validation, and rollback between Fergus and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Fergus
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
11 of 12
objects map 1:1 between Fergus and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
48–72 hours
Overview
Fergus organizes field-service work around Jobs, Clients, Sites, and Quotes with built-in pricing tiers and Xero or QuickBooks accounting integration. Dynamics 365 Sales is a CRM that tracks Leads, Accounts, Contacts, and Opportunities — it has no native job-card entity and routes accounting through the separate Business Central module. The migration maps Fergus clients to Dynamics 365 Accounts (with new_pricingtier custom field), sites to sub-Accounts with address stacks, jobs to a custom Job__c table with name, description, status, scheduled date, and amount fields, and Fergus quotes to Opportunities in the Opp-Sub-Status pick-list so the Dynamics sales process is consistent with your pipeline stages. Job phases become Opportunity Product line items with quantity and unit price. Automations and workflow rules do not migrate automatically — FlitStack exports your Fergus workflow definitions as a structured reference document for your Dynamics admin to rebuild in Power Automate or Dataverse workflows. The migration uses Fergus's REST API (100 req/min limit, paginated) for extraction and Dynamics 365's bulk Create/Update endpoints for loading, with field-level validation and a delta-pickup window after cutover to capture last-minute changes.
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
Fergus platform overview
Scorecard, SWOT, gotchas, and pricing for Fergus.
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 Fergus 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.
Fergus
Client
Microsoft Dynamics 365 Sales
Account
1:1Fergus clients map directly to Dynamics 365 Accounts. We preserve the new_pricingtier custom field to hold the Fergus pricing-tier name so your Dynamics admin can rebuild the tier as a price-list setup or leave it as a reference field on the Account record.
Fergus
Contact
Microsoft Dynamics 365 Sales
Contact
1:1Fergus Contact records map directly to Dynamics Contacts with a 1:1 relationship, attached to the parent Account record. We preserve the original Fergus contact ID in the new_ferguscontactid custom field to maintain traceability throughout the migration and support delta-run de-duplication processes on subsequent data synchronizations.
Fergus
Site
Microsoft Dynamics 365 Sales
Account (child record via Parent Account)
1:1Fergus sites have no native Dynamics 365 equivalent, so we create a child Account record under the primary client Account. The site name, full address fields (street, city, state, postcode, country), and new_sitetype custom field are migrated onto this child Account. Parent-child linking between the site Account and client Account is achieved using the Dynamics ParentAccountId relationship field.
Fergus
Job
Microsoft Dynamics 365 Sales
Job__c (custom table)
1:1Dynamics 365 Sales has no native job-card entity. We create a custom Job__c table in Dataverse with fields for name, description, new_jobstatus pick-list, new_scheduleddate, new_jobvalue, and a lookup to the parent Account and Site Account. This preserves the full job record without forcing it into the Opportunity object.
Fergus
Quote
Microsoft Dynamics 365 Sales
Opportunity
1:1Fergus quotes map to Dynamics Opportunities. The Fergus quote status (draft, sent, accepted, declined, expired) becomes a new_quotestatus custom pick-list on the Opportunity record, mapped value-by-value to your Dynamics sales process stages. Quote total amount maps to the Opportunity EstimatedValue field, preserving financial data for pipeline reporting.
Fergus
QuoteLineItem
Microsoft Dynamics 365 Sales
OpportunityProduct (Opportunity Line Item)
1:1Fergus quote line items become Opportunity Products with standard Quantity, UnitPrice, and Description fields. The line item Description captures the Fergus product or service name. Each line item links back to the parent Opportunity via OpportunityId and optionally connects to the related Job__c record via a custom lookup field if a job-to-quote association exists in Fergus.
Fergus
Invoice
Microsoft Dynamics 365 Sales
SalesOrder (or Invoice table depending on status)
1:1Fergus invoices with a 'paid' status map to Dynamics SalesOrder records in an invoiced state; unpaid invoices map to open Order records. We preserve the original paid status as a new_invoicestatus custom field on the SalesOrder so your Dynamics admin can verify reconciliation against Fergus records post-migration and confirm all payments transferred correctly.
Fergus
Pricing Tier
Microsoft Dynamics 365 Sales
new_pricingtier (custom field on Account)
1:1Fergus pricing tiers are a named property on clients — they do not have a direct Dynamics equivalent. We migrate the tier name as a custom pick-list field (new_pricingtier) on Account with value-by-value mapping to the exact tier names in Fergus. Rebuild as price-list logic is a separate step for your Dynamics admin.
Fergus
Job Phase
Microsoft Dynamics 365 Sales
OpportunityProduct (line item per phase)
many:1Fergus job phases are a list of stages on a job. We collapse them into Opportunity Product line items on the linked Opportunity with Description storing the phase name and Quantity = 1, UnitPrice = 0 or the phase value if charged. This preserves phase history without requiring a custom phase object.
Fergus
Attachment / File
Microsoft Dynamics 365 Sales
Note (with file attachment)
1:1Fergus file attachments on jobs, quotes, and clients are re-uploaded as Dynamics Notes with the file body stored in SharePoint or Dataverse file storage. File size limits per Dynamics apply; inline images in rich-text notes are downloaded and rehosted, then re-inserted into the new system with links preserved. The note rendering may differ slightly from Fergus's original formatting.
Fergus
Asset (Fergus custom)
Microsoft Dynamics 365 Sales
Asset__c (custom table)
1:1Fergus asset records tracking equipment and assets at a client site have no standard Dynamics equivalent. We create a custom Asset__c table in Dataverse with fields for asset name, new_assettype custom field for asset classification, new_location field as a lookup to the Site Account, and a link to the parent client Account for asset-to-account reporting and asset lifecycle management.
Fergus
Owner / Staff
Microsoft Dynamics 365 Sales
SystemUser (OwnerId on all records)
1:1Fergus owner assignments are resolved by email match against Dynamics 365 SystemUser records. Unmatched owners are flagged before migration — your team either creates the Dynamics user first or assigns to a fallback owner. No record lands without a valid OwnerId.
| Fergus | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Client | Account1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Site | Account (child record via Parent Account)1:1 | Fully supported | |
| Job | Job__c (custom table)1:1 | Fully supported | |
| Quote | Opportunity1:1 | Fully supported | |
| QuoteLineItem | OpportunityProduct (Opportunity Line Item)1:1 | Fully supported | |
| Invoice | SalesOrder (or Invoice table depending on status)1:1 | Fully supported | |
| Pricing Tier | new_pricingtier (custom field on Account)1:1 | Fully supported | |
| Job Phase | OpportunityProduct (line item per phase)many:1 | Fully supported | |
| Attachment / File | Note (with file attachment)1:1 | Fully supported | |
| Asset (Fergus custom) | Asset__c (custom table)1:1 | Fully supported | |
| Owner / Staff | SystemUser (OwnerId on all records)1: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.
Fergus gotchas
100 req/min API rate limit constrains bulk exports
Customer pricing tier data requires explicit mapping
Quote and invoice warning badges are state-dependent
No documented public schema for custom fields
Job photos and attachments require separate file export
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
Extract Fergus data via API with pagination and rate-limit pacing
We connect to the Fergus REST API using scoped read access, paginating through clients, sites, contacts, jobs, quotes, quote line items, and invoices in sequence. API calls are paced to respect Fergus's 100 req/min limit using the x-ratelimit-remaining and retry-after response headers. Each object is exported to a staging dataset, de-duplicated against the Fergus internal ID, and validated for required field completeness before mapping begins.
Stand up Dynamics 365 Sales schema — custom Job__c table, custom fields, and lookup relationships
Before any data lands, we create the Job__c custom table in Dataverse with all new_ prefixed fields, establish the lookup relationships to Account (client and site), and configure the new_pricingtier, new_jobstatus, new_quotestatus, and new_invoicestatus pick-lists with exact value mappings to Fergus pick-list values. We deliver a schema setup checklist so your Dynamics admin can pre-create page layouts, security roles, and app navigation for Job__c before the migration runs.
Resolve owners and users by email match against Dynamics 365 SystemUser records
Fergus owner_id values are resolved by email against your Dynamics 365 tenant's SystemUser table. Unmatched owners are flagged and reported before migration — your team either invites the user to Dynamics first or assigns their records to a designated fallback owner. No record lands in Dynamics without a valid OwnerId, and owner resolution is verified in the sample migration before the full run.
Run a sample migration with field-level diff before the full run
A representative slice of data — typically 100–500 records spanning clients, sites, jobs, quotes, and a few line items — migrates first. We generate a field-level diff between the Fergus source and Dynamics destination so you can verify new_jobstatus mapping, pricing-tier preservation, site-to-child-account linkage, and owner resolution before the full run commits. You sign off on the diff before we proceed.
Cut over with delta-pickup window and one-click rollback available
The full migration runs against Dynamics 365 Sales. A delta-pickup window (typically 24–48 hours) captures any records created or modified in Fergus during the cutover so Dynamics reflects Fergus's final state at go-live. The audit log records every create and update operation. If reconciliation fails — a missing owner, a failed lookup, or a record-count discrepancy — one-click rollback reverts Dynamics to the pre-migration snapshot and we re-run with the corrected mapping.
Export Fergus workflow definitions as a reference document for Power Automate rebuild
Fergus workflow rules, stage-update triggers, and notification sequences do not migrate — they must be rebuilt in Dataverse workflows or Power Automate. We export a structured reference document listing every Fergus workflow with its trigger conditions, actions, and affected record types so your Dynamics admin can map each rule to an equivalent Power Automate flow or Dataverse business rule after go-live.
Platform deep dives
Fergus
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
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 Fergus and Microsoft Dynamics 365 Sales .
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
Fergus: 100 requests per minute per company, shared across all endpoints.
Data volume sensitivity
Fergus 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 Fergus to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Fergus 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 Fergus
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.