CRM migration

Migrate from Oncourse CRM to Microsoft Dynamics 365 Sales

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 logo

Oncourse CRM

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

38%

3 of 8

objects map 1:1 between Oncourse CRM and Microsoft Dynamics 365 Sales .

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Oncourse CRM logo

Oncourse CRM

What's pushing teams away

  • Public API documentation is limited — custom integrations are described as 'requires more technical know-how' and there is no self-service developer portal.
  • Activity history is stored as notes rather than structured Activity records, limiting reporting depth and making clean migration off the platform harder.
  • Attachment export is not supported by the standard tooling — files in the document store have to be manually backed up before migration.
  • Small market footprint and limited public review volume make peer benchmarking against established competitors (HubSpot, Pipedrive, Close) harder.
  • Voice/SMS allowances are capped (400 minutes / 400 SMS on Standard) — high-volume outbound teams hit overage or per-line surcharges quickly.

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

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

maps to

Microsoft Dynamics 365 Sales

Lead

1:1
Fully supported

Oncourse 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

maps to

Microsoft Dynamics 365 Sales

Contact

1:many
Fully supported

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

maps to

Microsoft Dynamics 365 Sales

Account

many:1
Fully supported

Oncourse 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

maps to

Microsoft Dynamics 365 Sales

Opportunity

1:1
Fully supported

Oncourse 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

maps to

Microsoft Dynamics 365 Sales

Sales Process + Stage

lossy
Fully supported

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

maps to

Microsoft Dynamics 365 Sales

Note

lossy
Fully supported

Oncourse 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

maps to

Microsoft Dynamics 365 Sales

Task

1:1
Fully supported

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

maps to

Microsoft Dynamics 365 Sales

Custom Fields

lossy
Fully supported

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

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.

Oncourse CRM logo

Oncourse CRM gotchas

High

Attachments are not exportable via the standard import/export tooling

Medium

Activity history lives in notes, not structured records

Medium

Pipeline stages are tenant-defined free text

Low

Voice and SMS allowances cap at 400 each on Standard

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

  • Activity history lacks type classification in Oncourse CRM

    Oncourse CRM stores all engagement history as unified notes with timestamps but no structured type separating calls, emails, meetings, or tasks. Microsoft Microsoft Dynamics 365 Sales expects structured Task, Event, and EmailMessage objects with distinct schemas and relationship types. We migrate Oncourse notes as Salesforce Note records preserving content and timestamp, but any desire to surface engagement data in typed Activity timelines (Call Log, Email, Meeting) requires a post-migration classification pass by the customer using Oncourse's note content as the source of truth. This gap affects pipeline analytics that rely on typed activity counts per stage.

  • Organization property requires pre-import Account creation

    Oncourse CRM has no separate Company or Account entity. Organization names stored as Contact properties must be extracted, deduplicated, and pre-loaded as Dynamics 365 Account records before any Contact records can be imported, because the Contact.parentcustomerid lookup requires a valid Account reference. Migrations that attempt Contact import without Account pre-creation will fail on foreign key constraint or produce orphaned Contacts. We run the organization extraction and Account pre-creation as the second phase of every production migration, after User provisioning and before any Contact data loads.

  • Oncourse pipeline stages need pre-configuration in Dynamics

    Oncourse CRM allows fully customized per-account pipeline stages with arbitrary names and ordering. Microsoft Dynamics 365 Sales requires pipeline stages to exist as Opportunity Sales Processes before any Opportunity records are assigned those stage values. Stage names from Oncourse that do not match an existing Dynamics Sales Process value cause import failures or default to the first available stage. We configure the full stage list from the customer's active Oncourse pipeline as a Dynamics Sales Process during the schema design phase, with probability percentages mapped from Oncourse stage weights, before Opportunity records load.

  • No attachment export via Oncourse standard tooling

    Oncourse CRM does not expose a public file attachment export via its standard import/export tooling. We cannot guarantee attachment migration in automated runs. Reviewers on comparison sites note that Oncourse's export does not include uploaded files. We recommend a manual backup of the documents folder before migration cutover. Post-migration, the customer can store attachments natively in Dynamics 365 via SharePoint document libraries connected through the Dataverse integration, which provides a structured replacement for the files that were stored in Oncourse.

  • Task status and priority mapping requires Oncourse enumeration review

    Oncourse CRM uses a specific enumerated set for task status (open, completed) and priority that may not align with the Dynamics 365 Task statuscode and prioritycode picklist values. We map Oncourse enumerated values to the nearest Dynamics equivalent during the transform phase, but the customer's admin should review the mapped Task records in the sandbox migration to confirm that closed and open states are correctly reflected. Any Oncourse custom task status values not representable in Dynamics are preserved in a custom text field task_original_status__c for manual review.

Migration approach

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

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

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

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

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

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

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

Context on both ends of the pair

Oncourse CRM logo

Oncourse CRM

Source

Strengths

  • Unified phone dialer, SMS, email sequencing and CRM in one product
  • Low entry price (Basic $14.99/user/month; Standard $49.95/user/month on annual)
  • Drag-and-drop pipeline with customisable stages tuned for small-team sales motions
  • Outlook, Gmail and Google Calendar integrations supported natively
  • Card-view pipeline and mobile CRM access for on-the-go sales teams

Weaknesses

  • Public API documentation is sparse; custom integrations require Zibtek dev work
  • Activity history stored as notes rather than structured Activity records
  • Standard attachment export is not supported — files must be backed up manually
  • Voice (400 min) and SMS (400) caps on Standard limit high-volume outbound teams
  • Small ecosystem and limited public reviews relative to HubSpot, Pipedrive, Close
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. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

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

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • 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

    Oncourse CRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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 consultation

Migrations under 10,000 total records (Contacts, Deals, Leads) with straightforward object mapping and no custom pipeline configuration land between two and four weeks. Migrations exceeding 25,000 records, with extensive custom fields, multi-stage pipeline configuration, activity history migration, and sandbox reconciliation testing, extend to six to ten weeks. The primary driver of timeline variance is the organization extraction and Account pre-creation phase, which requires the customer to validate the Account list before Contact import begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Oncourse CRM.
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