CRM migration

Migrate from Cordial to Microsoft Dynamics 365 Sales

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

Cordial logo

Cordial

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

75%

6 of 8

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

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Cordial to Microsoft Microsoft Dynamics 365 Sales is a structural migration from a message-centric JSON data model to a relational sales CRM. Cordial organizes data into flexible collections (Contacts, Products, Channels) with unlimited custom contact attributes; Microsoft Dynamics 365 Sales uses typed Account, Contact, Lead, and Opportunity objects with governed custom fields. We extract Cordial contacts via the REST API, normalize array-type attributes (tags, behavioral events, channel preferences) to Dynamics-compatible formats, and map product variants to Product2 records with Pricebook entries. Order data, which Cordial stores as custom attributes or behavioral events rather than native objects, requires careful schema discovery and transformation before import. Cordial's segment logic and automation workflows have no export API, so we deliver a written inventory for the customer's admin to rebuild in Microsoft Dynamics 365 Sales or Power Automate 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

Cordial logo

Cordial

What's pushing teams away

  • Some users report that complex reporting and advanced analytics require workarounds, with out-of-the-box dashboards feeling insufficient for deep performance analysis.
  • Scaling large contact databases can introduce latency in segment queries and campaign execution, particularly when audiences exceed several million records.
  • The drag-and-drop interface, while easy to use for basic campaigns, can become limiting when building sophisticated multi-step automation logic that requires more programmatic control.

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

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

Cordial

Contact

maps to

Microsoft Dynamics 365 Sales

Contact

1:1
Fully supported

Cordial Contacts map to Microsoft Dynamics 365 Sales Contact. Standard fields (email, firstname, lastname, phone) migrate directly. Every custom contact attribute is inventoried during discovery: string and number attributes map to typed Dynamics custom fields (new Text, Number, or Decimal fields in the target organization); array-type attributes (e.g. favorite_colors, tag lists, behavioral history) are normalized to delimited strings in a custom field or to a related custom entity, per the normalization strategy agreed during scoping. The Contact's _channel_preferences.email and SMS opt-in status map to HasOptedOutOfEmail and a custom SMS_opt_in__c boolean.

Cordial

List

maps to

Microsoft Dynamics 365 Sales

Contact (with list membership flag)

1:1
Fully supported

Cordial Lists are static contact collections. We export list membership as a boolean custom field per list (e.g. vip_customer__c = true) or as a lookup table mapping contact email to list name, depending on how many lists exist and whether Dynamics field limits are a concern. If more than 20 lists exist, we use a related CordialListMembership__c custom entity with a Contact lookup to avoid hitting the per-object custom field ceiling.

Cordial

Product

maps to

Microsoft Dynamics 365 Sales

Product2 + PricebookEntry

1:many
Fully supported

Cordial Products store variants as nested JSON arrays under a single record (with fields like color, size, material per SKU). We unpack the variant array and generate one Product2 record per SKU, preserving the parent product ID as a custom field parent_product_id__c for relationship reconstruction in Dynamics. Each Product2 gets a Standard Pricebook entry created at import time. ProductCode maps from Cordial's productID field.

Cordial

Channel

maps to

Microsoft Dynamics 365 Sales

Contact (channel preference fields)

1:1
Fully supported

Cordial Channels (email, SMS, push) are stored as sub-attributes on contacts indicating opt-in status and preferences per channel. We export these as separate boolean or string fields on the Dynamics Contact: email_opt_in__c, sms_opt_in__c, push_opt_in__c. Channel-level preference timestamps (when the contact last gave consent) migrate to consent datetime fields if tracked in Cordial.

Cordial

Event / Contact Activity

maps to

Microsoft Dynamics 365 Sales

Task

1:1
Fully supported

Cordial behavioral events (opens, clicks, purchases, custom events) export via the Contact Activity Export API with time-range and event-type filters. We map purchase events to Task records with custom fields event_type__c = 'purchase', event_data__c carrying the JSON payload, and ActivityDate set to the original Cordial timestamp. Opens and clicks map to Task records with event_type__c values for reporting segmentation. Large event histories (over 100,000 records) are chunked and loaded via the Dynamics 365 Data Export Service or Azure Data Factory.

