CRM migration
Field-level mapping, validation, and rollback between Oncourse CRM and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Oncourse CRM
Source
Salesforce Sales Cloud
Destination
Compatibility
7 of 12
objects map 1:1 between Oncourse CRM and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Oncourse CRM to Salesforce is a schema migration, not a record copy. Oncourse CRM stores contacts with an optional organization name as a Contact property rather than a distinct Account record; Salesforce requires a hierarchical Account-to-Contact structure for its relationship model. We extract organization values during the transform phase, create the Account in Salesforce, and link the Contact to it before insert. Deals map 1:1 to Opportunity, preserving stage name and monetary value. Oncourse CRM stores activity history as notes rather than structured activity records, so we surface this as a data-shape difference and migrate note content as Salesforce Note objects attached to the relevant Contact or Opportunity. Workflows, automations, and built-in calling and SMS features do not migrate; we deliver a written inventory of these for the customer's admin to rebuild in Salesforce Flow or a Sales Engagement tool.
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.
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 Salesforce Sales Cloud, 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
Salesforce Sales Cloud
Lead
1:1Oncourse CRM Lead records map directly to Salesforce Lead. The Lead Source property maps to LeadSource and the Oncourse status property maps to Status. We preserve any custom fields from the Oncourse DSL export as typed Salesforce fields. Lead creation in Oncourse CRM is the entry point for unqualified prospects, and we hold the 1:1 mapping unless the customer's sales process involves immediate qualification into Contacts, in which case a pre-migration qualification pass is applied.
Oncourse CRM
Contact
Salesforce Sales Cloud
Contact + Account
many:1Oncourse CRM Contacts with an organization name stored as a Contact property are split into two operations during migration. First, we extract distinct organization names and create Salesforce Account records. Second, we insert Contacts with AccountId resolved via the Account lookup. Contacts without an organization value insert as standalone Contacts with no Account link. The original organization value is preserved in a custom field onc_original_organization__c for reference.
Oncourse CRM
Deal
Salesforce Sales Cloud
Opportunity
1:1Oncourse CRM Deals map to Salesforce Opportunity. The Deal name maps to Opportunity.Name, value maps to Amount, stage maps to StageName, and owner maps to OwnerId via User email resolution. We extract the pipeline stage configuration during scoping and create corresponding Salesforce Opportunity Stages before migration. Deal properties that have no direct Salesforce equivalent are migrated as custom Opportunity fields.
Oncourse CRM
Pipeline Stage
Salesforce Sales Cloud
Opportunity Stage
lossyOncourse CRM pipeline stages are account-specific and customizable. We extract the customer's active stage names during scoping, create matching StageName values in Salesforce, and assign probability percentages. Stage ordering is preserved. If the customer uses multiple Oncourse pipelines, we create Salesforce Record Types on Opportunity to separate pipeline contexts.
Oncourse CRM
Task
Salesforce Sales Cloud
Task
1:1Oncourse CRM Tasks associated with Deals migrate to Salesforce Task records. The WhatId on Task points to the migrated Opportunity. Task Status, Priority, and ActivityDate are preserved. Task assignment migrates by resolving the Oncourse owner reference to the Salesforce User via email lookup.
Oncourse CRM
Note
Salesforce Sales Cloud
Note
1:1Oncourse CRM stores activity history as notes rather than structured engagement records. We migrate Oncourse notes as Salesforce Note objects. The Note Body preserves the full text. We link the Note to the appropriate parent record (Lead, Contact, Account, or Opportunity) via ContentDocumentLink using the resolved record IDs from migration. The note creation timestamp becomes the Salesforce Note CreatedDate for timeline ordering.
Oncourse CRM
Custom Field (Contact)
Salesforce Sales Cloud
Custom Field (Contact)
lossyOncourse CRM custom fields on Contacts are exposed via the DSL export and migrate as custom fields on the Salesforce Contact object. We apply Salesforce field type mapping (text to Text, number to Number, date to Date, checkbox to Checkbox) and create fields with __c suffix. The customer reviews field names during scoping to avoid naming conflicts with existing Salesforce fields.
Oncourse CRM
Custom Field (Deal)
Salesforce Sales Cloud
Custom Field (Opportunity)
lossyOncourse CRM custom fields on Deals migrate as custom fields on the Salesforce Opportunity object. Custom Deal fields that represent product line, deal source, or renewal type map to custom Opportunity fields of appropriate Salesforce data type. If the custom field is a picklist in Oncourse CRM, we create a corresponding Salesforce picklist with the same allowed values.
Oncourse CRM
Custom Field (Lead)
Salesforce Sales Cloud
Custom Field (Lead)
lossyOncourse CRM custom fields on Leads migrate as custom fields on the Salesforce Lead object using __c suffix naming. These are created in the destination org before Lead migration begins to satisfy field existence requirements during insert.
Oncourse CRM
Owner
Salesforce Sales Cloud
User
1:1Oncourse CRM owner references on Contacts, Leads, Deals, and Tasks resolve by email match against the destination Salesforce User table. Any owner without a matching Salesforce User is placed in a reconciliation queue for the customer's admin to provision before the corresponding records load. Migration does not proceed past Owner-dependent objects until the queue is resolved.
Oncourse CRM
Attachment
Salesforce Sales Cloud
ContentDocument
1:1Oncourse CRM does not expose a public file attachment export via its standard import/export tooling. Attachments cannot be migrated in automated runs. We recommend a manual export of the Oncourse CRM document store before cutover and a separate file migration using Salesforce Data Loader or the ContentWorkspace API post-migration if the customer requires structured document storage.
Oncourse CRM
Drip Sequence
Salesforce Sales Cloud
Sales Engagement Cadence
1:1Oncourse CRM drip sequences are sales engagement cadences with built-in email steps and delays. These do not migrate to Salesforce. We deliver a written inventory of every active Oncourse CRM drip sequence with its step order, delay intervals, email templates, and a recommended replacement in Salesforce Sales Engagement (High Velocity Sales), Outreach, or Salesloft. The customer's RevOps team rebuilds sequences in their chosen engagement tool.
| Oncourse CRM | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Lead | Lead1:1 | Fully supported | |
| Contact | Contact + Accountmany:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Opportunity Stagelossy | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Note | Note1:1 | Fully supported | |
| Custom Field (Contact) | Custom Field (Contact)lossy | Fully supported | |
| Custom Field (Deal) | Custom Field (Opportunity)lossy | Fully supported | |
| Custom Field (Lead) | Custom Field (Lead)lossy | Fully supported | |
| Owner | User1:1 | Fully supported | |
| Attachment | ContentDocument1:1 | Fully supported | |
| Drip Sequence | Sales Engagement Cadence1: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.
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
Salesforce Sales Cloud gotchas
Workflow Rules and Process Builder are retired
Bulk API batch quota exhaustion during large imports
Storage overage billing is non-obvious
Account-Contact many-to-many relationship mapping
Territory and team member import ordering dependencies
Pair-specific challenges
Migration approach
Discovery and scoping
We audit the source Oncourse CRM instance across contacts, leads, deals, custom fields, pipeline configurations, task records, and note volumes. We assess data quality by flagging duplicate records, incomplete fields (missing email, missing organization), and inconsistent date formats. We pair this with a Salesforce edition check: Professional ($80/user) covers most migrations without custom objects; Enterprise ($165/user) is needed if the customer requires record-triggered Flow, advanced reporting types, or territory management. The discovery output is a written migration scope with object counts, a proposed mapping document, and a Salesforce edition recommendation.
Schema design and Account extraction planning
We design the destination Salesforce schema. This includes creating custom fields on Lead, Contact, and Opportunity (with __c suffix), configuring Opportunity Stages to match Oncourse CRM pipeline stage names, and designing the Account extraction rule that determines how Oncourse CRM Contact organization properties become Salesforce Account records. We resolve any field naming conflicts with existing Salesforce fields in the destination org. Schema is deployed to a Salesforce Sandbox first for validation against the customer's existing org configuration.
Sandbox migration and reconciliation
We run a full migration into a Salesforce Sandbox using production-like data volume. The customer's RevOps lead reviews record counts per object, spot-checks 25-50 records against the Oncourse CRM source, and confirms that the Account-Contact linkage is correct and that deal values and stage assignments match. Any mapping corrections are documented and applied before production migration begins. No production records move until this step is signed off.
Owner resolution and User provisioning
We extract every distinct owner reference across Leads, Contacts, Deals, and Tasks and match by email against the destination Salesforce User table. Any owner without a matching Salesforce User is placed in a reconciliation queue. The customer's Salesforce admin provisions missing Users and confirms active/inactive status for each. Migration cannot proceed past owner-dependent objects because OwnerId is required on standard Salesforce records.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (extracted from Oncourse Contact organization values), Leads (direct 1:1), Contacts (with AccountId resolved from Account phase), Opportunities (with StageName, OwnerId, and Amount resolved), Tasks (with WhatId pointing to migrated Opportunity), Notes (linked via ContentDocumentLink to the parent record). Each phase emits a row-count reconciliation report before the next phase begins. We use the Salesforce Bulk API 2.0 for note batches exceeding 10,000 records with exponential backoff on rate limit responses.
Cutover, validation, and automation rebuild handoff
We freeze Oncourse CRM writes during cutover, run a final delta migration of records modified during the migration window, then enable Salesforce as the system of record. We deliver the drip sequence inventory document to the customer's admin team for rebuild in their chosen Sales Engagement tool. We provide a one-week hypercare window for reconciliation issues raised by the sales team. Workflow and sequence rebuilds are outside the migration scope and are handled as a separate engagement or an internal admin task.
Platform deep dives
Oncourse CRM
Source
Strengths
Weaknesses
Salesforce Sales Cloud
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Salesforce Sales Cloud.
Object compatibility
2 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 Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Oncourse CRM to Salesforce Sales Cloud 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 Salesforce Sales Cloud
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.