CRM migration

Migrate from Handyman to Microsoft Dynamics 365 Sales

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

Handyman logo

Handyman

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

100%

12 of 12

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

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Handyman stores field service data around jobs, customers, technicians, line items, and assets. Dynamics 365 Sales operates on a different paradigm — accounts, contacts, opportunities, and orders built on Microsoft Dataverse. The migration must therefore reshape a job-centric data model into a CRM-centric one. We extract customers and companies as Accounts, service contacts as Contacts, and completed jobs as Opportunities with line items. Handyman's service agreements, recurring schedules, and asset registers require custom fields in Dynamics 365 since those are not native concepts — we create the custom schema before data lands. Technician assignments map to OwnerId on the Opportunity, and any custom properties Handyman stores per job migrate as Opportunity-level custom fields. We run a sample migration with field-level diff first, then execute the full transfer with a 24–48 hour delta-pickup window capturing any jobs created or updated during cutover. The approach uses the Dynamics 365 Web API for record creation and the Bulk API for high-volume operations, with owner resolution by email match against destination users before any records write.

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

Handyman logo

Handyman

What's pushing teams away

  • Limited scalability beyond small team sizes, with businesses outgrowing the platform as they add multiple technicians or crews.
  • Feature set narrows for businesses expanding into specialty trades that require more complex project management capabilities.
  • Integration ecosystem narrower than larger competitors, making it difficult to connect with specialized accounting or CRM tools.

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

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

Handyman

Customer

maps to

Microsoft Dynamics 365 Sales

Account

1:1
Fully supported

Handyman customers map to Dynamics 365 Accounts. Customer name becomes Account Name, address fields map to Address composite fields, and primary contact links via Account's primary contact lookup. Multi-location customers create parent-child Account hierarchies in Dynamics 365, preserving the original Handyman location structure as separate child Accounts under a parent company Account.

Handyman

Customer Contact

maps to

Microsoft Dynamics 365 Sales

Contact

1:1
Fully supported

Contact records on each Handyman customer map to Dynamics 365 Contacts. Email, phone, mobile, job title, and address fields translate directly. Contact links to Account via AccountId lookup. Multiple contacts per customer create separate Contact records all linked to the same Account.

Handyman

Job

maps to

Microsoft Dynamics 365 Sales

Opportunity

1:1
Fully supported

Completed and in-progress Handyman jobs map to Dynamics 365 Opportunities. Job name becomes Opportunity Name, job total amount becomes Estimated Revenue, job date becomes Close Date, and job status maps to Opportunity Stage via value mapping. Open jobs become open Opportunities with target close dates from scheduled service dates.

Handyman

Job Line Item

maps to

Microsoft Dynamics 365 Sales

Opportunity Product

1:1
Fully supported

Each Handyman job line item (labor, materials, equipment) becomes an Opportunity Product record linked to the parent Opportunity. Product Name maps to the Opportunity Product's product lookup, quantity and unit price map directly, and description carries over. Handyman service categories may require pre-creating Products in Dynamics 365 before migration.

Handyman

Technician

maps to

Microsoft Dynamics 365 Sales

SystemUser (Owner)

1:1
Fully supported

Handyman technicians resolve to Dynamics 365 users by email match. Each user's records (Jobs, Customers) receive the matched SystemUser as OwnerId. Unmatched technicians are flagged before migration — the account either gets invited to Dynamics 365 first or their records are assigned to a fallback owner.

Handyman

Service Agreement

maps to

Microsoft Dynamics 365 Sales

Custom Agreement__c Table

1:1
Fully supported

Handyman recurring service agreements have no native Dynamics 365 equivalent. We create a custom Agreement__c table with fields for agreement name, customer (Account lookup), start date, end date, frequency, and included services. The table links to Account and stores the original Handyman agreement ID for traceability.

Handyman

Asset / Equipment

maps to

Microsoft Dynamics 365 Sales

Custom Asset__c Table

1:1
Fully supported

