CRM migration
Field-level mapping, validation, and rollback between Trade Service Pro and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Trade Service Pro
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
11 of 12
objects map 1:1 between Trade Service Pro and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
48–72 hours
Overview
Trade Service Pro models field service operations around work orders, service locations, and technician assignments, with estimates and invoices tied directly to jobs. Dynamics 365 Sales uses the standard CRM object graph — Accounts, Contacts, Opportunities, Quotes, Orders, and Invoices — built on Dataverse with a 6,000-request-per-five-minute API rate limit per environment. The migration carries Trade Service Pro customers as Accounts, contacts as Contacts, and work orders as custom WorkOrder entities (or merged into Opportunities where they represent sales cycles). Estimates and invoices map to Dynamics 365 Quotes and Orders respectively, with payment records preserved as custom fields or notes since the Payments table in Dynamics has no direct equivalent. We handle custom fields on every object via the custom field pattern (new_customfield format). Our API-driven export from Trade Service Pro feeds into our Dynamics 365 import pipeline, sequencing Accounts before Contacts before transactional records to satisfy foreign-key requirements. We do not migrate workflows, automations, or payment processing configurations — those must be rebuilt in Dynamics 365 or reconnected to a payment processor. All attachment references are preserved as URLs or re-hosted in SharePoint/OneDrive linked from Dynamics 365 record notes.
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
Trade Service Pro platform overview
Scorecard, SWOT, gotchas, and pricing for Trade Service Pro.
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 Trade Service Pro 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.
Trade Service Pro
Customer
Microsoft Dynamics 365 Sales
Account
1:1Trade Service Pro Customers map 1:1 to Dynamics 365 Sales Accounts. Address, phone, and website fields carry over directly. Multiple TSP locations under one customer become separate Account records linked via ParentAccountId in Dynamics 365. The original TSP customer ID is stored in a custom Legacy_ID__c field on each Account to preserve referential integrity with historical records and downstream integrations.
Trade Service Pro
Contact
Microsoft Dynamics 365 Sales
Contact
1:1TSP Contacts map to Dynamics 365 Contacts. Each Contact requires an AccountId (parent Account must exist first in migration sequence). Primary contact flag on a TSP Customer carries over as a custom Is_Primary_Contact__c boolean field since Dynamics has no native equivalent.
Trade Service Pro
Location
Microsoft Dynamics 365 Sales
Account (Service Location) or custom ServiceLocation table
1:1TSP Locations represent service addresses distinct from the customer record. In Dynamics 365, service locations can become child Accounts (using ParentAccountId hierarchy) or a custom ServiceLocation table. We recommend the custom table approach for high-volume field service shops to avoid inflating the Account namespace.
Trade Service Pro
WorkOrder
Microsoft Dynamics 365 Sales
Custom WorkOrder table or Opportunity
1:manyTSP WorkOrders serve two purposes: dispatch-and-service records and quasi-sales records when a work order originates from a quote. We map service-only WorkOrders to a custom WorkOrder table in Dynamics 365. WorkOrders tied to sold estimates map to Opportunities linked to the originating Quote, preserving the sales pipeline view.
Trade Service Pro
WorkOrder
Microsoft Dynamics 365 Sales
Custom WorkOrder table
1:1WorkOrder is the most structurally complex mapping. TSP stores technician assignment, labor hours, line items, and status history. Dynamics 365 Sales has no native WorkOrder entity — we create a custom WorkOrder table with a 1:1 field mapping, including WorkOrder_Number__c as the external reference, Status__c as a custom picklist, and Technician__c as a lookup to the User/Contact who performed the service.
Trade Service Pro
Estimate
Microsoft Dynamics 365 Sales
Quote
1:1TSP Estimates map to Dynamics 365 Quotes. Line items become Quote Details (quotedetail). Estimate totals, tax, and discount fields map directly. TSP Estimate status (Draft, Sent, Accepted, Declined) becomes a custom Quote_Status__c picklist since Dynamics uses Active, Revised, Dead, and Won statuses natively.
Trade Service Pro
Invoice
Microsoft Dynamics 365 Sales
Invoice
1:1TSP Invoices map to Dynamics 365 Invoices. Invoice lines become Invoice Details. Payment status and payment method are not native Dynamics fields — we preserve these as custom text fields (Payment_Status__c, Payment_Method__c) and retain any processor reference (e.g., Stripe charge ID) in a notes attachment URL.
Trade Service Pro
Payment
Microsoft Dynamics 365 Sales
Invoice (custom payment fields)
1:1TSP Payments record individual transactions against an Invoice. Dynamics 365 Invoice does not store a sub-payment ledger. We create a custom Payment_Record__c table with a lookup to the related Invoice, capturing amount, date, processor, and transaction ID. This preserves full payment history without distorting the Invoice's closed status.
Trade Service Pro
Technician
Microsoft Dynamics 365 Sales
SystemUser
1:1TSP Technicians represent field employees who can also be assigned as WorkOrder technicians. In Dynamics 365, field resources map to Bookable Resources (msdyn_resource) on Field Service plans, or to SystemUsers on Sales-only plans. We match TSP technicians by email to existing Dynamics 365 users and flag unmatched technicians for your admin to create or reassign.
Trade Service Pro
Intake / Lead Source
Microsoft Dynamics 365 Sales
Lead
1:1TSP Intake records represent incoming lead information — ad source, referral, call log. These map to Dynamics 365 Leads, with TSP's ad_source field mapping to LeadSource, intake notes mapping to Description, and original creation date preserved as a custom Created_In_Source__c datetime field.
Trade Service Pro
Attachment / Document
Microsoft Dynamics 365 Sales
SharePoint/OneDrive (linked from Note or Attachment)
1:1TSP attachments on WorkOrders, Estimates, and Invoices are re-uploaded to a linked SharePoint document library. Dynamics 365 Notes on each record store the SharePoint URL, preserving the original file name and upload timestamp as custom fields on the Note record.
Trade Service Pro
Custom fields (TSP plans supporting custom properties)
Microsoft Dynamics 365 Sales
Custom fields (new_customfield format on respective Dynamics table)
1:1Custom properties on TSP Customers, WorkOrders, Estimates, and Invoices require custom fields in Dynamics 365. We prefix each with new_ following Dataverse naming conventions. Field data type mapping: text→String, number→Integer or Decimal, date→DateTime, checkbox→Boolean, dropdown→Picklist. We audit the actual custom field inventory during discovery and create corresponding fields in your Dynamics 365 solution layer during the pre-migration phase.
| Trade Service Pro | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Customer | Account1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Location | Account (Service Location) or custom ServiceLocation table1:1 | Fully supported | |
| WorkOrder | Custom WorkOrder table or Opportunity1:many | Fully supported | |
| WorkOrder | Custom WorkOrder table1:1 | Fully supported | |
| Estimate | Quote1:1 | Fully supported | |
| Invoice | Invoice1:1 | Fully supported | |
| Payment | Invoice (custom payment fields)1:1 | Fully supported | |
| Technician | SystemUser1:1 | Fully supported | |
| Intake / Lead Source | Lead1:1 | Fully supported | |
| Attachment / Document | SharePoint/OneDrive (linked from Note or Attachment)1:1 | Fully supported | |
| Custom fields (TSP plans supporting custom properties) | Custom fields (new_customfield format on respective Dynamics table)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.
Trade Service Pro gotchas
No public API forces reliance on in-app CSV exports
Active timesheet timers do not export in CSV
eSign status on Proposals does not carry over
Attachment bulk download requires separate handling
No schema documentation complicitates field mapping
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
Audit TSP data model and prepare Dynamics 365 environment
We query the Trade Service Pro API to inventory all active objects — Customers, Contacts, Locations, WorkOrders, Estimates, Invoices, Payments, Technicians, Intakes, and any custom fields present on each entity. Simultaneously, your Dynamics 365 admin creates the required solution layer: the custom WorkOrder__c table, custom fields on Account/Contact/Quote/Invoice, and the Payment_Record__c table. We deliver a field-mapping spreadsheet and a Dynamics 365 schema checklist so your team knows exactly which custom fields and tables to create before data arrives.
Resolve technician and user records by email match
TSP Technicians are matched against Dynamics 365 SystemUsers by email address. Unmatched technicians are flagged with their TSP email and employee ID so your admin can either invite them to Dynamics 365 as users or assign a fallback user. No WorkOrder or service record lands in Dynamics without a resolved technician reference. This step also surfaces any TSP technician records with duplicate email addresses that need manual disambiguation.
Migrate Accounts and Contacts before transactional records
Dynamics 365 requires AccountId on Contact records and CustomerId on Quotes and Invoices — parent records must exist before children. We sequence the migration: Accounts first, then Contacts (with AccountId lookups resolved), then the custom WorkOrder__c table, then Quotes, then Invoices, then Payment_Record__c entries. Location-to-Account hierarchy is resolved in the same pass. This ensures referential integrity and prevents import failures from missing foreign keys.
Run sample migration with field-level diff
A representative slice — typically 200–500 records covering a mix of Customers, Contacts, WorkOrders, Estimates, and Invoices — migrates first. We generate a field-level diff showing the source value, mapped destination value, and any transformation notes for every field. You verify that WorkOrder status values map correctly, that technician assignments resolve, and that payment records link to the right Invoice. The diff is your sign-off checkpoint before the full run commits.
Execute full migration with delta-pickup window
The full dataset loads into Dynamics 365 using batched API calls that respect Dataverse service protection limits. A delta-pickup window of 24–48 hours after the bulk load captures any new or modified records created in TSP during cutover — particularly relevant for active service schedules. Our audit log records every record created, updated, or skipped. If reconciliation reveals discrepancies, one-click rollback reverts the Dynamics 365 environment to its pre-migration state while your team continues working in TSP.
Platform deep dives
Trade Service Pro
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Trade Service Pro and Microsoft Dynamics 365 Sales .
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Trade Service Pro and Microsoft Dynamics 365 Sales .
Object compatibility
All 8 core objects map 1:1 between Trade Service Pro 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
Trade Service Pro: Not publicly documented.
Data volume sensitivity
Trade Service Pro 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 Trade Service Pro to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Trade Service Pro 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 Trade Service Pro
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.