CRM migration
Field-level mapping, validation, and rollback between Oracle CRM On Demand and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Oracle CRM On Demand
Source
Freshsales
Destination
Compatibility
10 of 11
objects map 1:1 between Oracle CRM On Demand and Freshsales.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Oracle CRM On Demand is in active sunset mode, with Oracle steering customers toward Sales Cloud and providing diminishing development investment. Freshsales (Freshworks CRM) offers a modern browser interface, transparent per-seat pricing starting at $15 per user per month, and a REST API with 400 requests per minute on paid tiers—substantially faster than Oracle's 30-req-per-minute ceiling. We handle the migration in dependency order: Accounts first, then Contacts with Account lookups resolved, then Leads (accounting for Oracle's Enterprise Lead Referral create-only restriction), then Deals, then Activity history, then Custom Objects. The Oracle Migration Tool is not viable for this pair because it requires identical release versions between tenants; we use the Oracle REST API with batch sequencing instead. Workflow Rules, custom page layouts, and assignment rules do not migrate as code; we deliver a written inventory for the customer's admin to rebuild in Freshsales Workflows and assignment rules.
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 Oracle CRM On Demand object lands in Freshsales, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Oracle CRM On Demand
Account
Freshsales
Account
1:1Oracle Accounts map directly to Freshsales Accounts with company name, address fields, phone, industry, and ownership preserved. We resolve the Oracle Account ownership (Assigned To field) against the Freshsales User mapping table during import. Oracle Account type (Customer, Prospect, Partner, Competitor) maps to Freshsales Account type with a custom field oracle_original_type__c preserving the source value for reporting continuity.
Oracle CRM On Demand
Contact
Freshsales
Contact
1:1Oracle Contacts migrate to Freshsales Contacts with standard fields (name, email, phone, title, address) plus any mapped custom fields. We preserve the contact-to-account linking using Freshsales Account lookup. Email serves as the dedupe key; contacts sharing an email address across Oracle records merge to a single Freshsales contact with all associated opportunities and activities preserved.
Oracle CRM On Demand
Lead (Standard CRM On Demand)
Freshsales
Lead
1:1Oracle Leads from the Standard CRM On Demand tier migrate to Freshsales Leads with Lead_Status, Lead_Source, and custom lead fields mapped. We preserve Oracle's lead rating and score fields in Freshsales custom fields. Lead conversion in Freshsales creates both a Contact and an Account; we run conversion post-import under the customer's conversion rules rather than pre-splitting during migration.
Oracle CRM On Demand
Lead (Enterprise Lead Referral tier)
Freshsales
Lead (with conversion mapping)
lossyOracle Enterprise Lead Referral restricts API access to create-only; edit, convert, and analytics are disabled. We flag this during discovery and scope only the creation-date lead records accessible via the API. Any lead history beyond creation events (status changes, conversion events, score updates) is unavailable under this tier's restrictions and we document it as a data gap in the migration deliverable. The customer's admin sets Freshsales lead conversion mapping manually post-import.
Oracle CRM On Demand
Opportunity
Freshsales
Deal
1:1Oracle Opportunities map to Freshsales Deals. The Oracle opportunity stage (Prospecting, Qualification, Proposal, Negotiation, Closed Won, Closed Lost) maps to Freshsales Deal stage values that we configure before import. Revenue amount, probability, close date, and opportunity type migrate directly. We preserve opportunity-to-account and opportunity-to-contact associations using the Freshsales Account and Contact lookups resolved at migration time.
Oracle CRM On Demand
Activity: Task
Freshsales
Task
1:1Oracle Tasks migrate to Freshsales Tasks with Subject, Status, Priority, Due Date, and Description preserved. Owner assignment migrates by resolving Oracle Assigned To against the User mapping table. Tasks linked to specific Oracle records (Account, Contact, Opportunity) map to Freshsales Tasks with the corresponding lookup resolved.
Oracle CRM On Demand
Activity: Call
Freshsales
Call
1:1Oracle Call activities migrate to Freshsales Call records with disposition, duration, and outcome preserved in custom fields. Call title and notes migrate to the Freshsales Call Subject and Description. We preserve the call-to-record linking (Account, Contact, or Deal) via Freshsales lookup resolution at migration time.
Oracle CRM On Demand
Activity: Appointment
Freshsales
Meeting
1:1Oracle Appointments migrate to Freshsales Meetings with Title, Start Time, End Time, Location, and Description preserved. Attendee linking migrates as Contact or Account lookup relationships in Freshsales. We set the Activity Date to the original Oracle timestamp to preserve timeline ordering.
Oracle CRM On Demand
Custom Object 01-05
Freshsales
Custom Module (via Module Builder)
1:1Oracle Custom Objects are reverse-engineered from the source API schema before migration. We pre-create equivalent Freshsales custom modules using the Module Builder (or API for programmatic provisioning), including all custom fields with type-mapped Freshsales field types (text, number, date, picklist, lookup). Custom object relationships to Accounts, Contacts, and Deals are rebuilt as Freshsales lookup fields on the custom module. Oracle Custom Object 01 through 05 each map to a separate Freshsales module, preserving the original numbering for audit continuity.
Oracle CRM On Demand
User (Owner)
Freshsales
User
1:1Oracle Named Users referenced on Account, Contact, Opportunity, and Activity records map to Freshsales Users by email address. We build a User mapping table during discovery that pairs Oracle user email with Freshsales User ID. Any Oracle user without a matching Freshsales User is held in a reconciliation queue for the customer's admin to provision before record import resumes.
Oracle CRM On Demand
Attachment
Freshsales
Attachment (Document)
1:1Oracle record attachments migrate to Freshsales Documents linked via the native attachment relationship to the corresponding Account, Contact, or Deal. File names, sizes, and MIME types are preserved. Large attachment sets (over 10,000 files) require separate scoping for download sequencing and Freshsales storage accounting.
| Oracle CRM On Demand | Freshsales | Compatibility | |
|---|---|---|---|
| Account | Account1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Lead (Standard CRM On Demand) | Lead1:1 | Fully supported | |
| Lead (Enterprise Lead Referral tier) | Lead (with conversion mapping)lossy | Fully supported | |
| Opportunity | Deal1:1 | Fully supported | |
| Activity: Task | Task1:1 | Fully supported | |
| Activity: Call | Call1:1 | Fully supported | |
| Activity: Appointment | Meeting1:1 | Fully supported | |
| Custom Object 01-05 | Custom Module (via Module Builder)1:1 | Fully supported | |
| User (Owner) | User1:1 | Fully supported | |
| Attachment | Attachment (Document)1: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.
Oracle CRM On Demand gotchas
REST API rate limit of 30 req/min is a migration bottleneck
List exports expire after 168 hours
Migration Tool requires identical release versions
Enterprise Lead Referral tier limits lead functionality
Export field access gated by user role privileges
Freshsales gotchas
Freddy AI is Pro-tier only despite heavy marketing
Post-migration emails and sequences are disabled
Bot session credits are a one-time 500-session allocation
Phone credits charged per minute with no cap
File storage limits scale with plan tier
Pair-specific challenges
Migration approach
Discovery and environment audit
We audit the Oracle CRM On Demand tenant across tier (Enterprise Lead Referral vs Standard), active release version, custom object count and schema, workflow rule count, user list, and record volumes per object. We simultaneously audit the Freshsales destination account: plan tier (Sprout/Blossom/Garden/Estate/Forest), existing modules and fields, active workflows, and user provisioning status. The discovery output is a written migration scope document with record counts, custom field inventory, and a recommendation to upgrade the Freshsales tier if the current plan constrains API access.
Schema translation and Freshsales module provisioning
We reverse-engineer Oracle custom object definitions (field names, types, picklist values, required flags) from the source API before mapping. We pre-create Freshsales custom modules using the Module Builder (or API) with type-mapped fields, preserving Oracle field labels as Freshsales field names for audit continuity. Lookup relationships to Accounts, Contacts, and Deals are configured as Freshsales lookup fields. Deal stage values are set to match the Oracle opportunity stages, with probability percentages rounded to Freshsales-allowed integers. This schema is validated in a Freshsales test environment before production migration begins.
Export under Oracle admin credentials and rate-limit sequencing
We export Oracle data using an administrator account with 'List - Export all Fields' privilege to bypass role-based field restrictions. Exports run in dependency order: Accounts first, then Contacts with Account lookups resolved, then Leads, then Deals with Account and Contact lookups resolved, then Activities, then Custom Objects last. Each object export is chunked into batches respecting the 30-req-per-minute Oracle limit with exponential backoff on throttled responses. List export files are downloaded immediately upon job completion and stored in our migration workspace; we never rely on Oracle's 168-hour file retention window.
Owner reconciliation and Freshsales User provisioning
We extract every distinct Oracle user referenced on Account, Contact, Deal, and Activity records and match by email against the Freshsales destination User table. Users without a matching Freshsales account go to a reconciliation queue for the customer's admin to provision. Active Oracle users get active Freshsales Users; inactive Oracle users get inactive Freshsales Users to preserve historical assignment. Migration cannot proceed past Contact and Deal import because Owner lookups are required for most records.
Production migration in dependency order
We run production migration in record-dependency order: Accounts first, Contacts with AccountId resolved, Leads (with Enterprise Lead Referral conversion mapping noted), Deals with AccountId, ContactId, and OwnerId resolved, then Activities (Tasks, Calls, Meetings via Freshsales API with 400-req-per-minute capacity), then Custom Objects with all lookup relationships resolved. Each phase emits a row-count reconciliation report comparing Oracle source counts against Freshsales destination counts before the next phase begins. We run at Freshsales's 400-req-per-minute ceiling to maximize import speed once Oracle data is staged.
Cutover, validation, and workflow inventory handoff
We freeze Oracle writes during cutover, run a final delta migration of records modified during the migration window, then enable Freshsales as the system of record. We deliver a written inventory of Oracle Workflow Rules and Assignment Rules with each rule's trigger, conditions, and actions documented, along with recommended Freshsales Workflow equivalents. The customer's admin or a Freshworks partner rebuilds these post-migration. We support a one-week hypercare window for reconciliation issues. We do not rebuild Oracle workflows as Freshsales workflows inside the migration scope; that is a separate engagement.
Platform deep dives
Oracle CRM On Demand
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 4 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Oracle CRM On Demand and Freshsales.
Object compatibility
4 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
Oracle CRM On Demand: 30 requests per minute per user session, counter resets at the end of each 1-minute period (not rolling).
Data volume sensitivity
Oracle CRM On Demand 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 Oracle CRM On Demand to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Oracle CRM On Demand to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Oracle CRM On Demand
Other ways to arrive at Freshsales
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.