CRM migration
Field-level mapping, validation, and rollback between Customer Database App and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Customer Database App
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
5 of 9
objects map 1:1 between Customer Database App and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
2-3 weeks
Overview
Moving from Customer Database App to Microsoft Microsoft Dynamics 365 Sales is a schema-resolution migration rather than a straightforward record copy. Customer Database App exposes a flat, user-defined contact schema with no public API, so we extract data through CSV exports and infer the active field list from column headers. Microsoft Microsoft Dynamics 365 Sales uses a relational model with Accounts, Leads, Contacts, and Opportunities, requiring us to decompose the flat contact record into parent-child relationships and apply typed field constraints during import. We extract from the MySQL sync database where it is reachable (it typically holds the most complete dataset) and fall back to CSV exports for customers without self-hosted MySQL. We do not migrate Vouchers, phone call history, or in-app workflows because the source platform does not expose these through exportable formats. We deliver a written inventory of any source pipeline stage configurations for the customer's Dynamics admin to rebuild as Sales Processes and Record Types post-migration.
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
Customer Database App platform overview
Scorecard, SWOT, gotchas, and pricing for Customer Database App.
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 Customer Database App 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.
Customer Database App
Contact
Microsoft Dynamics 365 Sales
Contact (direct) or Lead (via qualification)
1:manyCustomer Database App contacts map to either Dynamics 365 Contact (for established customer records) or Lead (for records that represent unqualified prospects still in the early pipeline). We apply a qualification split using the contact's group membership and any pipeline stage label: contacts assigned to a sales stage label or a customer group map to Contact; contacts with no stage assignment and a prospect group label map to Lead. The original Customer Database App record ID is preserved in a custom field cda_original_id__c on both Lead and Contact for cross-reference. Where Customer Database App exports a single flat record, D365 requires a parent Account for Contacts, so we create a placeholder Account using the contact's company name or 'Individual' for sole-proprietor records.
Customer Database App
Company Name (custom field)
Microsoft Dynamics 365 Sales
Account
1:1The company name field in Customer Database App maps to the Account Name field in Dynamics 365. Where the source record has no company name (sole proprietor records), we create an Account named after the contact's full name for the parent relationship. Account.Phone maps from the source phone field; Account.Website maps from the source website field if present. Account is created before the Contact import so that the AccountId lookup on Contact is satisfied at insert time.
Customer Database App
Custom Property (user-defined field)
Microsoft Dynamics 365 Sales
Custom Field on Contact, Lead, or Account
lossyEvery active field in the Customer Database App CSV column header becomes a custom field in Dynamics 365. We infer the data type from the first 20 non-null values in each column: numeric strings become Decimal or Integer fields; date-format strings become Date fields; yes/no or boolean strings become Two Option fields; everything else becomes Text (255). D365 requires custom fields to be created in the solution before data import begins, so we provision the full schema during the scoping phase and deploy it to the destination org before any records load. Free-text fields containing commas are sanitized to prevent CSV parsing issues during import.
Customer Database App
Group / Tag
Microsoft Dynamics 365 Sales
Text field (multi-select) or Topic
lossyCustomer Database App stores groups and tags as comma-separated label strings on each contact record. We split these into individual values and map them to a D365 multi-select picklist custom field (cda_tags__c) if the count of distinct tags across all records is under 200 unique values (D365's picklist limit). If the tag vocabulary exceeds 200 unique labels, we map to a plain text field and recommend using D365 Topics (on the Ideas or Topics tab of Contact) for future tag governance. We preserve the original comma-separated string in a text backup field cda_original_tags__c.
Customer Database App
Pipeline Stage
Microsoft Dynamics 365 Sales
Custom Field or Lead Status / Opportunity Stage
lossyCustomer Database App Kanban pipeline stages are stored as a label string on the contact record. We map these to a custom text field cda_pipeline_stage__c on Contact or Lead during initial migration, preserving the exact stage label. The customer's Dynamics admin then rebuilds these as Opportunity Stages (if converting to Opportunities) or as Lead Status values within a D365 Sales Process. We document the full stage list with record counts in the migration scope deliverable so the admin can configure the Sales Process correctly.
Customer Database App
Birthday
Microsoft Dynamics 365 Sales
Birthdate (Contact field)
1:1The birthday date stored on Customer Database App contacts maps to the standard Birthdate field on the D365 Contact record. D365 does not have a separate birthday notification workflow, but the date is available for segmentation in D365 Reports and Dynamics 365 Customer Insights. If the destination org does not have the Birthdate field enabled, we create a custom date field cda_birthday__c as a fallback.
Customer Database App
Contact Image / PDF Export
Microsoft Dynamics 365 Sales
Note with Attachment or Annotation
1:1Customer Database App exports individual record PDFs and contact photos as separate files. We bundle these into a ZIP archive alongside the CSV and attach each file to the corresponding Contact record in D365 as a Note with an file attachment (Annotation). File naming convention uses the contact's original record ID to enable programmatic matching. Where the contact splits into a Lead and a Contact during qualification, we attach the file to the Contact record and add a Note reference on the Lead pointing to the Contact.
Customer Database App
Voucher
Microsoft Dynamics 365 Sales
Not migrated (no equivalent)
1:1Vouchers are a standalone object in Customer Database App with no direct equivalent in Microsoft Dynamics 365 Sales . Voucher balances are not exported via CSV and the object has no exportable schema. We do not migrate voucher balances or usage history. We recommend exporting a supplemental voucher report directly from Customer Database App as a separate CSV for manual re-entry in a custom D365 entity if the customer's business requires tracking voucher data.
Customer Database App
Phone Call History
Microsoft Dynamics 365 Sales
Not migrated (no exportable source)
1:1Call history and caller-ID logs in Customer Database App are transient device-level records that are not exported via CSV, VCF, or MySQL sync. We do not migrate call history. We recommend documenting call-handling procedures separately for the customer's admin to configure D365 phone integration (Dynamics 365 App for Outlook or a third-party telephony connector) post-migration.
| Customer Database App | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Contact | Contact (direct) or Lead (via qualification)1:many | Fully supported | |
| Company Name (custom field) | Account1:1 | Fully supported | |
| Custom Property (user-defined field) | Custom Field on Contact, Lead, or Accountlossy | Fully supported | |
| Group / Tag | Text field (multi-select) or Topiclossy | Fully supported | |
| Pipeline Stage | Custom Field or Lead Status / Opportunity Stagelossy | Fully supported | |
| Birthday | Birthdate (Contact field)1:1 | Fully supported | |
| Contact Image / PDF Export | Note with Attachment or Annotation1:1 | Fully supported | |
| Voucher | Not migrated (no equivalent)1:1 | Fully supported | |
| Phone Call History | Not migrated (no exportable source)1:1 | Not 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.
Customer Database App gotchas
No API means migration runs through CSV exports only
User-defined schema creates field mapping ambiguity
MySQL sync creates a parallel data source that must be reconciled
Voucher and birthday objects have no standard CRM equivalent
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
Source audit and export preparation
We audit the Customer Database App installation to confirm the active field list (by inspecting a sample CSV export), the total contact record count, the pipeline stage labels in use, the group and tag vocabulary, and whether MySQL sync is enabled. If MySQL sync is active, we connect to the MySQL database to retrieve the full dataset directly and compare record counts against the CSV export to identify sync lag. We confirm with the customer which data source is authoritative before extraction proceeds.
Schema inference and D365 field mapping design
We reverse-engineer the Customer Database App field list from the CSV column headers, infer the data type of each field (text, number, date, boolean) from the first 20 non-null values, and design the D365 custom field schema accordingly. We decide whether each contact maps to Lead or Contact based on group membership and pipeline stage, and we design the Account creation strategy (shared Accounts by company name versus one-per-contact placeholders). The mapping design is documented in a written schema map and shared with the customer for sign-off before any D365 provisioning begins.
D365 solution provisioning and sandbox migration
We create the D365 solution in the customer's tenant, provision all custom fields with inferred types, create any required option set values (for tag multi-select), and set up the Sales Process and Record Type structure if the customer opts to use Opportunities. We run a sandbox migration first using a production-like data volume to validate field mapping, confirm that no validation rules reject records, and reconcile record counts before targeting production.
Production migration in dependency order
We run the production migration in record-dependency order: Accounts (created from company name values), Contacts (with AccountId resolved and Lead versus Contact split applied), custom field values loaded as a follow-up patch against the Contact and Lead records, tags loaded as multi-select picklist values or text fields, pipeline stage labels loaded into the custom stage field, and contact attachments (PDFs and images) attached as Notes. Each phase emits a row-count reconciliation report. Any MySQL source delta records identified during sync-state reconciliation are merged as a final incremental batch before cutover.
Cutover, validation, and scope handoff
We freeze writes in Customer Database App during the final delta window, export the last-modified records, load them into D365, and run a final reconciliation comparing total record counts, sample field values, and attachment presence against the source. We deliver the migration reconciliation report and the written pipeline stage map for the customer's Dynamics admin to configure as Sales Processes and Record Types. We do not rebuild source pipeline configurations as D365 Sales Processes because this requires admin-level D365 access and business logic decisions outside the data migration scope. We support a three-day hypercare window for data quality issues identified in the first user sessions.
Platform deep dives
Customer Database App
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Customer Database App and Microsoft Dynamics 365 Sales .
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Customer Database App and Microsoft Dynamics 365 Sales .
Object compatibility
All 8 core objects map 1:1 between Customer Database App 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
Customer Database App: Not applicable — no API exists.
Data volume sensitivity
Customer Database App 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 Customer Database App to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Customer Database App 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 Customer Database App
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.