CRM migration

Migrate from XSale to Microsoft Dynamics 365 Sales

Field-level mapping, validation, and rollback between XSale and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .

XSale logo

XSale

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

75%

6 of 8

objects map 1:1 between XSale and Microsoft Dynamics 365 Sales .

Complexity

CModerate

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from XSale to Microsoft Microsoft Dynamics 365 Sales is a schema transformation, not a direct record copy. XSale stores data around Reps, Routes, Visits, Orders, and pre-order transactions in a schema optimized for mobile-first field execution. Microsoft Dynamics 365 Sales uses the Lead, Contact, Account, and Opportunity model with Activity tracking. We extract Reps as Contacts or Users, Routes as a custom entity, Visits as Activities, and Orders as Opportunities with line items. Pre-order transactions that do not map cleanly to Opportunity become a custom PreOrder object we provision in the destination org. XSale has no native workflow engine to migrate; we deliver a written inventory of any automation the customer built around route sequencing for their admin to rebuild in Power Automate. Historical timestamps on Visits and Orders are preserved as Activity dates and Opportunity close dates respectively.

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

XSale logo

XSale

What's pushing teams away

  • Sales-led pricing with no public tier table — total cost of ownership not transparent without vendor engagement.
  • Catalog website (xsalescrm.com) does not match actual product website (xsalesmobility.com and xsalessfa.com). The actual product brand is XSales Mobility.
  • DSD/route-sales specialty means firms wanting general-purpose CRM with marketing automation find the data model narrow.
  • API documentation is not publicly published; integration to non-SAP back-end systems requires vendor engagement.
  • Mobile fleet management add-ons (XSales Store) add complexity and cost for firms that only want sales automation.

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 XSale objects map to Microsoft Dynamics 365 Sales

Each row shows how a XSale 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.

XSale

Rep

maps to

Microsoft Dynamics 365 Sales

User or Contact

1:1
Fully supported

XSale Reps are the primary actors in the field execution model. We distinguish between internal Reps (sales team members) who should map to Dynamics 365 User records, and external Reps (store contacts, buyer contacts) who map to Contact records. We use the XSale Rep type or role field to determine the split. Internal Reps are resolved by email match against the destination User table; external Reps are inserted as Contacts against the appropriate Account.

XSale

Account (implied from Routes/Visits)

maps to

Microsoft Dynamics 365 Sales

Account

1:1
Fully supported

XSale Routes are anchored to store or customer locations that serve as Accounts in Dynamics 365. We extract the store or customer reference from each Route and create Account records in Dynamics 365 using the store name as Account Name and any stored address fields. The Account is created before the Route migration so that the AccountId lookup is satisfied on Route insert.

XSale

Route

maps to

Microsoft Dynamics 365 Sales

Custom Entity: Route__c

1:1
Fully supported

Routes are XSale's core organizational unit and have no direct Dynamics 365 equivalent. We provision a custom Route__c entity in the destination org with fields for route_name, rep_id (lookup to User), start_date, end_date, and status. The route sequence (order of stops) is preserved as a custom sequence_number field. Route__c is created as the first custom entity in the migration so that Visit records can reference it via a WhatId or custom lookup.

XSale

Visit

maps to

Microsoft Dynamics 365 Sales

Task or Event

1:1
Fully supported

XSale Visits record each stop along a route. We map Visits to Task records with TaskSubtype = Task (for store checks and pre-order confirmations) or Event records (for scheduled meetings with buyers). The WhatId on the Task or Event points to the Route__c custom entity. Visit timestamp maps to ActivityDate on Task or StartDateTime on Event. Any visit outcome or notes field maps to Description or custom Task fields.

XSale

Order

maps to

Microsoft Dynamics 365 Sales

Opportunity + OpportunityLineItem

1:many
Fully supported