Cordial

Order (custom attributes)

maps to

Microsoft Dynamics 365 Sales

SalesOrder or custom Order entity

lossy
Fully supported

Orders are not a native first-class object in Cordial's core schema but are often stored as custom contact attributes or linked via purchase event data. We identify order-related attributes and custom event types during schema discovery, extract order records, and map them to Microsoft Dynamics 365 Sales Order (SalesOrder) if the destination org has the Sales module, or to a custom Order__c entity with line items if the edition does not include Order management. Order date, total amount, currency, and status are mapped to the corresponding Dynamics fields.

Cordial

Segment

maps to

Microsoft Dynamics 365 Sales

Custom field or Contact filtering view

1:1
Fully supported

Cordial Segments are dynamic rules-based audiences built from contact attributes and event conditions. We export segment definitions as rule summaries in a written inventory document and flag which contacts currently match each segment by writing the segment name to a custom field (e.g. segment_membership__c) on the Contact record. Segment rules themselves cannot be exported via API and require rebuild in Microsoft Dynamics 365 Sales via Advanced Find queries, Power Automate flows, or a Dynamics marketing module.

Cordial

Owner

maps to

Microsoft Dynamics 365 Sales

User

1:1
Fully supported

Cordial Owners map to Dynamics 365 User records by email match. Any Cordial Owner without a matching Dynamics User goes to a reconciliation queue for the customer's admin to provision before record import resumes. Owner-based routing and team assignments migrate as OwnerId references on Contact, Account, and Opportunity records.

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.

Cordial logo

Cordial gotchas

Medium

Message experiment results are not API-exportable

Medium

Rate limits are method- and endpoint-specific

Low

Custom contact attribute arrays require schema normalization

Low

Products collection uses nested JSON with variants

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

  • Array-type custom attributes require schema normalization

    Cordial stores some contact properties as arrays (e.g. favorite colors, tag lists, behavioral history). Microsoft Dynamics 365 Sales does not support array-type contact fields natively. We flatten these into delimited strings (comma-separated in a text field) or separate them into a related custom entity during export. We flag each array field during the discovery phase and agree on a normalization strategy with the customer before import. Skipping this step results in partial data loss for those attributes.

  • Order data requires schema discovery before migration

    Orders are not a native object in Cordial; they are stored as custom contact attributes or linked via purchase event data. Before migration, we run a schema discovery pass that identifies every custom attribute and event type containing order-related data, reconstructs the order record structure, and agrees on a mapping to Dynamics SalesOrder or a custom Order__c entity. Migrations that skip this step leave order history behind.

  • Cordial product variants expand during migration

    Cordial Products store variants as nested JSON arrays under a single product record. If the destination Dynamics 365 org treats each variant as a separate Product2 row, we unpack the variant array and generate one row per SKU. A product with 5 colors and 4 sizes becomes 20 Product2 records. We flag this expansion during scoping and agree on whether to unpack variants or preserve the parent-child structure via a custom relationship field.

  • Segment logic and automation workflows cannot be exported

    Cordial's segment definitions and automation Programs (workflows, triggers, delay rules) have no public export API. We document the structure, trigger points, and step logic in a written inventory for the customer to rebuild in Microsoft Dynamics 365 Sales or Power Automate. We do not migrate automation logic as code. Email sequences and journey logic similarly require rebuild.

