CRM migration

Migrate from The Service Program to Microsoft Dynamics 365 Sales

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 logo

The Service Program

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

92%

11 of 12

objects map 1:1 between The Service Program and Microsoft Dynamics 365 Sales .

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

The Service Program logo

The Service Program

What's pushing teams away

  • The software is described as at times quirky and complicated, with basic field-service features that users expect still marked as in-progress rather than fully shipped.
  • No public API means integrations beyond QuickBooks require custom development or workarounds, making the platform unsuitable for businesses needing broad third-party connectivity.
  • Mobile and field-user pricing is listed separately with no transparency on the pricing page, making total cost of ownership hard to predict before signing a contract.
  • As a Windows desktop product, field technicians working on tablets or mobile devices face limitations compared to native mobile-first FSM platforms.
  • Annual contract structure combined with per-user billing can become costly as teams grow, pushing small businesses toward flat-rate alternatives.

Choosing

Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales

What's pulling them in

  • Deep Microsoft 365, Teams, and Outlook integration makes Microsoft Dynamics 365 Sales a natural fit for Microsoft-first organizations already invested in that ecosystem
  • Sales Enterprise and Premium tiers offer unlimited custom tables and advanced AI-driven forecasting and predictive analytics not available in lower tiers
  • Professional tier pricing at $65 per user per month offers a lower entry cost than Salesforce for SMB teams with straightforward CRM needs
  • Flexible customization options allow businesses to build bespoke apps, tailor forms and views, and integrate with other Dynamics 365 modules
  • Microsoft Copilot AI tools are embedded directly into the sales workflow on Enterprise and Premium, automating routine tasks and providing deal intelligence

Object mapping

How The Service Program objects map to Microsoft Dynamics 365 Sales

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

maps to

Microsoft Dynamics 365 Sales

Account + Contact

many:1
Fully supported

TSP 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

maps to

Microsoft Dynamics 365 Sales

Contact (Phone, Email)

1:1
Fully supported

TSP 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

maps to

Microsoft Dynamics 365 Sales

Account (Site Address) or custom Site table

1:1
Fully supported

TSP 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

maps to

Microsoft Dynamics 365 Sales

Opportunity or custom Service_Ticket__c table

1:1
Fully supported

TSP 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

maps to

Microsoft Dynamics 365 Sales

Service_Ticket_Line__c (custom child table)

1:1
Fully supported

Line 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

maps to

Microsoft Dynamics 365 Sales

Custom Equipment__c table or Dynamics 365 Field Service Asset

1:1
Fully supported

TSP 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

maps to

Microsoft Dynamics 365 Sales

SystemUser or Contact

1:1
Fully supported

TSP 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

maps to

Microsoft Dynamics 365 Sales

Custom Time_Entry__c table

1:1
Fully supported

TSP 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

maps to

Microsoft Dynamics 365 Sales

SalesOrder or Invoice (D365) + QuickBooks link

1:1
Fully supported

TSP 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

maps to

Microsoft Dynamics 365 Sales

SharePoint (via D365 Document Management) or Note

1:1
Fully supported

TSP 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)

maps to

Microsoft Dynamics 365 Sales

Custom fields on destination tables (__c suffix)

1:1
Fully supported

TSP 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

maps to

Microsoft Dynamics 365 Sales

Custom Schedule_Block__c table

1:1
Fully supported

TSP 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.

Gotchas + challenges

What specifically takes care here

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 logo

The Service Program gotchas

High

No public API means migration depends on QuickBooks export or Windows-database extraction

High

QuickBooks version gate blocks the sync layer on older installations

Medium

Custom fields and TSP-specific data require manual CSV preparation

Medium

SMS messaging and communication logs are not migratable

Low

Annual contract with onboarding fees creates lock-in risk before migration

Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales gotchas

High

Professional tier 15-table custom table limit blocks migrations

High

October 2024 pricing increase applies at renewal for all customers

Medium

Custom fields must be created in the UI before API writes

Medium

Power Platform request limits apply to bulk migrations

Medium

Activity records orphaned to inactive owners fail silently