XSale Orders map to Dynamics 365 Opportunities. The order amount becomes the Opportunity Amount field, the order date becomes the Close Date, and the status (pending, confirmed, delivered) maps to a corresponding Opportunity Stage. Line items within an XSale Order (SKUs, quantities, prices) map to OpportunityLineItem records. We resolve the Pricebook2 and Product2 references during migration.

XSale

Pre-order Transaction

maps to

Microsoft Dynamics 365 Sales

Custom Entity: PreOrder__c or Quote

lossy
Fully supported

Pre-order transactions in XSale capture buyer commitments before physical delivery. We assess the volume and structure during discovery. Low-volume pre-orders (under 5,000 records) map to a custom PreOrder__c entity linked to the Account and Route. High-volume pre-orders that represent a formal quoting process map to Salesforce Quote records, which are standard from Microsoft Dynamics 365 Sales Professional onward. The customer chooses the strategy during scoping.

XSale

Product (from Orders)

maps to

Microsoft Dynamics 365 Sales

Product2

1:1
Fully supported

SKUs and products referenced in XSale Orders are extracted and provisioned as Product2 records in Dynamics 365. Standard Price Book entries are created during the product phase. ProductCode maps from the XSale SKU field. If XSale stores product images or descriptions, these migrate as ContentDocument records linked to Product2.

XSale

Owner

maps to

Microsoft Dynamics 365 Sales

User

1:1
Fully supported

XSale Rep ownership on Routes, Visits, and Orders maps to Dynamics 365 User records. We resolve by email match. Any XSale Rep without a matching User in the destination org goes to a reconciliation queue for the customer's admin to provision before record import resumes. OwnerId on Opportunity must be resolved before Opportunity insert.

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.

XSale logo

XSale gotchas

High

SAP integration metadata is critical for ongoing operations

High

Mobile-captured data syncs from rugged devices

Medium

GPS tracking data volume is high

Medium

Catalog and brand naming inconsistency

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

  • Routes and Visits have no native Dynamics 365 equivalent

    XSale's Routes and Visits are core to the platform's value but have no direct counterpart in Microsoft Dynamics 365 Sales . We address this by provisioning a custom Route__c entity and mapping Visits to Tasks or Events linked to Route__c. However, the customer should understand that route sequencing, stop optimization, and GPS-based visit tracking that XSale provides natively will require separate evaluation of Dynamics 365 Field Service or a third-party route optimization add-in post-migration. We do not migrate route optimization algorithms.

  • Pre-order transactions require custom entity design

    XSale's pre-order transaction records (commitments placed before physical delivery) do not map cleanly to any standard Dynamics 365 object. We offer two migration strategies: a custom PreOrder__c entity linked to Account and Route, or Salesforce Quote records if the customer wants formal quoting workflow. The choice depends on record volume, whether pre-orders need approval workflows, and whether they feed into an ERP. We decide during scoping and provision the schema before data migration begins.

  • XSale REST API rate limits may constrain export window

    XSale's REST API enforces rate limits that vary by subscription tier. We implement exponential backoff and batch chunking during extraction to stay within these limits. For accounts with large Visit histories (over 100,000 records), we stage the export across multiple windows, checkpointing by last_modified_date to avoid reprocessing. The extraction phase typically takes one to three days depending on API responsiveness and record volume.

  • Data quality on XSale address fields affects Account creation

    XSale's address data is optimized for mobile GPS capture (lat/long, route-friendly formats) rather than formatted mailing addresses. During Account creation in Dynamics 365, we apply address standardization to map XSale location records to the Account Address fields. Any XSale Route or Visit without a resolvable address is flagged for manual review during sandbox migration before the full production run.

Migration approach

