CRM migration
Field-level mapping, validation, and rollback between Customer Database App and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Customer Database App
Source
Salesforce Sales Cloud
Destination
Compatibility
7 of 16
objects map 1:1 between Customer Database App and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Customer Database App to Salesforce is a migration from a flat, single-object data model to a relational CRM with Accounts, Contacts, Leads, and Opportunities. Customer Database App holds all customer data in a single Contacts table with user-defined fields and no public API, so we extract via CSV or VCF export and reconstruct the relational structure in Salesforce during import. We resolve the Account-Contact parent relationship (creating Accounts from organization data or using a catch-all if no company field exists), map each named pipeline stage to an Opportunity stage, split multi-value tags into Salesforce Tags or a multi-select picklist, and attach bundled PDFs and images to the correct Contact record. Voucher balances and call history are not exported by Customer Database App and cannot be migrated; we deliver a supplemental export CSV for manual re-entry. Workflows and automations do not exist in Customer Database App, so there is no automation layer to rebuild in Salesforce.
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.
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 Salesforce Sales Cloud, 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
Salesforce Sales Cloud
Contact (with Account parent)
1:1Customer Database App Contact records map directly to Salesforce Contact, with a required Account parent. We extract the company or organization name from the corresponding custom field (commonly named Company, Organization, or Business), create a Salesforce Account for each distinct value, and link the Contact to that Account. If no company field is populated, we create a single Default Account and attach all Contacts to it, flagging each record for manual review post-migration. Email, phone, address, and all standard fields map directly to their Salesforce equivalents.
Customer Database App
Contact (unqualified prospect)
Salesforce Sales Cloud
Lead
1:manyIf the source data includes a status or stage field that distinguishes between active customers and prospective leads, we split: records marked as prospects or leads map to Salesforce Lead; records marked as customers map to Contact. We define the split rule during scoping based on the actual field values present in the exported CSV. The original source status is preserved in a custom field cdba_original_status__c on both Lead and Contact for audit trail.
Customer Database App
Custom Field (text)
Salesforce Sales Cloud
Custom Field (Text)
lossyEach user-defined text field from Customer Database App maps to a Salesforce Text custom field on Contact (or Lead if the split applies). We infer the full field list from the CSV column headers, map field names to valid Salesforce API names (removing spaces, special characters, and truncation to 40 characters), and create each field in the destination org before import. Free-text fields with embedded commas are quoted during CSV generation to prevent parse errors.
Customer Database App
Custom Field (date)
Salesforce Sales Cloud
Custom Field (Date)
lossyDate fields from Customer Database App map to Salesforce Date custom fields on Contact. We validate date format consistency across all records before import; if the source data mixes DD/MM/YYYY and MM/DD/YYYY formats, we apply a format-detection heuristic based on value ranges and normalize before loading.
Customer Database App
Custom Field (number or currency)
Salesforce Sales Cloud
Custom Field (Number or Currency)
lossyNumeric and currency fields map to Salesforce Number or Currency custom fields. We preserve decimal precision from the source and set the scale and precision properties in Salesforce to match. Empty numeric fields default to null rather than zero to maintain data integrity.
Customer Database App
Custom Field (checkbox or toggle)
Salesforce Sales Cloud
Custom Field (Checkbox)
lossyBoolean or toggle fields in Customer Database App map to Salesforce Checkbox custom fields. We normalize any text representation of true/false (yes/no, 1/0, active/inactive) to Salesforce's native true/false during the transform step before CSV generation.
Customer Database App
Pipeline Stage
Salesforce Sales Cloud
Opportunity Stage
lossyCustomer Database App Kanban pipeline stages map to Salesforce Opportunity Stage values. We extract all distinct stage names from the exported data, create corresponding Stage entries in the destination org's sales process, and map the order to StageSortOrder in Salesforce. If no deal or pipeline data exists in the source, we skip this mapping and document that the customer will create their Salesforce pipeline from scratch.
Customer Database App
Groups / Tags
Salesforce Sales Cloud
Topic or Multi-Select Picklist
1:manyCustomer Database App groups and tags are stored as comma-separated strings on each contact record. We split each comma-separated value into individual tokens, create Salesforce Topic records for each distinct tag, and link each Contact to its topics via TopicAssignment. Alternatively, if the customer prefers a simpler model, we map tags to a multi-select picklist custom field on Contact. The customer selects the strategy during scoping.
Customer Database App
Birthday
Salesforce Sales Cloud
Contact.Birthdate
1:1Customer Database App birthday date fields map directly to Salesforce Contact.Birthdate, which is a standard date field with no special API handling required. We preserve the original date exactly as exported; no transformation needed beyond format normalization if the source uses a non-ISO date format.
Customer Database App
Contact Image
Salesforce Sales Cloud
ContentVersion (linked to Contact)
lossyContact images exported from Customer Database App are bundled into a ZIP archive alongside the CSV. We extract each image file, upload it as a Salesforce ContentVersion record, and create a ContentDocumentLink linking the file to the corresponding Contact record. Image file naming must follow a predictable convention (Contact ID or email-based) for us to match images to records; if the naming is inconsistent, we deliver a reconciliation report with unmatched files for manual assignment.
Customer Database App
PDF Record Export
Salesforce Sales Cloud
ContentVersion (linked to Contact)
lossyPDF exports of individual Customer Database App records are bundled alongside the CSV export. We upload each PDF as a ContentVersion, create a ContentDocumentLink pointing to the corresponding Contact, and set the ContentDocument Description to 'Migrated from Customer Database App' for identification. If the PDF filename does not encode the contact identifier, we rely on the customer-provided mapping file to match PDFs to records.
Customer Database App
Note
Salesforce Sales Cloud
Note
1:1Customer Database App notes migrate to Salesforce Note records. We extract the note body and title from the CSV (if exported as structured columns) or parse them from a supplemental notes export. Each Note is linked to its parent Contact via ContentDocumentLink. Note timestamps are preserved in the Salesforce Note CreatedDate field.
Customer Database App
Task
Salesforce Sales Cloud
Task
1:1Tasks created within Customer Database App migrate to Salesforce Task records linked to the parent Contact. Task Subject, Status, Priority, and ActivityDate are preserved. Task owner resolves by email match against the destination Salesforce User table; unresolved owners are placed in a reconciliation queue for the customer's admin to address before record import continues.
Customer Database App
Voucher
Salesforce Sales Cloud
None
1:1Voucher balances are not exported via Customer Database App's CSV or VCF format. Vouchers are app-specific objects with no standard CRM equivalent. We do not migrate voucher data. We recommend exporting a supplemental voucher CSV manually from the app (if accessible) and re-entering balances in Salesforce as a custom object or as a custom field on Contact. This is documented in the migration scope as an out-of-scope item requiring manual action.
Customer Database App
Phone Call History
Salesforce Sales Cloud
None
1:1Caller-ID logs and call history are device-level transient records not exposed via Customer Database App's CSV or VCF export. These records are not migrated. We recommend documenting call-handling procedures and any external call logs (from a connected phone provider) separately, and re-importing call logs from the telephony source directly into Salesforce if the customer has a connected VoIP or call tracking system.
Customer Database App
Owner
Salesforce Sales Cloud
User
1:1Customer Database App does not track record-level ownership in the same way as Salesforce, but if the export includes an owner or assigned-to field, we resolve each value by email against the destination Salesforce User table. Users without a matching Salesforce User are held in a reconciliation queue for the customer's admin to provision before record import resumes. If no ownership field exists in the source, all migrated records default to the migration service user and the admin assigns ownership post-migration.
| Customer Database App | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Contact | Contact (with Account parent)1:1 | Fully supported | |
| Contact (unqualified prospect) | Lead1:many | Fully supported | |
| Custom Field (text) | Custom Field (Text)lossy | Fully supported | |
| Custom Field (date) | Custom Field (Date)lossy | Fully supported | |
| Custom Field (number or currency) | Custom Field (Number or Currency)lossy | Fully supported | |
| Custom Field (checkbox or toggle) | Custom Field (Checkbox)lossy | Fully supported | |
| Pipeline Stage | Opportunity Stagelossy | Fully supported | |
| Groups / Tags | Topic or Multi-Select Picklist1:many | Mapping required | |
| Birthday | Contact.Birthdate1:1 | Fully supported | |
| Contact Image | ContentVersion (linked to Contact)lossy | Fully supported | |
| PDF Record Export | ContentVersion (linked to Contact)lossy | Fully supported | |
| Note | Note1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Voucher | None1:1 | Fully supported | |
| Phone Call History | None1:1 | Not supported | |
| Owner | User1: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.
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
Salesforce Sales Cloud gotchas
Workflow Rules and Process Builder are retired
Bulk API batch quota exhaustion during large imports
Storage overage billing is non-obvious
Account-Contact many-to-many relationship mapping
Territory and team member import ordering dependencies
Pair-specific challenges
Migration approach
Discovery and export preparation
We audit the Customer Database App installation to identify the active field set, pipeline stages, tag/group taxonomy, and attachment bundle. If MySQL sync is active, we coordinate with the customer to confirm the sync state and access the MySQL database directly as the primary data source. We ask the customer to generate a full CSV export with all fields and a ZIP archive of all contact images and PDF exports. We review the CSV column headers against the source schema and flag any discrepancies or missing exports before proceeding.
Schema design and Salesforce field creation
We design the Salesforce destination schema based on the exported field set. This includes creating custom fields on Contact and Lead for each source field (with Salesforce-valid API names and appropriate field types), configuring the Account-Contact parent lookup strategy, creating Salesforce Topics or a multi-select picklist for the tag taxonomy, and defining the Opportunity stage values if pipeline data is present. Schema is deployed to a Salesforce Sandbox first for validation before production migration begins.
Sandbox migration and reconciliation
We run a full migration into a Salesforce Sandbox using the exported data volume. The customer reconciles record counts (Contacts in, Leads in, Accounts in, Opportunities in), spot-checks 25-50 random records against the Customer Database App source, and verifies that custom field values, tags, and attachments populated correctly. Any field mapping corrections, missing fields, or data-quality issues are resolved here. Sandbox sign-off is required before production migration begins.
Attachment bundling and ContentDocument upload
We extract the attachment ZIP, parse filenames to match images and PDFs to Contact records, and upload each file as a ContentVersion record in the destination org. We create ContentDocumentLink records to attach each file to the corresponding Contact. If the filename convention does not support automated matching, we deliver a reconciliation report listing unmatched files for manual assignment. This step runs in parallel with the data migration phases.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (extracted from the organization name field), Contacts (with AccountId resolved), Leads (if a prospect-lead split applies), Opportunities (if pipeline stage data exists), Tags (created before TopicAssignment), Notes and Tasks, then ContentDocument and ContentDocumentLink for attachments. Each phase emits a row-count reconciliation report before the next phase begins. We use the Salesforce Bulk API for Contacts and Tasks when the record count exceeds 10,000.
Cutover, validation, and handoff
We freeze writes to Customer Database App during the cutover window, run a final delta migration of any records modified since the initial export, and enable Salesforce as the system of record. We deliver a migration summary report with record counts, attachment upload counts, and a list of any records that could not be matched or imported with their error reason. We document the out-of-scope items (voucher balances, call history) with recommended manual action steps. We support a one-week hypercare window for reconciliation issues. We do not rebuild workflows or automations in Salesforce; since Customer Database App has no automation layer, there is nothing to rebuild, but any new Salesforce Flow or Process Builder design is outside migration scope.
Platform deep dives
Customer Database App
Source
Strengths
Weaknesses
Salesforce Sales Cloud
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 Customer Database App and Salesforce Sales Cloud.
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
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 Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Customer Database App to Salesforce Sales Cloud 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 Salesforce Sales Cloud
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.