Pair-specific challenges

  • TSP has no native Lead object — Customer records must be classified at migration time

    The Service Program has no concept of an unqualified Lead — every TSP Customer is effectively an active account. In Dynamics 365 Sales, the CRM lifecycle starts with a Lead that qualifies into Account and Contact. FlitStack classifies each TSP Customer based on the presence of a work order: any Customer with at least one completed work order lands as an Account with a Contact (treated as an established customer); any Customer with no work orders and no service history lands as a Lead for sales-team qualification in D365. If TSP has only unworked prospects, we import them as Leads rather than Accounts to preserve the correct D365 lifecycle.

  • Scheduling and dispatch data require a custom Dataverse table

    TSP's dispatch board stores technician assignment, date/time windows, route stop sequence, and scheduling status per work order. Dynamics 365 Sales has no native dispatch board entity in Sales Professional or Enterprise — the Field Service extension provides msdyn_workorder and msdyn_bookableresourcebooking tables, but those require the Field Service license and a separate setup. FlitStack creates a custom Schedule_Block__c Dataverse table to preserve the scheduling layout at migration time. Rebuilding the dispatch board requires either purchasing the Field Service add-in or building a Power Apps canvas app on top of Schedule_Block__c.

  • QuickBooks sync rules and billing automation do not migrate

    The Service Program's defining integration is its two-way QuickBooks sync — customer records, invoices, and payments synchronize automatically. Dynamics 365 Sales has no native QuickBooks connector. Invoice data in TSP lives in QuickBooks, not in TSP's database. We preserve the QB invoice number and amount on the migrated Service_Ticket__c record, but the invoice itself must be recreated in D365 SalesOrder/Invoice tables or kept in QuickBooks with a reference link. Any automated invoice-posting workflow in TSP has no equivalent in D365 — it must be rebuilt in Power Automate or a third-party QB-D365 integration tool such as KingswaySoft or a native connector.

  • Custom fields in TSP are undocumented key-value pairs with no published schema

    TSP allows per-record custom properties stored as field-value pairs with no published API schema or admin UI for schema discovery. During the audit phase, FlitStack enumerates every distinct custom property across a sample of records, assigns a D365 Dataverse type (text, number, picklist, date, boolean), and creates the field in a Dataverse solution before migration. Properties that cannot be cleanly typed are stored as a JSON string in a TSP_Custom_Data__c text field on the destination record. This approach is transparent — your admin can parse the JSON or request a field-by-field split after migration.

  • Technicians without D365 user accounts cannot own records by default

    In Dynamics 365, only SystemUser records (licensed D365 users) can own records via OwnerId. TSP technician records are employees, not necessarily D365 users. If a technician does not have a D365 license and Azure AD account, they cannot be set as the Owner of a Service_Ticket__c record — the record must be owned by a D365 user (a manager or admin) with the technician name stored in a custom Technician__c Contact lookup field. FlitStack flags every unmatched technician before migration and presents two options: invite the technician to D365 (incurring a user license) or map them as a Contact-owned record with a TSP_Certifications__c reference field.

Migration approach

Six steps for a successful The Service Program to Microsoft Dynamics 365 Sales data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

The Service Program logo

The Service Program

Source

Strengths

  • Tight QuickBooks Desktop and Online integration with one-click customer record sync and no duplication.
  • Windows-native UI reduces training overhead for office staff familiar with standard Windows navigation.
  • Work-order dispatch, routing, and technician assignment in a single FSM add-on without needing a separate platform.
  • Calendar-based scheduling with route optimization built in for field service operations.
  • Support and software updates included in the subscription price.

Weaknesses

  • No public API — all data exchange beyond QuickBooks requires manual export or direct database extraction from the Windows desktop application.
  • QuickBooks 2018 or newer is required — older QuickBooks versions are not supported and block the sync layer.
  • Mobile and field-user pricing is published separately with no clear total-cost estimate on the pricing page.
  • No native integrations with CRMs, project management tools, or modern SaaS platforms beyond QuickBooks.
Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales

Destination

Strengths

  • Native integration with Microsoft 365, Teams, Outlook, and SharePoint for unified productivity workflow
  • Unlimited custom tables and complex workflows on Enterprise tier enable deep customization for complex sales processes
  • AI-driven predictive analytics and deal intelligence on Enterprise and Premium tiers help sales teams prioritize pipeline
  • Dataverse unified data layer provides a consistent API and data model across all Dynamics 365 and Power Platform apps
  • Strong security model with Field-Level Security and Record Ownership rules for governance-conscious enterprises

Weaknesses

  • Sales Professional tier caps custom tables at 15, creating a migration ceiling for highly customized SMB environments
  • October 2024 pricing increases of $15 per user across all tiers apply to existing customers upon renewal
  • Implementation typically requires costly certified partners, adding 30–50% to total project cost
  • Updates and platform releases can disrupt customizations and plugins, requiring regression testing after each wave
  • Non-Microsoft integrations require additional configuration or middleware, limiting flexibility for heterogeneous tech stacks

Complexity grading

How hard is this migration?

Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.

B

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

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    The Service Program: Not applicable — no public API.

  • Data volume sensitivity

    B

    The Service Program doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your The Service Program to Microsoft Dynamics 365 Sales migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about The Service Program to Microsoft Dynamics 365 Sales data migrations

Answers to the questions buyers ask most during The Service Program to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most TSP-to-Dynamics 365 Sales migrations complete in 48–72 hours of clock time for under 50,000 records. Larger setups with 500k+ records, extensive equipment histories, or multiple service sites extend to 5–7 days. The longest step is the audit and Dataverse schema build (3–5 business days), which FlitStack handles before the data move begins. Custom property enumeration and technician identity resolution add 1–2 days to the planning phase.

Adjacent paths

Related migrations to explore

Ready when you are

Move from The Service Program.
Land in Microsoft Dynamics 365 Sales , intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day