CRM migration
Field-level mapping, validation, and rollback between Kickserv and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Kickserv
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
14 of 14
objects map 1:1 between Kickserv and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
48–72 hours
Overview
Kickserv is a field-service management platform organized around Jobs, Customers, Estimates, and Invoices with a QuickBooks-first accounting model. Its data model is flat and technician-centric: jobs carry their own status, line items, and owner assignments without the layered opportunity pipeline or lead/concept split that Dynamics 365 Sales uses. Dynamics 365 Sales, built on Dataverse, organizes around Accounts, Contacts, Leads, Opportunities, and Cases — each with its own state machine, security role, and form designer. Migrating from Kickserv to Dynamics 365 Sales requires reorienting job records into the Case entity (or custom Field Service Work Order tables), remapping invoice data to the Sales Order / Invoice entities, and deciding whether Kickserv customers without a sales relationship land as Accounts or Contacts. Estimates map to Dynamics Quotes with their own validity window and line-item structure. We handle the API extraction from Kickserv using its XML-over-HTTPS v2 endpoint with Basic Authentication, transform the payload to match Dynamics 365 Sales table structure, and load via the Dataverse Web API. Workflows, automations, messaging templates, and custom document templates do not migrate — they require a Dynamics-side rebuild using Power Automate, Dynamics workflows, or Liquid template editors. Our approach sequences the migration so foreign-key dependencies resolve in the right order: Accounts → Contacts → Cases → Quotes → Orders → Invoices, with a delta-pickup window capturing 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
Kickserv platform overview
Scorecard, SWOT, gotchas, and pricing for Kickserv.
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 Kickserv 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.
Kickserv
Customer
Microsoft Dynamics 365 Sales
Account
1:1Kickserv Customer maps directly to Dynamics 365 Account. Account carries the company name, address, phone, and industry. Kickserv customers with no address (e.g., individual homeowners) may need to be evaluated for Contact-only records if they will never generate a sales opportunity.
Kickserv
Contact
Microsoft Dynamics 365 Sales
Contact
1:1Kickserv Contact maps to Dynamics 365 Contact with a required AccountId lookup. Contacts without a primary customer in Kickserv are flagged and assigned to a placeholder 'Unassigned Customer' Account so the lookup field is never null in Dynamics. This approach ensures referential integrity during migration and allows administrators to later reassign contacts to the correct accounts.
Kickserv
Job
Microsoft Dynamics 365 Sales
msdyn_workorder (Dynamics 365 Field Service)
1:1Kickserv Job has no direct Dynamics 365 Sales equivalent — it maps to the Field Service Work Order table (msdyn_workorder) if Dynamics 365 Field Service is licensed. Each work order carries a primary customer (Account), a primary contact, a service territory, a work order type, and status. Kickserv job status maps to msdyn_systemstatus with a value-by-value lookup.
Kickserv
Job (no Field Service license)
Microsoft Dynamics 365 Sales
Incident (Case)
1:1If Dynamics 365 Field Service is not in scope, Kickserv Jobs migrate as Dynamics 365 Cases (incident table). The Case title carries the job name, the Account lookup links to the customer, and a custom Kickserv_Job_ID__c field preserves the source reference. Case origin and priority map from Kickserv job priority pick-list values.
Kickserv
Estimate
Microsoft Dynamics 365 Sales
Quote
1:1Kickserv Estimate maps to Dynamics 365 Quote. The estimate total maps to EstimatedValue, line items map to Quote Details (quotedetail), and the estimate's status (Draft, Sent, Approved, Declined) maps to the Dynamics quote statecode. Original estimate date and expiry date migrate as custom fields if required for audit continuity.
Kickserv
Invoice
Microsoft Dynamics 365 Sales
SalesOrder / Invoice
1:1Kickserv Invoice maps to Dynamics 365 SalesOrder (when open) or Invoice (when posted). The Kickserv invoice total, balance due, and payment status map to corresponding fields. Note that Dynamics 365 Sales does not have a built-in accounting module — teams using QuickBooks in Kickserv must connect Dynamics Sales to Business Central or a third-party accounting connector post-migration.
Kickserv
Employee
Microsoft Dynamics 365 Sales
SystemUser
1:1Kickserv Employees (technicians, dispatchers, admins) resolve by email to Dynamics 365 SystemUser records. Active Kickserv employees map to active Dynamics users; archived employees map to inactive users with a custom Kickserv_Employee_ID__c field for reference. User security roles are assigned based on Kickserv role (Admin, Technician, Office Staff).
Kickserv
Event / Schedule
Microsoft Dynamics 365 Sales
BookableResourceBooking
1:1Kickserv schedule events (job assignments, time blocks) map to Dynamics 365 Field Service BookableResourceBooking. Each booking links a BookableResource (the technician) to a Work Order (the job) with a start/end time window. If Field Service is not licensed, events migrate as Dynamics 365 Activities (calendar).
Kickserv
Time Entry
Microsoft Dynamics 365 Sales
TimeEntry (msdyn_timeentry)
1:1Kickserv time entries map to the Time Entry table in Dynamics 365 Field Service (msdyn_timeentry) if Field Service is licensed. Each entry links to a BookableResourceBooking, carries hours, and includes a billable/non-billable flag. Original start/end timestamps and break deductions are preserved.
Kickserv
Item / Product
Microsoft Dynamics 365 Sales
Product
1:1Kickserv Items (parts, materials, service line items) map to Dynamics 365 Product. Product type (Inventory Item, Service, Non-inventory) maps from the Kickserv item type. Unit price and cost map to Price and StandardCost on the Product. Kickserv item categories map to Product Type or a custom field if finer grouping is needed.
Kickserv
Note
Microsoft Dynamics 365 Sales
Annotation
1:1Kickserv notes migrate as Dynamics 365 Annotations (notes) on their parent record (Account, Contact, Work Order, or Case). Rich-text content is preserved in the Annotation.body field. Original note creation date and author (employee email) migrate as custom fields if not automatically carried.
Kickserv
Charge / Payment
Microsoft Dynamics 365 Sales
SalesOrderDetail (for line items) + PaymentTerm mapping
1:1Kickserv charges (line items on jobs or invoices) map to Dynamics SalesOrderDetail. Payments recorded in Kickserv migrate as payment records with a custom reference back to the source Kickserv Payment ID. Since Dynamics 365 Sales lacks a native payments ledger, payment history is preserved in a custom entity for audit purposes.
Kickserv
Custom Field (Job)
Microsoft Dynamics 365 Sales
Custom Column on msdyn_workorder or incident
1:1Kickserv custom fields on Jobs (e.g., custom property inspection types, site access codes) require new custom columns in Dynamics. We create the column using the same data type (picklist, text, number, date) and map each value during migration. Custom field metadata is documented in the pre-migration schema plan so Dynamics admins can add columns before the data load runs.
Kickserv
Tag
Microsoft Dynamics 365 Sales
msdyn_tag (custom tag entity)
1:1Kickserv Tags (used for job categorization, service types, or dispatch labels) have no native Dynamics 365 Sales equivalent. Tags migrate as records in a custom msdyn_tag table with a many-to-many relationship to Work Orders and Cases. Tags can also be mapped to Dynamics Territory or a custom pick-list on the work order for simpler filtering.
| Kickserv | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Customer | Account1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Job | msdyn_workorder (Dynamics 365 Field Service)1:1 | Fully supported | |
| Job (no Field Service license) | Incident (Case)1:1 | Fully supported | |
| Estimate | Quote1:1 | Fully supported | |
| Invoice | SalesOrder / Invoice1:1 | Fully supported | |
| Employee | SystemUser1:1 | Fully supported | |
| Event / Schedule | BookableResourceBooking1:1 | Fully supported | |
| Time Entry | TimeEntry (msdyn_timeentry)1:1 | Fully supported | |
| Item / Product | Product1:1 | Fully supported | |
| Note | Annotation1:1 | Fully supported | |
| Charge / Payment | SalesOrderDetail (for line items) + PaymentTerm mapping1:1 | Fully supported | |
| Custom Field (Job) | Custom Column on msdyn_workorder or incident1:1 | Fully supported | |
| Tag | msdyn_tag (custom tag entity)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.
Kickserv gotchas
No offline mode breaks field work in dead zones
API access gated behind Premium plan tier
QuickBooks sync errors corrupt data if not resolved pre-migration
20-user hard cap forces complete platform switch
API token resets on password change
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 Kickserv data volume and Dynamics environment readiness
We connect to the Kickserv API (Basic Authentication, employee token) and enumerate all objects: Customers, Contacts, Jobs, Estimates, Invoices, Employees, Items, Time Entries, Notes, and any custom fields. We simultaneously audit the target Dynamics 365 environment: confirm the license type (Professional vs Enterprise), identify whether Field Service is provisioned, and check the existing Account/Contact structure. We deliver a pre-migration audit report listing record counts per object, a list of custom fields requiring Dynamics column creation, and the Field Service provisioning decision point. No data is modified during this step.
Design the object and field mapping schema with a Dynamics admin
Using the audit report, we build a mapping schema that covers all 14 object pairs and all field-level transformations. For each Kickserv custom field, we specify the target Dynamics column name, data type, and whether it requires a custom column or fits an existing field. For the job-to-Work-Order question, we confirm whether Field Service is in scope or jobs map to Cases. We deliver this schema as a shared document for Dynamics admin review. The admin creates the custom columns in Dynamics before the migration run so the schema is ready when data lands.
Run a sample migration with field-level diff on a representative record slice
We extract a sample set from Kickserv — typically 100–300 records spanning customers, contacts, jobs, estimates, invoices, and time entries — and load them into a Dynamics staging environment. We generate a field-level diff report comparing source values against destination values for every mapped field. This report is the verification checkpoint: it confirms that Kickserv job status values map correctly to Dynamics SystemStatus, that time-entry hours land in msdyn_timeentry.Duration, and that the AccountId lookups resolve for all Contact records. No full migration runs until the sample diff is signed off.
Execute the full migration with sequenced dependency resolution
The full migration runs in the correct dependency order: Accounts first (so they exist as lookup targets), then Contacts (resolving to AccountId), then Products (so line items can reference them), then Work Orders or Cases, then Quotes, then Sales Orders, then Time Entries, then Notes. Each object is loaded in its own pass. Owner resolution happens by email match against Dynamics SystemUser — unmatched owners are flagged and assigned to a fallback owner until the admin adds them to Dynamics. Throughout the run, the audit log records every operation for rollback traceability.
Cut over with delta-pickup window and rollback hold
After the full load completes and the sample diff is confirmed, we open a delta-pickup window — typically 24–48 hours — during which any Kickserv records modified or created after the initial extraction are re-synced to Dynamics. The delta pass uses the Kickserv object ID stored in Kickserv_ID__c / Kickserv_Job_ID__c fields to de-duplicate records that were already loaded. During this window, the Kickserv account remains fully operational with read-only API access. Once the delta pass completes, the migration team runs a final reconciliation count and issues a go/no-go. An audit log summary and a one-click rollback manifest are delivered — if reconciliation fails, a full rollback to the pre-migration state is available for 72 hours post-cutover.
Platform deep dives
Kickserv
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 Kickserv 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
Kickserv: Not publicly documented.
Data volume sensitivity
Kickserv 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 Kickserv to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Kickserv 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 Kickserv
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.