CRM migration
Field-level mapping, validation, and rollback between Oncourse CRM and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Oncourse CRM
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
3 of 8
objects map 1:1 between Oncourse CRM and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
2-4 weeks
Overview
Oncourse CRM uses a flat contact model where organization names are stored as a Contact property rather than a distinct entity, and it captures engagement history as unstructured notes rather than typed activity records. Microsoft Microsoft Dynamics 365 Sales uses a hierarchical Account-Contact-Opportunity model with structured Task and Event objects. We resolve the organization extraction during scoping by pulling the org property from every Contact, deduplicating it, creating the corresponding Account records in Dynamics, and linking each Contact back via a parent Account lookup. Pipeline stages are extracted from Oncourse's active stage names and built as Opportunity Sales Processes in Dynamics before any deal records import. Activity history migrates as Salesforce Note records with the original Oncourse creation timestamp preserved in a custom field for audit trail continuity. We do not migrate automations, forms, or workflows; these are documented for the customer's admin to rebuild in Dynamics.
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
Oncourse CRM platform overview
Scorecard, SWOT, gotchas, and pricing for Oncourse 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 Oncourse 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.
Oncourse CRM
Lead
Microsoft Dynamics 365 Sales
Lead
1:1Oncourse CRM treats Leads as a distinct source-stage record type separate from Contacts. We map Leads directly to Dynamics 365 Lead, preserving the lead source and status as standard properties (leadsource, statecode). Any Oncourse Lead-specific custom fields migrate to Lead custom fields in Dataverse with type mapping applied (text to single-line text, number to whole number or decimal, date to datetime). The Lead Status values are preserved as a custom field for reconciliation after migration.
Oncourse CRM
Contact
Microsoft Dynamics 365 Sales
Contact
1:manyContacts migrate to Dynamics 365 Contact with a pre-created parent Account lookup. We extract the organization property from each Oncourse Contact during the transform phase, deduplicate the organization list, and resolve each Contact's AccountId from the Account mapping. Contacts without a populated organization property in Oncourse are flagged as standalone Contacts without a parent Account. Standard fields (fullname, emailaddress1, telephone1, address) map directly to Dynamics field names.
Oncourse CRM
Organization (Contact property)
Microsoft Dynamics 365 Sales
Account
many:1Oncourse CRM does not expose a distinct Account or Company object. The organization name is stored as a property on the Contact record. We extract every distinct non-null organization value from Contact records, deduplicate across the full Contact set, create Account records in Microsoft Dynamics 365 Sales , and use the resulting AccountId as the parent lookup on each Contact during Contact import. The Account name maps to the name field; the primary contact's email becomes the account's email address where available.
Oncourse CRM
Deal
Microsoft Dynamics 365 Sales
Opportunity
1:1Oncourse Deals map directly to Dynamics 365 Opportunity. The deal name maps to the Opportunity name field, deal value maps to estimatedvalue, and the Oncourse pipeline stage maps to the stage name in the configured Dynamics Sales Process. The owner from Oncourse resolves to a Dynamics User via email match before Opportunity import. Closed-won and closed-lost statuses from Oncourse map to the corresponding Opportunity statecode in Dynamics.
Oncourse CRM
Pipeline Stage
Microsoft Dynamics 365 Sales
Sales Process + Stage
lossyOncourse CRM pipelines are per-account and fully customizable. We extract the customer's active pipeline stage names and stage order from the source export, then configure corresponding Opportunity Sales Processes in Microsoft Dynamics 365 Sales before any Opportunity records load. Each stage receives a probability percentage mapped from the Oncourse stage weights. New stages are created in Dynamics if the customer's active stage names do not match any existing Sales Process values.
Oncourse CRM
Activity (note-based history)
Microsoft Dynamics 365 Sales
Note
lossyOncourse CRM captures engagement history as timestamped free-form notes rather than structured Task, Event, or EmailMessage records. There is no type classification distinguishing calls, emails, or meetings in Oncourse's standard export. We migrate the full note body and timestamp as Salesforce Note records linked via ContentDocumentLink to the parent Contact, Lead, Account, or Opportunity. We preserve the original Oncourse note creation timestamp in a custom field original_created_date__c for audit continuity. Customers who require typed activity records (Task, Event) for reporting should budget for a post-migration data enrichment pass to classify migrated notes into the correct activity types.
Oncourse CRM
Task
Microsoft Dynamics 365 Sales
Task
1:1Oncourse CRM associates actionable tasks with Deals. We migrate task records as standalone Dynamics 365 Task objects linked to the corresponding Opportunity via the regardingobjectid lookup. Task subject, status (open, completed), priority, and due date map directly. Task assignment resolves the Oncourse owner to a Dynamics User via email match before Task import. Completed task dates are preserved as ActivityDate.
Oncourse CRM
Custom Fields (Contact, Lead, Deal)
Microsoft Dynamics 365 Sales
Custom Fields
lossyCustom fields on Contacts, Leads, and Deals are exposed via the Oncourse DSL export. We map each custom field to an equivalent Dataverse custom column, applying the correct data type mapping: text to single-line or multi-line text, number to whole number or decimal, date to datetime, checkbox to two options. Unsupported field types (e.g., Oncourse-specific structured objects with no Dataverse equivalent) are flagged during scoping for customer decision on whether to drop, flatten, or store as JSON in a text field.
| Oncourse CRM | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Lead | Lead1:1 | Fully supported | |
| Contact | Contact1:many | Fully supported | |
| Organization (Contact property) | Accountmany:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Sales Process + Stagelossy | Fully supported | |
| Activity (note-based history) | Notelossy | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Custom Fields (Contact, Lead, Deal) | Custom Fieldslossy | 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.
Oncourse CRM gotchas
Attachments are not exportable via the standard import/export tooling
Activity history lives in notes, not structured records
Pipeline stages are tenant-defined free text
Voice and SMS allowances cap at 400 each on Standard
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 scope definition
We audit the source Oncourse CRM instance across active pipeline stage names, total record counts for Contacts, Leads, Deals, and Tasks, the presence of custom fields on each object, the organization property population rate on Contacts (to estimate Account creation volume), and any activity history volume estimate. We pair this with a Microsoft Dynamics 365 Sales edition review: Sales Professional ($65/user) covers custom field mapping and pipeline configuration; Sales Enterprise ($105/user) is recommended if multi-record-type pipelines or advanced AI features are required. The discovery output is a written migration scope document with object counts, pipeline stage list, and an Account pre-creation estimate.
Schema design in Dynamics sandbox
We configure the destination Microsoft Dynamics 365 Sales environment in a Sandbox. This includes creating custom columns in Dataverse for each Oncourse custom field with type-matched Dataverse column types, building the Opportunity Sales Process with stage names mapped from the customer's active Oncourse pipeline and probability percentages, creating the Contact and Account page layouts, and pre-configuring the owner lookup to User resolution table. Schema is deployed via Dataverse API into a Sandbox org first for validation by the customer's Dynamics admin before production migration begins.
Sandbox migration and reconciliation
We run a full migration into the Sandbox using production-equivalent data volume. The customer's RevOps or CRM admin spot-checks 25-50 records across each object type against the Oncourse source, verifies that Contact-Account lookups are populated, confirms stage assignments on Opportunities, and reviews the Note activity records for content integrity. The customer signs off on the sandbox migration before production migration proceeds. Any field mapping corrections, stage name adjustments, or custom field type changes happen at this stage.
Organization extraction and Account pre-creation
We extract every distinct non-null organization value from the Oncourse Contact export, deduplicate across the full Contact dataset, and load Account records into Microsoft Dynamics 365 Sales before any Contact data imports. This phase resolves the parent Account ID for every Contact that will be imported in the next phase. Any organization value that appears only once (no deduplication benefit) still creates a single Account. The output is a reconciliation report showing Account count, Contact-to-Account resolution rate, and any Contact records flagged as having no organization property.
Production migration in dependency order
We run production migration in dependency order: Accounts (from extracted organizations), Users (validated against Dynamics User table by email), Leads, Contacts (with parent Account lookup resolved), Opportunities (with Sales Process stage resolved), Tasks (with Owner resolved via email match), and Note records (linked via ContentDocumentLink to the parent record). Custom field data loads inline with each object phase. Each phase emits a row-count reconciliation report before the next phase begins, and the customer reviews the counts against Oncourse source totals.
Cutover, delta migration, and handoff
We freeze writes in Oncourse CRM during cutover, run a final delta migration of any records created or modified during the migration window, enable Microsoft Dynamics 365 Sales as the system of record, and deliver a written inventory of Oncourse automations, pipeline configurations, and any custom objects that require rebuild in Dynamics by the customer's admin or a Microsoft partner. We support a one-week hypercare window for reconciliation issues. We do not rebuild Oncourse automations or workflow rules as Dynamics Flows within migration scope; those are a separate engagement or an internal admin rebuild task.
Platform deep dives
Oncourse CRM
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
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 Oncourse CRM and Microsoft Dynamics 365 Sales .
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
Oncourse CRM: Not publicly documented.
Data volume sensitivity
Oncourse 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 Oncourse CRM to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Oncourse 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 Oncourse 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.