CRM migration
Field-level mapping, validation, and rollback between openCRX and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
openCRX
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
9 of 11
objects map 1:1 between openCRX and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from openCRX to Microsoft Microsoft Dynamics 365 Sales is a structural migration that begins with a database export rather than an API call, because openCRX does not expose a public REST endpoint. We work with the customer's DBA or openCRX administrator to extract the relational data model, transform LegalEntity and Contact subtypes into the separate Account and Contact objects expected by Dynamics 365, and load via the Dataverse API with rate-limit handling and batch chunking. openCRX's contract hierarchy (Opportunities, Quotes, Sales Orders, Invoices) maps to the standalone Opportunity, Quote, SalesOrder, and Invoice entities in Microsoft Dynamics 365 Sales , preserving line-item positions as order details. Activity history migrates to the Task, Appointment, and EmailMessage Dataverse entities with parent-record resolution against the migrated Account, Contact, and Opportunity records. openCRX Workflow Processes and Alert Topics are segment-scoped and non-portable; we document them during discovery but do not transfer them. User accounts map to Dynamics 365 SystemUser records with role assignments, and any custom fields added via DataBinding PropertySet migrate as custom fields on the target entity.
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
openCRX platform overview
Scorecard, SWOT, gotchas, and pricing for openCRX.
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 openCRX 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.
openCRX
Account (LegalEntity)
Microsoft Dynamics 365 Sales
Account
1:1openCRX LegalEntity records map directly to Dynamics 365 Account. The LegalEntity's primary address, phone numbers, industry classification, and multi-currency settings transfer to the corresponding Account fields. We use the LegalEntity's internal identifier as a cross-reference key during migration so that any Contact records linked to this LegalEntity can be updated with the correct AccountId after the Account insert completes.
openCRX
Account (Contact)
Microsoft Dynamics 365 Sales
Contact
1:1openCRX Contact records (individual persons) map to Dynamics 365 Contact. Each Contact inherits its primary postal address and phone number from the Contact record directly, not from a parent LegalEntity. We set the parent AccountId by resolving the Contact's legal entity reference through the Account cross-reference table created during the LegalEntity import phase.
openCRX
Opportunity
Microsoft Dynamics 365 Sales
Opportunity
1:1openCRX Opportunities inherit from the abstract contract class and carry deal fields, ratings, stage values, and associated notes as standard attributes. We map the openCRX opportunity stage to Dynamics 365 Opportunity StageName, and the openCRX currency code to the Dynamics 365 TransactionCurrencyId. Closed-Won and Closed-Lost outcomes and their timestamps migrate as standard stage fields. The parent AccountId and primary ContactId are resolved via the cross-reference tables created during the Account and Contact import.
openCRX
Quote
Microsoft Dynamics 365 Sales
Quote
1:1openCRX Quotes inherit from the same contract hierarchy as Opportunities and Sales Orders. The Quote positions (contract positions in openCRX) map to Quote Details (quotedetail) in Dynamics 365. We preserve the quote header totals, pricing rules, currency context, and the Quote's status field. If the openCRX Quote has an expiration date, it maps to the Expirede field in Dynamics 365.
openCRX
Sales Order
Microsoft Dynamics 365 Sales
SalesOrder
1:1openCRX Sales Orders are contract objects that can be transformed from Quotes. Order positions (contract positions) map to SalesOrderDetail records in Dynamics 365, preserving quantity, unit price, and any discount applied at the line level. The order header total, currency, and status migrate as fields on the SalesOrder entity. We resolve the parent AccountId and ContactId from the cross-reference tables before inserting order records.
openCRX
Invoice
Microsoft Dynamics 365 Sales
Invoice
1:1openCRX Invoices are terminal contract objects with header and position detail. Invoice headers migrate to Dynamics 365 Invoice with payment terms, billing address, and total amount; invoice line positions migrate to InvoiceDetail records. Payment status in openCRX maps to the Dynamics 365 Invoice Status field. We handle the one-to-one address mapping from openCRX's postal address model to Dynamics 365's address structure (separate address fields vs address composite fields).
openCRX
Product
Microsoft Dynamics 365 Sales
Product
1:1openCRX Products (including bundles) map to Dynamics 365 Product2 records with the Product Type set to Product or Bundle as appropriate. openCRX price lists map to Dynamics 365 PriceList entities, and price list entries map to ProductPriceLevel records linked to the corresponding Product2 and PriceList. We resolve the pricing priority from openCRX's runtime pricing rules to the PriceListItem's amount field.
openCRX
Activity and Activity Tracker
Microsoft Dynamics 365 Sales
Task, Appointment, EmailMessage
1:manyopenCRX Activities with call disposition, duration, and outcome map to Dynamics 365 Task with TaskSubtype set to Call. openCRX meeting activities with start and end timestamps, location, and attendee data map to Dynamics 365 Appointment (Event). openCRX email activities with body content, sender, and recipients map to Dynamics 365 EmailMessage records linked to a Task activity entry. Activity Trackers in openCRX (which group related activities) are not a standard Dynamics entity; we document tracker groupings during discovery and advise the customer on manual re-grouping via Dynamics 365 visual pipelines or custom entities post-migration.
openCRX
User-Defined Attributes (DataBinding PropertySet)
Microsoft Dynamics 365 Sales
Custom Fields
lossyCustom fields added via openCRX DataBinding PropertySet are identified during scoping by inspecting the feature definition layer. Each custom CrxObject attribute maps to a custom column on the corresponding Dataverse table (e.g., custom attribute on Contract maps to a custom column on Opportunity). We create the custom column definition with the appropriate Dataverse column type before data load, and validate the attribute values during the sandbox migration pass. Active user-defined attributes are documented in the schema inventory delivered with the migration.
openCRX
User and Role
Microsoft Dynamics 365 Sales
SystemUser and Security Role
1:1openCRX user records with their role-based security assignments are extracted and mapped to Dynamics 365 SystemUser records. We match by email address and create a user mapping table during scoping. The openCRX role definitions (which define what a user can access per segment) map to Dynamics 365 Security Roles and, where the customer's role model supports it, to Teams or Business Units for hierarchy-scoped permissions. Active users are migrated; inactive users are flagged for the customer's admin to provision or archive.
openCRX
Attachment
Microsoft Dynamics 365 Sales
Annotation / Note
1:1openCRX binary attachments linked to objects are extracted via the data export where file access is available. We migrate attachment metadata (filename, content type, creation date, linked object reference) as Annotation records in Dynamics 365 with the file content stored as base64-encoded body content or as a Note with an external file reference. If attachments are stored via openCRX WebDAV, we export on a Linux or macOS client to avoid the Windows WebDAV compatibility issues documented in the openCRX platform page. We flag any attachments that cannot be accessed during export for manual handling.
| openCRX | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Account (LegalEntity) | Account1:1 | Fully supported | |
| Account (Contact) | Contact1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Quote | Quote1:1 | Fully supported | |
| Sales Order | SalesOrder1:1 | Fully supported | |
| Invoice | Invoice1:1 | Fully supported | |
| Product | Product1:1 | Fully supported | |
| Activity and Activity Tracker | Task, Appointment, EmailMessage1:many | Fully supported | |
| User-Defined Attributes (DataBinding PropertySet) | Custom Fieldslossy | Mapping required | |
| User and Role | SystemUser and Security Role1:1 | Fully supported | |
| Attachment | Annotation / Note1: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.
openCRX gotchas
No public REST API with documented rate limits
WebDAV client quirks block document access on Windows
"Too many open files" on Linux blocks installation and export
Workflow Processes are segment-scoped and non-portable
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 export strategy
We audit the openCRX instance across segments, identifying the full object inventory (LegalEntity, Contact, Opportunity, Quote, SalesOrder, Invoice, Product, Activity, User, Role), any DataBinding PropertySet custom field definitions, WebDAV attachment storage locations, and active Workflow Process and Alert Topic configurations. We agree on the export method with the customer's DBA or openCRX administrator: either a direct read-only database export (PostgreSQL or Oracle) or a scripted application-layer export. We also identify the Microsoft Dynamics 365 Sales edition (Sales Professional at $65/user or Sales Enterprise at $105/user) and confirm the target Dataverse environment (production or sandbox). The discovery output is a written migration scope, an export runbook for the customer's DBA, and a Dynamics 365 environment readiness checklist.
Data extraction and profiling
The customer's DBA or openCRX administrator runs the agreed export. We receive the raw dataset and perform data profiling: record counts per object, completeness of required fields, duplicate detection (accounts by name and domain, contacts by email), date format normalisation, currency code validation, and identification of any attachment files that cannot be accessed via WebDAV. We flag records with missing required fields and return a data quality report to the customer with a remediation checklist before proceeding to transformation. This step prevents the majority of validation failures during the Dataverse load.
Transformation and sandbox migration
We apply the transformation logic: LegalEntity records are prepared for Account insert, Contact records are prepared with AccountId lookups resolved via cross-reference tables, Opportunities are prepared with AccountId and StageName mapped, contract positions are split into Quote Details, SalesOrder Details, and Invoice Details with parent-record references, Products are mapped to Product2 with PriceList entries, and Activities are split into Task, Appointment, and EmailMessage records. We run the full migration into a Dynamics 365 Sandbox environment using Dataverse API batch operations. The customer's RevOps lead reviews a spot-check sample of 25-50 records against the openCRX source, validates the LegalEntity-to-Account split, and signs off before production migration begins.
User provisioning and security role mapping
We extract every distinct openCRX user referenced on Account, Contact, Opportunity, and Activity records and present a user reconciliation list to the customer. The customer's Dynamics 365 admin provisions any missing users and assigns the appropriate Security Role. We resolve openCRX role definitions to Dynamics 365 Security Roles and Business Units where applicable. OwnerId references on migrated records are validated against the provisioned user list. Migration cannot proceed past this step because OwnerId references are required on Opportunity, Quote, SalesOrder, and Invoice entities.
Production migration in dependency order
We run production migration in strict dependency order: Accounts (from LegalEntity), Contacts (with AccountId resolved), Products and PriceList entries, Opportunities (with AccountId, OwnerId, and stage mapped), Quotes (with AccountId and OpportunityId resolved where applicable), Quote Details, SalesOrders (with AccountId and OpportunityId resolved), SalesOrder Details, Invoices, Activity history (Tasks, Appointments, EmailMessages via Dataverse API with batch chunking and rate-limit handling), custom fields (with all parent records present), and Attachments. Each phase emits a row-count reconciliation report before the next phase begins. We freeze openCRX writes during cutover and run a final delta migration of any records modified during the window.
Cutover, validation, and Workflow rebuild handoff
After the delta migration, we enable Microsoft Dynamics 365 Sales as the system of record and deliver the full migration record: row-count reconciliation per entity, field-level mapping document, DataBinding PropertySet custom field inventory, Workflow Process and Alert Topic documentation, and the user mapping table. We deliver a written inventory of every active Workflow Process with its trigger, conditions, and a recommended Dynamics 365 Power Automate or workflow equivalent. We support a one-week hypercare window for reconciliation issues. We do not rebuild openCRX Workflow Processes as Dynamics 365 workflows inside the migration scope; that work is documented for the customer's administrator or a Dynamics 365 implementation partner.
Platform deep dives
openCRX
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between openCRX and Microsoft Dynamics 365 Sales .
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across openCRX and Microsoft Dynamics 365 Sales .
Object compatibility
All 8 core objects map 1:1 between openCRX 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
openCRX: Not publicly documented.
Data volume sensitivity
openCRX 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 openCRX to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your openCRX 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 openCRX
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.