Six steps for a successful XSale to Microsoft Dynamics 365 Sales data migration

  1. Discovery and data audit

    We audit the XSale instance for Rep count (distinguishing internal vs external), Route count, Visit volume, Order count, pre-order transaction volume, and any custom fields the customer has added to these objects. We also assess the destination Dynamics 365 org for existing Accounts, Contacts, and Users. The discovery output is a written migration scope document with record counts per object, a pre-order migration strategy recommendation (custom entity vs Quote), and a pre-migration data cleansing checklist covering duplicate Reps, orphaned Routes, and incomplete address records.

  2. Schema provisioning in Dynamics 365

    We provision the Route__c custom entity (and PreOrder__c if chosen) in the destination Dynamics 365 org via the Power Platform admin center or the Dataverse API. We create all custom fields, lookup relationships, and any required picklist values before any data import. Schema is deployed into a Sandbox org first for validation, then migrated to production. We also configure the Opportunity stage values and Sales Process to match XSale's order status values.

  3. Sandbox migration and reconciliation

    We run a full migration into a Dynamics 365 Sandbox using production-like data volume. The customer's operations lead reconciles record counts (Reps in, Users and Contacts in, Routes in, Visits in, Orders in, Opportunities in), spot-checks 20-30 records per object against the XSale source, and validates that Visit timestamps map correctly to Activity dates. Any mapping corrections happen in the sandbox before production migration begins.

  4. Owner and User provisioning

    We extract every distinct Rep from XSale and match by email against the Dynamics 365 User table. Internal Reps (sales team members) must have a corresponding User record provisioned by the customer's admin. External Reps and store contacts migrate as Contact records against the appropriate Account. Reps without a matching User go to a reconciliation queue. This step gates the production migration because OwnerId is required on Opportunities.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Users (manually provisioned, validated), Accounts (from XSale store/customer locations), Route__c records (first custom entity), Contacts (external Reps), Products and Pricebook entries, Opportunities (from Orders, with OwnerId and AccountId resolved), OpportunityLineItems (from Order line items), Tasks and Events (from Visits, linked to Route__c), PreOrder__c or Quote records (from pre-order transactions). Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and handoff

    We freeze XSale writes during cutover, run a final delta migration of any records modified during the migration window, then enable Microsoft Dynamics 365 Sales as the system of record. We deliver a written inventory of any route-sequencing or visit-triggered logic the customer built in XSale for their admin to evaluate rebuilding in Power Automate. We support a three-day hypercare window where we resolve reconciliation issues. We do not rebuild workflows, route optimizers, or field service scheduling tools; those are separate engagements.

Platform deep dives

Context on both ends of the pair

XSale logo

XSale

Source

Strengths

  • Deep SAP integration (ECC, DSD, S/4HANA, SDD LMD).
  • DSD workflows including route sequence, suggested orders, credits.
  • XSales Maps real-time GPS tracking.
  • XSales Store mobile device fleet management.
  • Offline-capable mobile-first design.

Weaknesses

  • Sales-led pricing with no public tiers.
  • Catalog website mismatch with actual product URL.
  • Narrow DSD/route-sales specialty.
  • No public API documentation.
  • Mobile fleet add-ons add complexity for sales-only buyers.
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?

Moderate CRM migration. 1 of 8 objects need a manual workaround.

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across XSale and Microsoft Dynamics 365 Sales .

  • Object compatibility

    C

    1 of 8 objects need a manual workaround.

  • 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

    XSale: Not publicly documented — typical SaaS limits assumed and confirmed during scoping..

  • Data volume sensitivity

    B

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

Estimator

Estimate your XSale 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 XSale to Microsoft Dynamics 365 Sales data migrations

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

Can't find your answer?

Walk through your XSale 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 migrations land between two and four weeks for accounts under 10,000 Reps, 5,000 Routes, and 20,000 Visit records with no pre-order transaction history. Migrations with pre-order transaction histories (over 5,000 records), large Visit volumes (over 100,000 records), or custom entity designs requiring multiple rounds of sandbox testing move to six to ten weeks because of schema provisioning time and bulk API extraction windows.

Adjacent paths

Related migrations to explore

Ready when you are

Move from XSale.
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