CRM migration
Field-level mapping, validation, and rollback between Zuper and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Zuper
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
12 of 12
objects map 1:1 between Zuper and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
48–72 hours
Overview
Zuper operates as a field service management platform organized around Jobs, Customers, Teams, and Technicians — a model optimized for dispatch and on-site work orders rather than traditional sales pipeline management. Microsoft Dynamics 365 Sales uses a lead-to-opportunity CRM model built on the Dataverse Common Data Model, with entities for Accounts, Contacts, Leads, Opportunities, and Tasks. Migrating from Zuper to Dynamics 365 Sales requires transforming job records into opportunity or custom WorkOrder entities, splitting Zuper Customers into both Account and Contact records, mapping technician assignments to Dynamics Users, and reconstructing scheduling logic as manual processes or Power Automate flows. The migration carries all Zuper records that have CRM equivalents — customers, contacts, jobs, custom fields, attachments — into Dataverse. Workflows, automations, guided workflows, and scheduling rules do not migrate; they must be rebuilt using Dynamics 365 Sales workflows, Power Automate, or the workflow designer. We use Zuper's REST API for extraction, transform data per the mapping plan, and load via the Dynamics Web API with batch operations. A sample migration with field-level diff validates the mapping before the full run commits. Delta pickup captures any records modified during cutover.
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
Zuper platform overview
Scorecard, SWOT, gotchas, and pricing for Zuper.
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 Zuper 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.
Zuper
Customer
Microsoft Dynamics 365 Sales
Account
1:1Zuper Customer records representing organizations map directly to Dynamics 365 Sales Account records. The Account Name, Website, Industry, Phone, and Address fields carry over with direct field-level mapping. Zuper Customers that represent individual persons must be split into both Account (for the company, if any) and Contact records.
Zuper
Customer (individual)
Microsoft Dynamics 365 Sales
Contact
1:1Zuper Customers without an associated organization, or where the individual is the primary record, map to Dynamics Contact. The Contact inherits the customer's name, email, phone, and address fields directly. The Contact links to the primary Account via the Parent Customer ID lookup field in Dynamics.
Zuper
Job
Microsoft Dynamics 365 Sales
Opportunity
1:1Zuper Jobs transform into Dynamics Opportunities when the job has revenue or sale potential. The job name becomes the Opportunity name, the job amount or estimate maps to the Estimated Revenue field, job status maps to Opportunity Stage via value mapping, and the expected completion date becomes the Estimated Close Date. Jobs that represent service-only work with no revenue map to Task records instead.
Zuper
Job
Microsoft Dynamics 365 Sales
Task
1:1Zuper Jobs without revenue potential — maintenance visits, inspections, or non-billable service calls — map to Dynamics Task records. The Task subject carries the job title, description maps to the Task's description field, and the assigned technician resolves to the Task's OwnerId. Tasks preserve the original job's create date for audit continuity.
Zuper
Job Line Item
Microsoft Dynamics 365 Sales
Opportunity Product
1:1Zuper job line items representing products or services on a billable job map to Dynamics Opportunity Product records. Each line item creates an Opportunity Product entry linked to the parent Opportunity. The product name, quantity, unit price, and discount carry over. Products that do not exist in Dynamics are created as basic Product records during migration.
Zuper
Team
Microsoft Dynamics 365 Sales
Team (Dynamics)
1:1Zuper Teams map to Dynamics 365 Sales Teams. Teams in Zuper represent groupings of technicians for scheduling and dispatch purposes. In Dynamics, Teams serve a similar grouping function for user access and record ownership. Each Zuper Team becomes a Dynamics Team record, with team members (Users) assigned to the team post-migration.
Zuper
User (Technician)
Microsoft Dynamics 365 Sales
User (SystemUser)
1:1Zuper Users who are technicians map to Dynamics System User records. Owner resolution happens by email match — if the technician's email matches an existing Dynamics user, the UserId links directly. Unmatched users are flagged before migration for your admin to create Dynamics accounts or assign records to a fallback owner.
Zuper
Custom Field (Customer)
Microsoft Dynamics 365 Sales
Custom Column (Account/Contact)
1:1Zuper custom fields on Customer records require corresponding custom columns in Dynamics on the Account and/or Contact table. We analyze each custom field's data type — text, number, date, pick-list — and create matching column types in Dynamics. Pick-list fields require value-by-value mapping if the option set differs between platforms.
Zuper
Custom Field (Job)
Microsoft Dynamics 365 Sales
Custom Column (Opportunity/Task)
1:1Zuper custom fields on Job records map to custom columns on the Opportunity or Task record in Dynamics, depending on how the job transforms. Job-specific custom properties (e.g., site location, job type classification, priority flags) carry as custom columns on the target entity. The original Zuper custom field values populate these columns during migration.
Zuper
Attachment
Microsoft Dynamics 365 Sales
Note / Attachment
1:1Zuper file attachments on Jobs or Customers re-upload to Dynamics as Notes with file attachments or SharePoint document locations. File size limits apply — Dynamics default is 32MB per file. Inline images in job descriptions download and rehost as Note attachments. Attachments preserve the original file name and any associated description.
Zuper
Job Status
Microsoft Dynamics 365 Sales
Custom Column on Opportunity
1:1Zuper job status values (Scheduled, In Progress, Completed, Cancelled) map to a custom pick-list column on the Opportunity or Task. We create a Zuper_Job_Status__c custom column and map each source status value to the nearest Dynamics-equivalent option. Completed jobs map to Closed Won or Closed Lost based on the job outcome.
Zuper
Timesheet / Timeoff
Microsoft Dynamics 365 Sales
Custom Table (Timesheet)
1:1Zuper timesheets and time-off records have no native equivalent in Dynamics 365 Sales CRM. We preserve timesheet data as a custom Dataverse table with columns for User, Date, Hours, Time-Off Type, and Status. This custom table provides reference data post-migration but does not connect to Dynamics payroll or resource management features.
| Zuper | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Customer | Account1:1 | Fully supported | |
| Customer (individual) | Contact1:1 | Fully supported | |
| Job | Opportunity1:1 | Fully supported | |
| Job | Task1:1 | Fully supported | |
| Job Line Item | Opportunity Product1:1 | Fully supported | |
| Team | Team (Dynamics)1:1 | Fully supported | |
| User (Technician) | User (SystemUser)1:1 | Fully supported | |
| Custom Field (Customer) | Custom Column (Account/Contact)1:1 | Fully supported | |
| Custom Field (Job) | Custom Column (Opportunity/Task)1:1 | Fully supported | |
| Attachment | Note / Attachment1:1 | Fully supported | |
| Job Status | Custom Column on Opportunity1:1 | Fully supported | |
| Timesheet / Timeoff | Custom Table (Timesheet)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.
Zuper gotchas
No bulk API endpoint means large migrations are sequential
Quote object schema is shallower than Job schema
Workflow Builder automations have no export capability
Multi-custom-field filter on Properties API returns no records when multiple filters applied
Mobile app instability causes incomplete Job records in production data
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
Inventory Zuper records and map to Dynamics entities
FlitStack AI connects to your Zuper instance via API and inventories all Customers, Jobs, Teams, Users, and custom field definitions. We produce a data inventory report showing record counts by type, custom field counts, and attachment volumes. Simultaneously, we analyze your Dynamics 365 Sales environment to identify existing Accounts, Contacts, and custom tables. The inventory output is the foundation for the mapping plan — it identifies which Zuper jobs should become Opportunities versus Tasks, which customers need Account-Contact splitting, and which custom fields require new Dynamics columns.
Build and validate the mapping plan
We draft the full object and field mapping plan covering every Zuper entity. The plan specifies transformation rules for each field — direct mappings, value mappings for pick-lists, and custom field creation requirements. A sample of 50–100 records (covering Customers, Jobs, and line items) migrates first. We generate a field-level diff report comparing source values to destination values, surfacing any data mismatches before the full run. Your team reviews the diff and approves the mapping plan; we adjust transformation rules based on feedback.
Create Dynamics custom columns and prepare schema
For every Zuper custom field that has no direct Dynamics equivalent, we deliver a schema preparation checklist. This lists each custom column to create in Dynamics — column name, data type, pick-list option values, and target table (Account, Contact, Opportunity, or custom table). Your Dynamics admin creates these columns using the Dynamics maker experience or advanced settings before the migration window. We also provide the security role assignment plan so each Zuper technician receives the appropriate Dynamics access level during the migration.
Migrate accounts and contacts before jobs
Dynamics 365 Sales requires referential integrity — Opportunities must reference an Account, and Contacts must link to an Account via the Parent Customer field. We sequence the migration so Customer records (mapped to Account) load first, followed by Contact records linked to those Accounts. Only after all Accounts and Contacts exist do we load Jobs mapped as Opportunities or Tasks with their respective owner assignments. This ordering prevents foreign-key errors and ensures every Opportunity has a valid CustomerId lookup.
Execute full migration with delta-pickup window
The full migration runs against Dynamics 365 Sales using the Dataverse Web API with batch operations for efficiency. A delta-pickup window of 24–48 hours runs alongside the cutover to capture any records modified or created in Zuper during the migration window. All operations are logged in an audit trail. After the delta window closes, we perform reconciliation — comparing migrated record counts and a spot-check of field values against the Zuper source. One-click rollback is available if reconciliation reveals critical data gaps.
Platform deep dives
Zuper
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Zuper and Microsoft Dynamics 365 Sales .
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Zuper and Microsoft Dynamics 365 Sales .
Object compatibility
All 8 core objects map 1:1 between Zuper 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
Zuper: Not publicly documented in current developer documentation.
Data volume sensitivity
Zuper 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 Zuper to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Zuper 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 Zuper
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.