CRM migration
Field-level mapping, validation, and rollback between ServiceTitan and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
ServiceTitan
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
10 of 12
objects map 1:1 between ServiceTitan and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
1–2 weeks
Overview
ServiceTitan organizes around jobs, technicians, and service locations — a model built for field-service operations in trades like HVAC, plumbing, and electrical. Dynamics 365 Sales organizes around accounts, contacts, and opportunities — a CRM model optimized for sales pipeline management. These are fundamentally different paradigms, and the migration requires deliberate translation choices rather than one-to-one object replacement. FlitStack AI maps ServiceTitan customers to Dynamics 365 accounts, contacts, and in some cases leads. Service locations become account addresses or child contact records. Jobs — the core ServiceTitan record — become either Dynamics 365 opportunities with extensive custom fields (for deal-tracking workflows) or cases (for service-ticket workflows), depending on how your team uses ServiceTitan. Invoices and estimates migrate as-is, though estimate line items require a product-catalog setup in Dynamics before quote details can link cleanly. Technician records do not map to standard Dynamics users — ServiceTitan technicians are resource records with no CRM license requirement. We resolve by creating Dynamics users for any technician who needs CRM access and contact records for the rest, preserving the technician name on the job record via a custom field. Custom fields are the primary complexity vector. ServiceTitan allows free-form custom fields of any type; Dynamics enforces strict field types at creation time. We audit type compatibility before migration and flag any field that needs a type conversion. ServiceTitan's pricebook entries require a separate product-catalog build in Dynamics — we deliver a product-import template as part of the migration package. We do not migrate ServiceTitan workflows, dispatch rules, service agreements, or automations. These must be rebuilt in Dynamics 365 or Power Automate. We export your ServiceTitan workflow definitions as a rebuild reference for your admin team.
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
ServiceTitan platform overview
Scorecard, SWOT, gotchas, and pricing for ServiceTitan.
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 ServiceTitan 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.
ServiceTitan
Customer
Microsoft Dynamics 365 Sales
Account
1:1ServiceTitan customers map to Dynamics 365 accounts via a direct object transformation. For customers with multiple service locations, we create one account record and attach multiple address records or child contact records to represent each location separately. The customer's primary contact person maps to the account's primary contact role, and any additional contacts on the customer record become linked contact records under the same account parent. This preserves the hierarchical relationship between the customer entity and its associated contact persons in the destination CRM.
ServiceTitan
Customer
Microsoft Dynamics 365 Sales
Contact
1:1Customer contact persons map to Dynamics 365 contacts. We resolve the primary contact on the customer record to a contact with email, phone, and mailing address. Additional contacts on the customer record map to additional contact records linked to the same account.
ServiceTitan
Service Location
Microsoft Dynamics 365 Sales
Account Address + Contact
many:1ServiceTitan allows multiple service locations per customer — a key FSM feature with no direct CRM equivalent. We map the primary service location to the account's billing or shipping address. Secondary locations are either added as address records on the account or as child contact records with an address-purpose flag stored in a custom field.
ServiceTitan
Job
Microsoft Dynamics 365 Sales
Opportunity
1:1Jobs are the core ServiceTitan record and require deliberate mapping. We map jobs to Dynamics 365 opportunities when the use case is tracking service revenue through a pipeline. Each job maps as one opportunity with the customer account linked, the job amount as estimated value, and job status translated to an opportunity stage via value mapping.
ServiceTitan
Job
Microsoft Dynamics 365 Sales
Incident (Dynamics 365 Customer Service)
1:1For teams using ServiceTitan primarily as a work-order system rather than a sales-tracking tool, jobs map better to cases in Dynamics 365 Customer Service. We configure the mapping direction based on your primary use case during the planning phase — this is a customer choice, not an automatic decision.
ServiceTitan
Job Status
Microsoft Dynamics 365 Sales
Opportunity StageName
1:1ServiceTitan job statuses (Scheduled, In Progress, On Hold, Completed, Cancelled) map to Dynamics 365 opportunity stage values via value-by-value mapping. We apply the mapping during migration and flag any status that has no direct equivalent in your Dynamics stage set so your admin can pre-create the needed stages.
ServiceTitan
Invoice
Microsoft Dynamics 365 Sales
Invoice
1:1ServiceTitan invoices map to Dynamics 365 invoices with line items preserved. Invoice details require a product catalog in Dynamics to link line items to the Product table — we deliver a product-import template alongside the migration so your admin can pre-populate the catalog before the invoice records load.
ServiceTitan
Estimate
Microsoft Dynamics 365 Sales
Quote
1:1ServiceTitan estimates map directly to Dynamics 365 quotes with full fidelity on the header and line-item levels. Estimate line items map to quote details using the same product-catalog dependency as invoices — the Dynamics Product table must exist before quote line items can link to product records rather than arriving as free-text lines. The ServiceTitan estimate expiration date translates to the quote's Delivery_Expires field in Dynamics, preserving the original validity window so sales representatives know exactly when each quote becomes stale and requires refresh or re-approval before sending to the customer.
ServiceTitan
Technician
Microsoft Dynamics 365 Sales
SystemUser + Contact
1:manyServiceTitan technicians are resource records with schedule and shift data. Dynamics 365 users are license-based. We split the mapping: technicians who need CRM access become Dynamics system users resolved by email match; technicians without CRM access become contact records with the technician name preserved in a custom field on every related job/opportunity.
ServiceTitan
Pricebook / Material
Microsoft Dynamics 365 Sales
Product
1:1ServiceTitan pricebook entries do not have a native CRM equivalent in Dynamics 365 Sales. We deliver a CSV product-import template with all ServiceTitan materials, parts, and labor codes so your admin can create product records in Dynamics before the migration runs. Line items on jobs, invoices, and estimates depend on this setup.
ServiceTitan
Custom Field (any object)
Microsoft Dynamics 365 Sales
Custom Field (same or mapped object)
1:1ServiceTitan custom fields map to Dynamics 365 custom fields on the target object. Field type compatibility must be verified before migration — free-form ServiceTitan fields that contain mixed data types may need type conversion or splitting into multiple typed fields in Dynamics. We audit all custom fields during the planning phase and flag type mismatches.
ServiceTitan
Job Source
Microsoft Dynamics 365 Sales
Custom Field on Opportunity
1:1ServiceTitan tracks job source (Marketing, Referral, Repeat, etc.) as a standard field. Dynamics 365 has no native job-source field on opportunities. We preserve the value as a custom pick-list field (Job_Source__c) on the opportunity so reporting on revenue by source remains possible in Dynamics.
| ServiceTitan | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Customer | Account1:1 | Fully supported | |
| Customer | Contact1:1 | Fully supported | |
| Service Location | Account Address + Contactmany:1 | Fully supported | |
| Job | Opportunity1:1 | Fully supported | |
| Job | Incident (Dynamics 365 Customer Service)1:1 | Fully supported | |
| Job Status | Opportunity StageName1:1 | Fully supported | |
| Invoice | Invoice1:1 | Fully supported | |
| Estimate | Quote1:1 | Fully supported | |
| Technician | SystemUser + Contact1:many | Fully supported | |
| Pricebook / Material | Product1:1 | Fully supported | |
| Custom Field (any object) | Custom Field (same or mapped object)1:1 | Fully supported | |
| Job Source | Custom Field on Opportunity1: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.
ServiceTitan gotchas
Per-technician pricing masks true cost for mixed teams
No publicly documented bulk export API endpoint
Address validation required for Service Locations to enable routing
Purchasing migration can permanently stall
QuickBooks mapping assumes QBD desktop edition field conventions
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
ServiceTitan schema audit and mapping design
We export the full ServiceTitan object and field inventory via the API — customers, locations, jobs, invoices, estimates, technicians, custom fields, and pricebook entries. We audit each object for record count, field type, and custom field usage. During this phase we also confirm your choice of job-to-opportunity versus job-to-case mapping and identify any custom fields with type-compatibility issues that require pre-creation in Dynamics before data loads.
Dynamics 365 environment preparation
Your admin creates the custom fields, pick-list values, and product catalog entries identified in the audit phase. We deliver a field-creation specification and a product-import CSV template so this work happens in parallel with mapping design. We also verify that the correct Dynamics 365 Sales edition (Professional or Enterprise) is provisioned — the Professional edition has a 15-custom-table limit that affects how many custom objects can be created.
User and owner resolution
We match ServiceTitan technician records to Dynamics 365 system users by email address — the primary identifier for resolving ownership across the Microsoft ecosystem. Unmatched technicians are flagged before migration and presented to your team for resolution: which technicians receive Dynamics CRM licenses and gain full user access, and which become contact records with a custom technician reference field preserved on every related job or opportunity. No opportunity, invoice, or quote lands in Dynamics without a resolved owner, ensuring your sales pipeline is fully assignable from day one.
Sample migration with field-level diff
A representative slice of records — typically 200–500 spanning customers, service locations, jobs, invoices, and estimates — migrates first using the production mapping configuration. We generate a field-level diff between the ServiceTitan source and the Dynamics 365 destination so your team can verify custom field mapping accuracy, status-to-stage value mapping correctness, product-catalog linkage on invoice and quote line items, and owner resolution before the full migration run commits. This sample phase catches mapping errors before volume migration begins.
Full migration with delta-pickup cutover
The full data migration runs against Dynamics 365. A delta-pickup window (typically 48 hours) captures any records created or modified in ServiceTitan during the cutover period so Dynamics reflects the final state at go-live. We use scoped read access on ServiceTitan throughout — your team continues working in ServiceTitan during the migration. Audit logs capture every operation, and one-click rollback is available if reconciliation finds unexpected results.
Platform deep dives
ServiceTitan
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 ServiceTitan 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
ServiceTitan: 60 requests per second per application per tenant for regular APIs; reporting APIs limited to 1 of the same report per minute.
Data volume sensitivity
ServiceTitan 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 ServiceTitan to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your ServiceTitan 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 ServiceTitan
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.