Migration approach

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

  1. Schema discovery and normalization strategy

    We audit the Cordial account across collections (Contacts, Products, Lists, Channels, Events), custom attribute types, and product variant structure. We run a schema extraction pass to inventory every custom field, array-type attribute, order-related attribute, and event type. We deliver a written field mapping document that specifies the Dynamics 365 custom fields to pre-create, the normalization strategy for array attributes, and the order reconstruction logic before any data moves.

  2. Dynamics 365 schema pre-creation

    We pre-create the destination schema in Microsoft Dynamics 365 Sales : custom fields on Contact (channel opt-in fields, segment membership fields, normalized attribute fields), custom fields on Product2 (parent_product_id__c, variant attributes), the Pricebook, and any custom Order entity. Schema is deployed into the target org via the Dynamics 365 Web API or a data migration sandbox before production migration begins. We coordinate with the customer's Dynamics admin to provision the migration user's security role with create-read-update permissions on the target entities.

  3. Product catalog extraction and variant unpacking

    We export the Cordial Products collection via the REST API. For each product, we parse the variants array, unpack each SKU into a separate Product2 row, create the Standard Pricebook entries, and preserve the parent product reference in parent_product_id__c. If the customer prefers to keep variants collapsed, we create one Product2 per parent product and store variant data as a JSON custom field. Price and currency fields map from Cordial's standard price fields.

  4. Contact migration with channel and list normalization

    We export Cordial Contacts via the REST API in batches, applying the normalization strategy agreed in step one. Channel preferences become boolean opt-in fields. List membership becomes per-list boolean fields or a related CordialListMembership__c entity. Array-type attributes become delimited strings in custom text fields. Owner resolution maps by email to the Dynamics User table. Each batch is reconciled against the source count before the next batch begins.

  5. Order reconstruction and event history migration

    We extract order-related custom attributes and purchase event data identified during schema discovery, reconstruct order records, and import them to Dynamics SalesOrder or the custom Order entity. Behavioral event history (opens, clicks, custom events) migrates to Task records with custom event_type__c fields and ActivityDate preserving the original timestamp. Large event histories use chunked API writes with rate-limit handling.

  6. Cutover, validation, and automation rebuild handoff

    We freeze Cordial writes during cutover, run a final delta migration of any records modified during the migration window, then enable Microsoft Dynamics 365 Sales as the system of record. We deliver the Segment and Program inventory document to the customer's admin team. We support a one-week hypercare window where we resolve reconciliation issues. We do not rebuild Cordial Programs as Microsoft Dynamics 365 Sales workflows or Power Automate flows inside the migration scope; that is a separate engagement.

Platform deep dives

Context on both ends of the pair

Cordial logo

Cordial

Source

Strengths

  • Flexible JSON-based data model accommodating unlimited custom contact attributes without schema migration overhead.
  • Drag-and-drop Sculpt block editor for rapid email production without requiring developer resources.
  • Product-centric architecture treating SKUs, variants, and catalog data as native objects for personalization.
  • AI agents introduced in 2026 for automated email production and data intelligence workflows.
  • SFTP, AWS S3, and Google Cloud Storage integration for automated data export workflows.

Weaknesses

  • Message experiment results are explicitly not available via the export API, requiring manual UI-based export for A/B test data.
  • Reporting and analytics dashboards are described as insufficient by some users for deep performance analysis, often requiring supplemental BI tooling.
  • Segment logic and automation workflows lack a public export API, making migration of campaign automation a manual rebuild exercise.
  • Order data is not a native first-class object, often stored as custom attributes or behavioral events, requiring careful schema discovery before migration.
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 Cordial and Microsoft Dynamics 365 Sales .

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Cordial and Microsoft Dynamics 365 Sales .

  • Object compatibility

    A

    All 8 core objects map 1:1 between Cordial 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

    Cordial: Method- and endpoint-specific limits; default limits vary per tier; X-Rate-Limit-* response headers exposed; Retry-After header for backoff; limits are customizable per customer contract.

  • Data volume sensitivity

    A

    Cordial exposes a bulk API — large-volume migrations stream efficiently.

Estimator

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

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

Can't find your answer?

Walk through your Cordial 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 four weeks for accounts under 50,000 Contacts and 2,000 products with no behavioral event history migration. Migrations with large product catalogs (5,000+ SKUs with variant unpacking), behavioral event histories (hundreds of thousands of records), or extensive custom attribute normalization move to five to ten weeks because of JSON normalization, variant expansion, and parent-record lookup resolution. The Microsoft Dynamics 365 Sales subscription itself (starting at $65 per user per month) is separate from migration timing.

Adjacent paths

Related migrations to explore

Ready when you are

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