Handyman asset records (customer equipment, serial numbers, service history) require a custom Asset__c table in Dynamics 365. Fields include Asset Name, serial number, make/model, customer (Account lookup), installation date, and last service date. Asset links to Account and inherits ownership from the customer Account.

Handyman

Job Notes / Attachments

maps to

Microsoft Dynamics 365 Sales

Annotation (Notes) / Attachment

1:1
Fully supported

Handyman job notes, photos, and attachments migrate as Dynamics 365 Annotations (Notes) on the related Opportunity. Original file names and creation timestamps are preserved in the annotation metadata. Inline images embedded in notes are extracted, downloaded, and rehosted in Dynamics 365's SharePoint-integrated document storage, with links preserved in the annotation text.

Handyman

Job Status / Workflow

maps to

Microsoft Dynamics 365 Sales

Opportunity Stage + Custom Status Fields

1:1
Fully supported

Handyman job statuses (Scheduled, In Progress, Completed, Cancelled) map to Dynamics 365 Opportunity Stages. We create a stage mapping table before migration: Scheduled maps to 'Qualification', In Progress maps to 'Value Proposition', Completed maps to 'Closed Won', Cancelled maps to 'Closed Lost'. Original Handyman status timestamps are preserved in custom datetime fields.

Handyman

Invoice

maps to

Microsoft Dynamics 365 Sales

Order / Invoice (via Business Central)

1:1
Fully supported

Handyman invoices cannot map directly to Dynamics 365 Sales — Sales has Orders and Invoices but they require integration with Business Central for full accounts receivable functionality. We migrate invoice records as custom Invoice__c records preserving invoice number, amount, date, and line items. For full AR capability, a Business Central integration is required post-migration.

Handyman

Custom Customer Property

maps to

Microsoft Dynamics 365 Sales

Account Custom Column

1:1
Fully supported

Any Handyman custom fields on the customer record map to custom columns on the Account table in Dynamics 365. Field type translation applies: text fields become Text, date fields become Date, pick-list values become Option Sets. The schema is created in Dynamics 365 before migration runs.

Handyman

Custom Job Property

maps to

Microsoft Dynamics 365 Sales

Opportunity Custom Column

1:1
Fully supported

Handyman custom fields attached to jobs map to custom columns on the Opportunity table. Same type translation logic as customer properties applies. Handyman stores some properties as JSON — these are flattened into separate text columns with original values preserved as a reference.

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.

Handyman logo

Handyman gotchas

Medium

Pricing model terminology varies across destinations

Low

Service history chunking for accounts with large job counts

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

  • Job-to-Opportunity paradigm shift loses job scheduling context

    Handyman is built around a job scheduler — technicians, time windows, dispatch board, and availability drive the product. Dynamics 365 Sales has no scheduling entity. Completed jobs become Opportunities but the scheduling mechanics disappear. If you need field technician scheduling in Dynamics 365, you'll need the separate Dynamics 365 Field Service application, which is a different product with its own setup. We can migrate the data that exists; the scheduling workflows require a separate implementation decision.

  • Handyman invoices have no native Dynamics 365 Sales equivalent

    Handyman generates invoices with line items, tax, and payment status. Dynamics 365 Sales can create Orders and Invoices, but true accounts-receivable functionality (payment tracking, aging, AR reconciliation) requires Dynamics 365 Business Central. We migrate invoice records as read-only historical records in a custom Invoice__c table, but new invoices post-migration must originate from Business Central or a third-party accounting integration. This is a configuration decision your team needs to make before go-live.

  • Recurring service agreements require a custom table

    Handyman stores recurring service agreements with frequency, included services, and automatically-generated child jobs. Dynamics 365 Sales has no native recurring-agreement entity. We create an Agreement__c custom table to store the agreement terms, linking each agreement to the customer Account. However, auto-generation of child jobs from agreements is not native to Dynamics 365 Sales — this workflow must be rebuilt in Power Automate or a custom Power App if you want it to continue automatically.

  • Asset tracking needs a custom table with relationship setup

    Handyman's asset register (equipment, serial numbers, service history per asset) has no direct equivalent in Dynamics 365 Sales. We create a custom Asset__c table with fields for name, serial number, make/model, and account link. The asset-to-account relationship is a 1:N relationship from Account to Asset__c. Your Dynamics 365 admin will need to add the Asset__c table to forms and views manually after migration — we provide the schema setup plan as part of the engagement.

  • Sales Professional tier caps custom tables at 15

    Dynamics 365 Sales Professional limits custom tables to 15 total. If your Handyman setup uses more than 15 custom fields per entity, or if you need both the Asset__c and Agreement__c tables plus additional custom fields, you'll hit the Professional tier limit. We default pricing to the Sales Enterprise tier assumption (unlimited custom tables) but flag this for your team to confirm licensing before migration planning. Upgrading from Professional to Enterprise mid-migration causes re-indexing of all custom tables.

