CRM migration
Field-level mapping, validation, and rollback between The Service Program and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
The Service Program
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
11 of 12
objects map 1:1 between The Service Program and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
48–72 hours
Overview
The Service Program is a QuickBooks-centric field-service management platform organized around work orders, dispatch tickets, technician assignments, and equipment records tied to service sites. It has no native CRM concept — customers are stored as billing entities with minimal pipeline modeling. Dynamics 365 Sales is a full CRM built on Microsoft Dataverse with structured Lead-to-Account-to-Contact-to-Opportunity lifecycle, custom tables, and Power Automate for workflow reconstruction. The migration carries every customer, address, work order, equipment record, time entry, and invoice attachment from The Service Program into corresponding Dynamics 365 entities or custom tables. The primary translation layer maps Customer records to Account and Contact pairs, Work Orders to Opportunities or custom Service Ticket tables, and Equipment to custom Asset or Site tables. Scheduling blocks and dispatch data translate to custom datetime and user-lookup fields because neither platform has a native field-dispatch board schema. Workflows, automations, and QuickBooks sync rules do not migrate — FlitStack exports definitions as text for Power Automate rebuild, and invoices recreate as Order or Invoice records or stay in QuickBooks with a reference link.
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
The Service Program platform overview
Scorecard, SWOT, gotchas, and pricing for The Service Program.
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 The Service Program 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.
The Service Program
Customer
Microsoft Dynamics 365 Sales
Account + Contact
many:1TSP Customer records carry both company and billing-person data. We split this into a Dynamics 365 Account (company name, address, industry) and a Contact (primary billing or service contact) linked via AccountId. If the Customer has no company name, the Contact becomes the Account holder and Account.Name receives the Contact's full name.
The Service Program
Customer Phone / Email
Microsoft Dynamics 365 Sales
Contact (Phone, Email)
1:1TSP stores phone and email directly on the Customer record. These migrate as Contact.Phone and Contact.Email. Multiple phone numbers are consolidated into the primary Phone field and a secondary Telephone field on the Contact record. Any unstructured phone notes or non-standard contact information is preserved in a custom TSP_PhoneNotes__c field to ensure no contact data is lost during migration.
The Service Program
Service Site / Location
Microsoft Dynamics 365 Sales
Account (Site Address) or custom Site table
1:1TSP locations are stored per Customer with address, site name, and access notes. When a Customer has one site, the address becomes Account.ShippingAddress. When a Customer has multiple sites (pool route, multiple properties), we create a custom Site__c table with a lookup to Account and store the site-specific address, access codes, and service frequency as custom fields.
The Service Program
Work Order
Microsoft Dynamics 365 Sales
Opportunity or custom Service_Ticket__c table
1:1TSP work orders carry job type, scheduled date, assigned technician, line items, and status. We map these to a custom Service_Ticket__c table (Dataverse) because Dynamics Sales does not have an out-of-box field-service ticket entity. Each ticket links to the Account and Contact, stores technician assignment as a Contact lookup, and carries original create date and status history in custom audit fields.
The Service Program
Work Order Line Item / Service Line
Microsoft Dynamics 365 Sales
Service_Ticket_Line__c (custom child table)
1:1Line items on a TSP work order (labor, parts, flat-fee services) migrate as records in a custom line-item table linked to Service_Ticket__c. Each line stores description, quantity, unit price, and total. If the destination is Dynamics 365 Sales Enterprise + Field Service, line items can alternatively map to Agreement Booking Dates with service tasks.
The Service Program
Equipment Record
Microsoft Dynamics 365 Sales
Custom Equipment__c table or Dynamics 365 Field Service Asset
1:1TSP equipment records track make, model, serial number, installation date, warranty expiration, and customer site link. We create a custom Equipment__c table in Dataverse with all standard fields plus the TSP_Equipment_ID__c reference. If the customer licenses Dynamics 365 Field Service, equipment migrates to the msdyn_customerAsset table with the same field coverage.
The Service Program
Technician / Employee
Microsoft Dynamics 365 Sales
SystemUser or Contact
1:1TSP technicians have name, phone, certifications, and hourly rate. We resolve each technician by email against Dynamics 365 users — matched technicians become SystemUser records with their role set to Field Service Resource. Unmatched technicians (no D365 license) become Contact records with a custom Technician__c flag and a TSP_Certifications__c field for rebuild reference.
The Service Program
Time Entry
Microsoft Dynamics 365 Sales
Custom Time_Entry__c table
1:1TSP time entries record technician hours per work order or per day. We create a custom Time_Entry__c table linked to the Service_Ticket__c and the technician Contact record, storing date, hours worked, time type (travel, labor, admin), and billable flag. Original entry timestamps are preserved in a custom Created_At_Original__c field.
The Service Program
Invoice / Billing Reference
Microsoft Dynamics 365 Sales
SalesOrder or Invoice (D365) + QuickBooks link
1:1TSP invoices live in QuickBooks. We store the QB invoice number and total on a custom QB_Invoice_Ref__c field on the related Service_Ticket__c or Opportunity. The invoice document itself is not migrated; FlitStack records the QB link so the invoice stays in QuickBooks and the D365 record carries the reference for audit trail continuity.
The Service Program
Attachment / Document
Microsoft Dynamics 365 Sales
SharePoint (via D365 Document Management) or Note
1:1TSP file attachments on work orders or equipment records (photos, contracts, spec sheets) are downloaded and re-uploaded to the SharePoint document library associated with the D365 Account or custom Service_Ticket__c table. File size limits of SharePoint (default 10 GB per document library) apply. Inline images in notes are extracted and re-hosted as SharePoint file attachments.
The Service Program
TSP Custom Properties (key-value per record)
Microsoft Dynamics 365 Sales
Custom fields on destination tables (__c suffix)
1:1TSP stores arbitrary custom properties per Customer, Work Order, or Equipment record without a published schema. We enumerate these during the audit phase, map each to a typed custom field in D365 (text, number, picklist, date, or boolean), and create the field in the appropriate Dataverse solution before migration. Any property with no D365 equivalent becomes a JSON blob in a TSP_Custom_Data__c text field for reference.
The Service Program
Dispatch Schedule / Calendar Block
Microsoft Dynamics 365 Sales
Custom Schedule_Block__c table
1:1TSP scheduling data (assigned technician, date/time window, route stop order) has no direct D365 equivalent. We create a custom Schedule_Block__c table with technician lookup, Account/Site lookup, scheduled start/end datetime, and TSP_Route_Stop__c order number. This preserves the dispatch board layout as reference data for rebuilding in Power Apps or Dynamics 365 Field Service.
| The Service Program | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Customer | Account + Contactmany:1 | Fully supported | |
| Customer Phone / Email | Contact (Phone, Email)1:1 | Fully supported | |
| Service Site / Location | Account (Site Address) or custom Site table1:1 | Fully supported | |
| Work Order | Opportunity or custom Service_Ticket__c table1:1 | Fully supported | |
| Work Order Line Item / Service Line | Service_Ticket_Line__c (custom child table)1:1 | Fully supported | |
| Equipment Record | Custom Equipment__c table or Dynamics 365 Field Service Asset1:1 | Fully supported | |
| Technician / Employee | SystemUser or Contact1:1 | Fully supported | |
| Time Entry | Custom Time_Entry__c table1:1 | Fully supported | |
| Invoice / Billing Reference | SalesOrder or Invoice (D365) + QuickBooks link1:1 | Fully supported | |
| Attachment / Document | SharePoint (via D365 Document Management) or Note1:1 | Fully supported | |
| TSP Custom Properties (key-value per record) | Custom fields on destination tables (__c suffix)1:1 | Fully supported | |
| Dispatch Schedule / Calendar Block | Custom Schedule_Block__c table1: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.
The Service Program gotchas
No public API means migration depends on QuickBooks export or Windows-database extraction
QuickBooks version gate blocks the sync layer on older installations
Custom fields and TSP-specific data require manual CSV preparation
SMS messaging and communication logs are not migratable
Annual contract with onboarding fees creates lock-in risk before migration
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 and build the Dataverse schema
FlitStack reads the TSP database via its export API and enumerates every distinct entity: Customer, Work Order, Equipment, Technician, Time Entry, Site, and any custom properties encountered. We build the custom Dataverse tables (Site__c, Service_Ticket__c, Service_Ticket_Line__c, Equipment__c, Schedule_Block__c, Time_Entry__c) and custom fields required for your specific data before writing a single record. This schema plan is delivered as a Dataverse solution XML that your admin can import directly into the target D365 environment.
Resolve technician and user identities by email
We match TSP technician records against existing D365 SystemUser accounts by email address. Matched technicians receive Service_Ticket__c ownership for their assigned records. Unmatched technicians are flagged in a pre-migration report — your team decides whether to invite them as D365 users or keep them as Contact records with a custom technician lookup. Customer records are matched against existing D365 Accounts by company name and address fuzzy-match to prevent duplicate Account creation.
Migrate Accounts, Contacts, and Sites before work orders
Dynamics 365 requires AccountId on Contact and Service_Ticket__c.AccountId on every service record. We sequence the migration so Account and Contact records land first, then Site__c records linked to their parent Account, then Equipment__c records linked to Site__c, and finally Service_Ticket__c records with their line items, time entries, and schedule blocks. This ordering respects D365 Dataverse foreign-key constraints and ensures every lookups resolves correctly at write time.
Run a sample migration with field-level diff
A representative slice — typically 200–500 records across Customers, Work Orders, Equipment, and Technicians — migrates to D365 first. FlitStack generates a field-level diff report comparing source values against destination field values, flagging any truncated text, date-time offset, picklist mismatch, or numeric rounding. You verify that TSP job types map to Service_Ticket__c.Job_Type__c correctly, that technician resolution is accurate, and that equipment serial numbers land intact before the full run commits.
Cut over with delta-pickup for in-flight records
The full migration runs against your target D365 environment. A delta-pickup window (typically 24–48 hours after the main run window) captures any records created or modified in TSP during the cutover — new work orders, updated statuses, or late time entries. FlitStack generates an audit log of every insert, update, and skip operation. One-click rollback reverts all D365 records to their pre-migration state if reconciliation finds unexpected data quality issues. Post-migration, we deliver a QB_Invoice_Ref__c crosswalk sheet linking each D365 Service_Ticket__c to its QuickBooks invoice for finance-team reconciliation.
Platform deep dives
The Service Program
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 The Service Program 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
The Service Program: Not applicable — no public API.
Data volume sensitivity
The Service Program 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 The Service Program to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your The Service Program 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 The Service Program
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.