CRM migration

Migrate from Customer Database App to Microsoft Dynamics 365 Sales

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 logo

Customer Database App

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

56%

5 of 9

objects map 1:1 between Customer Database App and Microsoft Dynamics 365 Sales .

Complexity

BStandard

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Customer Database App logo

Customer Database App

What's pushing teams away

  • The absence of a programmatic API makes automated exports and integrations with downstream tools impossible without manual file handling.
  • No collaborative features such as user roles, activity logs, or shared dashboards create friction when a second team member needs access to a customer record.
  • The free tier carries no service-level guarantee; users have reported no recourse when data loss occurs on the hosted version.
  • Scalability is limited — performance degrades noticeably as the customer list grows beyond a few hundred records on mobile hardware.
  • Marketing and automation capabilities are absent, which pushes teams to migrate once they need email campaigns, lead scoring, or workflow triggers.

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 Customer Database App objects map to Microsoft Dynamics 365 Sales

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

maps to

Microsoft Dynamics 365 Sales

Contact (direct) or Lead (via qualification)

1:many
Fully supported

Customer 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)

maps to

Microsoft Dynamics 365 Sales

Account

1:1
Fully supported

The 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)

maps to

Microsoft Dynamics 365 Sales

Custom Field on Contact, Lead, or Account

lossy
Fully supported

Every 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

maps to

Microsoft Dynamics 365 Sales

Text field (multi-select) or Topic

lossy
Fully supported

Customer 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

maps to

Microsoft Dynamics 365 Sales

Custom Field or Lead Status / Opportunity Stage

lossy
Fully supported

Customer 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

maps to

Microsoft Dynamics 365 Sales

Birthdate (Contact field)

1:1
Fully supported

The 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

maps to

Microsoft Dynamics 365 Sales

Note with Attachment or Annotation

1:1
Fully supported

Customer 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

maps to

Microsoft Dynamics 365 Sales

Not migrated (no equivalent)

1:1
Fully supported

Vouchers 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

maps to

Microsoft Dynamics 365 Sales

Not migrated (no exportable source)

1:1
Not supported

Call 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.

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.

Customer Database App logo

Customer Database App gotchas

High

No API means migration runs through CSV exports only

Medium

User-defined schema creates field mapping ambiguity

Medium

MySQL sync creates a parallel data source that must be reconciled

Low

Voucher and birthday objects have no standard CRM equivalent

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

  • No API forces CSV-only extraction with no delta sync

    Customer Database App has no public REST or GraphQL API, so migration runs entirely through CSV exports or MySQL sync. After the initial export, any records modified or added in the app cannot be picked up by automated delta pulls. We handle this by running a freeze window during cutover where no new records are created in Customer Database App, exporting a final delta CSV, and loading it into D365 before switching the team to Microsoft Dynamics 365 Sales as the system of record. Customers who cannot freeze writes for the duration of the cutover window risk data divergence between the two systems on day one.

  • User-defined schema requires field inference before import

    Because Customer Database App has no canonical schema definition and every installation builds its own field set, we must infer the active field list from the first exported CSV file's column headers. If a customer has added, renamed, or deleted fields after their last export without regenerating the CSV, we flag the discrepancy before loading. Additionally, free-text fields containing commas must be quoted in the CSV to avoid misparsing; we sanitize these during the transform step before D365 import. D365 also requires custom fields to be created in the solution schema before records can load, which adds a schema-provisioning step not required in API-first migrations.

  • MySQL sync creates a parallel data source requiring reconciliation

    Users who have enabled MySQL sync hold two copies of their data: the local app database and the synced MySQL instance. The MySQL copy may contain records not yet synced back to the local app, or records modified after the last sync cycle. We require customers to confirm the sync state of both copies before extraction and prefer the MySQL source where it is reachable because it typically contains the most complete dataset. If the MySQL copy diverges significantly (more than 5 percent record count difference from the app export), we escalate the discrepancy for manual reconciliation before proceeding with migration.

  • Flat contact model maps awkwardly into D365's relational schema

    Customer Database App stores all data in a flat contact record, while D365 uses a relational model with Accounts (parent), Contacts (children), Leads (separate qualification path), and Opportunities (pipeline). We must decide during scoping which contacts map to Leads versus Contacts and whether to create placeholder Accounts for each contact or group contacts by company name into shared Accounts. This decomposition step adds time and requires customer confirmation on the grouping logic before schema provisioning begins in D365.

  • Vouchers and call history have no migration path

    Voucher balances do not export from Customer Database App at all via CSV. Phone call history is a device-level transient log with no exportable persistence. We document these limitations in the migration scope, recommend exporting a supplemental voucher CSV directly from the app for manual re-entry, and note that telephony history must be rebuilt through a D365-compatible phone integration post-migration. Neither object appears in the migration deliverables as a data record.

Migration approach

Six steps for a successful Customer Database App to Microsoft Dynamics 365 Sales data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

Customer Database App logo

Customer Database App

Source

Strengths

  • Zero cost with no contact count limit removes budget objections entirely for early-stage teams.
  • Mobile app and web browser access means the same database works on desktop and in the field.
  • User-defined schema accommodates non-standard business models without forcing a predefined data model.
  • MySQL sync option enables self-hosting for users who want data portability and ownership.
  • Built-in EU-GDPR tools such as data export and deletion requests simplify compliance for European users.

Weaknesses

  • No public API forces reliance on manual CSV or VCF exports, which breaks down at scale.
  • Absence of user roles and permissions makes the app unsuitable for teams with access-control requirements.
  • No email sequencing, marketing automation, or built-in communications channels limits long-term utility as a sales tool.
  • No SLA or data-residency guarantees on the hosted version introduce reliability risk for business-critical data.
  • Limited reporting and analytics mean users quickly outgrow the insight capabilities once the customer base matures.
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. All 8 core objects map 1:1 between Customer Database App and Microsoft Dynamics 365 Sales .

B

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

    A

    All 8 core objects map 1:1 between Customer Database App and Microsoft Dynamics 365 Sales .

  • 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

    Customer Database App: Not applicable — no API exists.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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 consultation

Most migrations land between two and three weeks for accounts under 5,000 contacts with fewer than 15 active custom fields and no MySQL sync divergence. Migrations exceeding 5,000 contacts, with large tag vocabularies (over 100 unique tag values), or requiring MySQL reconciliation to resolve sync-state discrepancies between the app database and the MySQL copy move to four to eight weeks. The variance is driven by schema complexity and data quality issues in the source export rather than volume alone.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Customer Database App.
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