Migration approach

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

  1. Audit Handyman data and design Dynamics 365 schema

    We extract a full export of Handyman data including customers, contacts, jobs, line items, assets, service agreements, and custom field definitions. We analyze field types, pick-list values, and relationships. Then we design the Dynamics 365 custom schema — creating the Asset__c and Agreement__c tables, adding custom columns to Account and Opportunity, and defining pick-list values for status mappings. The schema design document goes to your Dynamics 365 admin for review before any records are created.

  2. Resolve technicians to Dynamics 365 users by email

    Handyman technicians are matched to Dynamics 365 SystemUser records by email address. We generate a match report showing matched users, users who exist in Dynamics 365 but don't match (different email), and technicians who have no corresponding Dynamics 365 user account. Your team resolves the unmatched set before migration — either by inviting them to Dynamics 365 or by assigning their records to a designated fallback owner. No job records migrate without a resolved owner.

  3. Migrate accounts before contacts before opportunities

    Dynamics 365 requires foreign-key resolution in a specific order: Accounts must exist before Contacts (via AccountId), and Accounts and Contacts must exist before Opportunities can link to them. We sequence the migration as: (1) Accounts from Customers, (2) Contacts from Customer Contacts, (3) Custom tables (Asset__c, Agreement__c), (4) Opportunities from Jobs with technician resolved to OwnerId, (5) Opportunity Products from Job Line Items. Each phase validates record counts and referential integrity before the next phase begins.

  4. Run sample migration with field-level diff

    A representative slice of records — typically 100–500 spanning multiple customers, jobs, line items, and assets — migrates first. We generate a field-level comparison report showing source value, destination value, mapping type applied, and any transformation notes. You verify that job totals map to EstimatedValue, status values map correctly through the value mapping table, and asset serial numbers land in the correct custom field. Sample approval gates the full run.

  5. Execute full migration with delta-pickup window

    The full dataset migrates using the Dynamics 365 Bulk API for high-volume Opportunity creation, with the Web API handling lookup relationships and custom table inserts. A 24–48 hour delta-pickup window captures any Handyman jobs created or updated during the migration run. All operations are logged to an audit table with source system ID, destination record ID, operation type, and timestamp. One-click rollback reverts the destination environment to its pre-migration state if reconciliation fails.

Platform deep dives

Context on both ends of the pair

Handyman logo

Handyman

Source

Strengths

  • Purpose-built for handyman and general trades with terminology that matches the trade.
  • Integrated job management, scheduling, and invoicing without requiring third-party integrations.
  • Supports multiple pricing models including flat-rate and time-and-materials billing.

Weaknesses

  • Narrower integration ecosystem compared to enterprise field service platforms.
  • Limited scaling for businesses with multiple crews or complex organizational structures.
  • Fewer advanced features for specialty trades or project-based work beyond simple jobs.
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 Handyman 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

    Handyman: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Handyman 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 Handyman-to-Dynamics 365 Sales migrations complete in 48–72 hours of clock time for under 25,000 records. Larger setups with 200,000+ records or multiple custom tables (Asset__c, Agreement__c) extend to 5–10 days. The longest single step is usually the custom table creation and schema review — Dynamics 365 Professional's 15-table limit requires explicit confirmation before we create the asset and agreement tables.

Adjacent paths

Related migrations to explore

Ready when you are

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