CRM migration

Migrate from openCRX to Microsoft Dynamics 365 Sales

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 logo

openCRX

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

82%

9 of 11

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

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

openCRX logo

openCRX

What's pushing teams away

  • The user interface is unintuitive and the learning curve is steep, making day-to-day usage challenging for non-technical teams without dedicated administrator resources.
  • Comprehensive formal documentation is lacking, forcing teams to reverse-engineer behaviour from UML models, Javadoc, and community forum posts.
  • No official commercial support channel exists; users must rely on community resources or internal expertise when production issues arise.
  • Pre-built integrations with popular third-party tools are minimal, requiring custom development effort to connect openCRX to modern SaaS stacks.

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

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)

maps to

Microsoft Dynamics 365 Sales

Account

1:1
Fully supported

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

maps to

Microsoft Dynamics 365 Sales

Contact

1:1
Fully supported

openCRX 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

maps to

Microsoft Dynamics 365 Sales

Opportunity

1:1
Fully supported

openCRX 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

maps to

Microsoft Dynamics 365 Sales

Quote

1:1
Fully supported

openCRX 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

maps to

Microsoft Dynamics 365 Sales

SalesOrder

1:1
Fully supported

openCRX 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

maps to

Microsoft Dynamics 365 Sales

Invoice

1:1
Fully supported

openCRX 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

maps to

Microsoft Dynamics 365 Sales

Product

1:1
Fully supported

openCRX 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

maps to

Microsoft Dynamics 365 Sales

Task, Appointment, EmailMessage

1:many
Fully supported

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

maps to

Microsoft Dynamics 365 Sales

Custom Fields

lossy
Mapping required

Custom 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

maps to

Microsoft Dynamics 365 Sales

SystemUser and Security Role

1:1
Fully supported

openCRX 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

maps to

Microsoft Dynamics 365 Sales

Annotation / Note

1:1
Fully supported

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

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.

openCRX logo

openCRX gotchas

High

No public REST API with documented rate limits

Medium

WebDAV client quirks block document access on Windows

Medium

"Too many open files" on Linux blocks installation and export

Low

Workflow Processes are segment-scoped and non-portable

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 public REST API requires database-export strategy

    openCRX exposes its data through JMX and internal application-layer interfaces but does not publish a public REST API with documented rate limits. All data extraction requires either a direct read-only database export (coordinated with the customer's DBA) or application-layer export scripting against the customer's specific openCRX version and deployment configuration. We handle this by agreeing on an export format during scoping, typically a PostgreSQL or Oracle read-only dump or a scripted CSV export via the openCRX application layer, and we validate the export completeness before beginning the Dataverse load. Any API-based migration strategy scoped against openCRX without confirming the customer's specific deployment configuration will fail.

  • WebDAV attachment access fails on Windows clients

    openCRX's groupware features use WebDAV for document storage, and Microsoft's WebDAV implementation on Windows is known to be unreliable. During migration, if attachment files are stored via openCRX WebDAV, we ensure the export process runs on a Linux or macOS client to avoid silent file access failures. If the customer's openCRX instance stores attachments in a file system accessible to the migration host, we use direct file system access instead of WebDAV. Attachments inaccessible during export are flagged in the reconciliation report for manual handling.

  • Multi-address per entity maps to only one primary address in Dynamics 365

    openCRX supports multiple addresses per entity with role types (billing, shipping, primary, etc.) stored as distinct address records. Dynamics 365 Account and Contact entities each have a single composite address field plus optional shipping and billing address fields. We map the openCRX primary address to the composite address fields and map the most relevant secondary address to the shipping or billing field, but any additional address records are stored as a custom address sub-grid entity or noted for manual entry. We engage business users during scoping to determine which address role takes precedence for each record type.

  • Workflow Processes and Alert Topics do not migrate

    openCRX Workflow Processes are segment-scoped objects that are not standalone records exportable and re-importable into another system. Alert Topics (event-subscription-based email notifications) are infrastructure configuration objects tightly bound to the running openCRX instance. We document all active Workflow Process definitions and Alert Topic configurations during discovery, but we do not transfer them. The customer's administrator rebuilds workflow logic in Dynamics 365 using Power Automate or Dynamics workflows post-migration, using the documented definitions as a reference. This is explicitly outside standard migration scope.

  • Data quality issues in legacy openCRX data require pre-migration cleansing

    openCRX instances that have been running for several years commonly accumulate incomplete records, duplicate accounts, inconsistent date formats, and mixed character encoding. Migrating data as-is into Dynamics 365 perpetuates these issues and can trigger validation rule failures on required fields, picklist mismatches, and lookup resolution failures. We profile the source data during discovery, run a cleansing pass on the extracted dataset (de-duplication, required-field validation, date normalisation, special-character handling), and re-export before loading into Dynamics 365. Without pre-migration data cleansing, 15-30 percent of records may be rejected or require manual correction during UAT.

Migration approach

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

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

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

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

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

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

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

Context on both ends of the pair

openCRX logo

openCRX

Source

Strengths

  • Zero licensing cost with full source code, UML models, and Javadoc published under a BSD licence.
  • Enterprise-grade data model covering the full sales cycle from Lead through Invoice with full position-level detail.
  • Built on standard J2EE 6 Web Profile and Apache TomEE, running on any OS with Java VM support.
  • Multi-currency, multi-language, and multi-entity capabilities designed for global enterprise deployments.
  • Role-based security with system-wide audit trail meets requirements for regulated industry deployments.

Weaknesses

  • Self-hosting responsibility means no vendor-managed uptime, backups, or security patching.
  • No official commercial support; production issues require community resources or internal Java expertise.
  • Steeper operational burden compared to SaaS CRMs, requiring dedicated server administration.
  • Scarce pre-built third-party integrations; most connectors require custom development.
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 openCRX and Microsoft Dynamics 365 Sales .

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

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

    openCRX: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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 consultation

Most openCRX migrations land between three and five weeks for single-segment databases with under 20,000 Account and Contact records and no complex product bundles or large activity histories. Multi-segment databases, large engagement histories (over 200,000 activity records), or complex contract hierarchies with deep position-level detail move to eight to fourteen weeks because of database-export coordination, DataBinding PropertySet custom field identification, Dataverse API batch sequencing, and parent-record resolution. Discovery alone takes one to two weeks regardless of size.

Adjacent paths

Related migrations to explore

Ready when you are

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