CRM migration
Field-level mapping, validation, and rollback between Corteza CRM and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Corteza CRM
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
12 of 12
objects map 1:1 between Corteza CRM and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Corteza CRM to Microsoft Microsoft Dynamics 365 Sales is a platform-level migration from an open-source self-hosted system to a cloud-native Microsoft CRM. Corteza organizes data into modules that have no direct Dynamics 365 equivalent — each module must be mapped to a standard or custom Dataverse entity before migration begins. We audit the Corteza namespace for orphaned page references that block export, capture custom module field definitions during discovery, pre-create custom entities in the destination Dynamics 365 environment, and resolve Account-to-Contact lookups during the import sequence. We do not migrate Corteza workflow definitions or automations; these require manual rebuild in Microsoft Dynamics 365 Sales as Power Automate flows or Dataverse workflows. We do not migrate reports or dashboards; we deliver a written map of the source reports for the customer's admin to reconstruct in Dynamics 365.
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
Corteza CRM platform overview
Scorecard, SWOT, gotchas, and pricing for Corteza CRM.
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 Corteza CRM 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.
Corteza CRM
Lead
Microsoft Dynamics 365 Sales
Lead
1:1Corteza Lead records map directly to Microsoft Microsoft Dynamics 365 Sales Lead. Standard fields (firstname, lastname, email, phone, company, rating) migrate to the corresponding Dataverse Lead attributes. We resolve the lead status and source campaign reference at migration time. Lead scores and custom qualification fields migrate as custom fields on the Lead entity.
Corteza CRM
Account
Microsoft Dynamics 365 Sales
Account
1:1Corteza Account records map to Dynamics 365 Account. The account name becomes Account.Name, industry classification maps to IndustryCode, and address data maps to Address1 fields with Address2 handling any secondary address. Account is created before any Contact import so that the parentcustomerid_account lookup is satisfied at Contact insert time.
Corteza CRM
Contact
Microsoft Dynamics 365 Sales
Contact
1:1Corteza Contact records map to Dynamics 365 Contact. The parent Account relationship migrates by resolving the Corteza Account GUID to the Dynamics 365 Account record ID via a lookup table built during the Account migration phase. Job title, email, phone, and address fields map directly. Custom fields on the Corteza Contact module migrate as custom attributes on the Dataverse Contact entity.
Corteza CRM
Opportunity
Microsoft Dynamics 365 Sales
Opportunity
1:1Corteza Opportunity records map to Dynamics 365 Opportunity. The deal stage maps to StageName, amount maps to EstimatedValue, probability maps to closeprobability, and closedate maps to EstimatedCloseDate. The parent Account lookup resolves via the Account mapping table. Custom opportunity fields migrate as custom Opportunity attributes.
Corteza CRM
Campaign
Microsoft Dynamics 365 Sales
Campaign
1:1Corteza Campaign records map to Dynamics 365 Campaign. Campaign type, status, budget, and target metrics migrate as Campaign attributes. CampaignMember records linking Contacts and Leads to the Campaign migrate as Dynamics 365 CampaignActivity and CampaignMember records. Actual costs and response tracking data migrate to CampaignResponse if available in the Corteza source data.
Corteza CRM
Case
Microsoft Dynamics 365 Sales
Incident (Customer Service)
1:1Corteza Case records map to Dynamics 365 Case (Incident) if the destination tenant includes Customer Service. Case status, priority, origin, and resolution fields map to the corresponding Case attributes. The parent Account and Contact lookups resolve via the Account and Contact mapping tables created during earlier migration phases. Case number migrates to CustomerNumber for reference integrity.
Corteza CRM
Task
Microsoft Dynamics 365 Sales
Task
1:1Corteza Task records map to Dynamics 365 Task. Status, Priority, ScheduledEnd (due date), and Description migrate directly. Task assignment migrates by resolving the Corteza owner reference to the Dynamics 365 User via email match. The Regarding (regardingobjectid) lookup resolves to the parent Lead, Account, Contact, or Opportunity record using the ID mapping tables built during those phases.
Corteza CRM
Engagement: Call
Microsoft Dynamics 365 Sales
Task (TaskSubtype = Call)
1:1Corteza call engagement records map to Dynamics 365 Task with TaskSubtype set to Call. Call duration, disposition, and recording URL (if stored in Corteza) migrate to custom Task fields. The activity timestamp preserves the original engagement date so the sales timeline reflects the correct sequence of events.
Corteza CRM
Engagement: Meeting / Event
Microsoft Dynamics 365 Sales
Appointment
1:1Corteza meeting engagement records map to Dynamics 365 Appointment (the Dynamics 365 term for calendar Event records). Start time, end time, location, and organizer migrate as Appointment attributes. Attendee references resolve to Contact or Lead records via the Contact mapping table and link via the AppointmentParty (attendees) multi-select field.
Corteza CRM
Engagement: Email
Microsoft Dynamics 365 Sales
Email (Activity)
1:1Corteza email engagement records map to Dynamics 365 Email (emailactivity) records. The email body, subject, sender, and recipients migrate as Email attributes with the From (emailsender) and To (emailrecipients) resolved to Contact or Lead records via the mapping tables. Email timestamps preserve the original sent date for timeline accuracy.
Corteza CRM
Custom Module
Microsoft Dynamics 365 Sales
Custom Table (Dataverse)
1:1Corteza custom modules — created via the low-code builder with non-standard field types and custom validation rules — migrate to Dataverse custom tables. We pre-create the destination schema (table name, columns, data types, relationships) in the Dynamics 365 maker portal before any data import. Lookup fields within custom modules resolve via mapping tables built for standard Corteza entities. Customers choosing Microsoft Dynamics 365 Sales Hub attach custom tables to the Common Data Model used by Power Apps and Power Automate.
Corteza CRM
Product
Microsoft Dynamics 365 Sales
Product
1:1Corteza Product records map to Dynamics 365 Product. Product name, SKU, description, and pricing information migrate as Product attributes. If the Corteza instance uses price lists, these map to the Dynamics 365 PriceList entity with PriceLevelItem records for pricing entries. Product status (active/inactive) maps to StateCode.
| Corteza CRM | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Lead | Lead1:1 | Fully supported | |
| Account | Account1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Campaign | Campaign1:1 | Fully supported | |
| Case | Incident (Customer Service)1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Engagement: Call | Task (TaskSubtype = Call)1:1 | Fully supported | |
| Engagement: Meeting / Event | Appointment1:1 | Fully supported | |
| Engagement: Email | Email (Activity)1:1 | Fully supported | |
| Custom Module | Custom Table (Dataverse)1:1 | Fully supported | |
| Product | Product1: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.
Corteza CRM gotchas
Namespace export fails on orphaned page references
Workflow automation breaks after restore or upgrade
Field-level security does not cover all access scenarios
Federation is experimental and not production-ready
No publicly documented API rate limits
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
Discovery and namespace audit
We audit the Corteza instance across modules (Leads, Accounts, Contacts, Opportunities, Campaigns, Cases, and any custom modules), namespaces, and API access. We inspect the namespace for orphaned page references that block export, document every custom module field definition and type, extract workflow definitions for the automation inventory, and assess file attachment storage locations. We pair this with a review of the destination Dynamics 365 tenant's existing entities, security roles, and any custom tables already provisioned. The discovery output is a written migration scope with a module-to-entity mapping plan.
Schema design and custom table provisioning
We design the destination schema in the Dynamics 365 Power Platform maker portal. For each Corteza custom module, we create a corresponding Dataverse custom table with field types mapped from Corteza (string to SingleLineOfText, number to Whole Number or Decimal, date to DateTime, and so on). We configure lookup relationships for cross-module references and deploy the schema to a Dynamics 365 Sandbox environment first for validation. Standard CRM entities (Lead, Account, Contact, Opportunity, Case, Task, Campaign) use the native Dataverse tables with custom attributes added as needed.
Sandbox migration and reconciliation
We run a full migration into the Dynamics 365 Sandbox using production-equivalent data volume. The customer's CRM administrator reviews record counts (Leads in, Accounts in, Contacts in, Opportunities in), spot-checks field values against the Corteza source, and validates the custom table records. This step surfaces any missing validation rules, incorrect field type mappings, or lookup resolution failures before production migration begins. Schema corrections and mapping adjustments happen in the sandbox, not in production.
Parent-record dependency resolution
We build lookup resolution tables for the migration. Corteza Account IDs resolve to Dynamics 365 Account IDs; Corteza Contact owner references resolve to Dynamics 365 User IDs via email match; Corteza Opportunity parent Account references resolve to the mapped Account ID. For custom modules with cross-module lookups, we build dependency chains so that parent records exist before child records are inserted. This step is critical because Dynamics 365 Dataverse does not allow inserting records with unresolved lookups.
Production migration in dependency order
We execute production migration in a strict sequence that respects entity dependencies: Account and User provisioning first (required for all lookups), then Contact with AccountId resolved, then Lead, then Opportunity with AccountId and OwnerId resolved, then Cases, then Tasks and Activity history (calls, emails, meetings via the Dataverse Web API with batch operations and throttling), then Campaign and CampaignMember, then custom module records (last, because they often reference standard entities). Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and automation handoff
We freeze writes to the Corteza instance during cutover, run a final delta migration for any records modified during the migration window, then enable Dynamics 365 as the system of record. We deliver the workflow and automation inventory document to the customer's admin team for rebuild in Power Automate. We provide a data reconciliation report comparing source and destination record counts by entity. We support a one-week post-cutover window for reconciliation issues raised by the CRM users. We do not rebuild Corteza workflows as Power Automate flows within the migration scope; that is a separate engagement.
Platform deep dives
Corteza CRM
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Corteza CRM and Microsoft Dynamics 365 Sales .
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Corteza CRM and Microsoft Dynamics 365 Sales .
Object compatibility
All 8 core objects map 1:1 between Corteza CRM 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
Corteza CRM: Not publicly documented.
Data volume sensitivity
Corteza CRM 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 Corteza CRM to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Corteza CRM 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 Corteza CRM
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.