ferrify
Menu

Salesforce to Odoo migration: what moves where

Where each Salesforce object lands in Odoo, what your admin built that does not move, and the order that keeps sales running until the switch day.

Updated

Companies leave Salesforce for Odoo for one of two reasons: the licence bill, or the wish to run CRM, quotes, invoices, purchasing and stock in one system. Either way, the core records move without much drama. The work sits in what your Salesforce admin built around those records: custom fields, record types, Flows and reports. This guide shows where each object lands in Odoo, what stays behind, the order we work in and how to check the result.

It is written for the ops or finance lead who owns the project and has to sign off on switch day.

What moves where

This is the mapping Ferrify uses for Salesforce. Every Odoo record stores the ID of the Salesforce record it came from.

In Salesforce In Odoo
Accounts Contacts, as companies
Contacts Contacts, linked to their company
Opportunities CRM opportunities
Leads CRM leads
Products Sales products
Notes Notes in the record's Chatter
Tasks Activities; done tasks as Chatter entries
Events Calendar events
Owners Odoo users

Four rows need a closer look.

Accounts and contacts share one list. Odoo keeps companies and people in the same Contacts app. A company is a contact marked as a company, and each person links to it. Salesforce users are used to two separate tabs, so show the team this early. If the same account exists twice in Salesforce, both copies land in Odoo. Merge them in Salesforce first, or agree a merge rule with us before the first load.

Leads are optional in Odoo. Odoo's CRM documentation describes leads as "a qualifying step before an opportunity is created" and makes the Leads menu a setting you switch on in CRM configuration (Odoo 18 docs, Convert leads into opportunities). If your Salesforce team converts leads, we switch it on and load them as leads. If they work only with opportunities, we leave it off and the menu stays clean.

Opportunities keep their stage. We rebuild your Salesforce sales process as an Odoo CRM pipeline before any opportunity loads. Each opportunity keeps its amount, owner, close date, account and stage. Stages without a direct match get mapped on the call. If you run several sales teams, Odoo gives each team its own assignment rules and invoicing targets, per the Odoo sales teams documentation. The Odoo CRM module page lists what we set up around the pipeline.

Tasks split in two. An open Salesforce task becomes an Odoo activity: a follow-up assigned to a person with a due date. A completed task becomes a log entry in the record's Chatter. Odoo's activities documentation describes the same pattern for its own activities: marking one done adds its details to the Chatter. The history stays, in a different place.

Products load into Sales, so they are ready if you also want quotes and invoices in Odoo through the Sales and Accounting modules.

What does not move

Know this list before you commit to a switch date. These items stay in Salesforce or need separate work.

  • Flows, process automation and Apex. Nothing your admin automated translates to Odoo. We list the automations your team relies on and rebuild them as Odoo automations or activity rules.
  • Custom fields without a decision. Odoo has no place for a field it does not know. Each Salesforce custom field you keep needs a custom field in Odoo. Odoo lists Studio, its tool for adding fields without code, under the Custom plan on odoo.com/pricing, as of October 2026. The same page says that installing Studio switches a database to the Custom plan.
  • Record types and page layouts. Odoo does not have record types. If your team uses them to separate, say, new business from renewals, we agree an Odoo equivalent on the call: a separate pipeline, a sales team or a tag.
  • Calls. Logged calls and their recordings do not move.
  • Reports and dashboards. They do not move. We rebuild the few your team opens every week.
  • Everything outside the mapping table. Cases, campaigns, quotes and contracts are not on our mapping list. Tell us on the call if you use them, and we say whether Odoo has an equivalent and what it adds to the scope.

The rule of thumb: records move, behaviour does not. Anything Salesforce does for your team automatically, you describe, and we rebuild.

Decide before the first load

Four decisions remove most of the rework. Make them in the first week.

  1. Which custom fields to keep. Export the field list for accounts, contacts and opportunities. For each field, ask one question: does anyone filter, report or decide on it? Keep those. Drop the rest. A Salesforce org that has run for years often carries fields nobody fills in.
  2. Which records to leave behind. Accounts with no activity in years and closed opportunities nobody opens can stay in a Salesforce export. A smaller load is faster to check.
  3. Who gets an Odoo user. Every Salesforce owner needs an Odoo user, or their records land without one. Each Odoo user is also a licence, so this is a cost decision. The cost guide shows how licences add up.
  4. Where Odoo runs. Custom fields through Studio need the Custom plan. Custom code needs Odoo.sh. The hosting guide compares Odoo Online and Odoo.sh.

Order of operations

We run every Salesforce migration in this order. Later records point to earlier ones, so the order is not optional.

  1. Call. You show us how the team sells and which Salesforce objects you use. We draft the module list and send a fixed price.
  2. Access. You give us read access to Salesforce. We only read. Nothing in Salesforce changes or disappears.
  3. Structure. We create the pipeline, stages, sales teams, activity types, custom fields and users in Odoo.
  4. Accounts, then contacts. Contacts need companies to link to.
  5. Products. Opportunities and quotes reference them.
  6. Leads and opportunities. They link to companies, contacts, owners and stages that exist by now.
  7. Notes, tasks and events. They attach to the records they belong to, so they load last.
  8. Review. Your team checks a sample against the checklist below. We fix what they find.
  9. Training and runbook. We train the team and write the runbook: a short guide to how your team works in Odoo.
  10. Switch day. The team moves to Odoo. We load what changed in Salesforce since the first load.

Because each record stores its Salesforce ID, we can repeat steps 4 to 7 as often as needed. A repeat run updates existing records and adds only new ones.

Validation checklist

Run these checks in Odoo before switch day. Use records your team knows well, so a wrong value stands out.

  • Counts. Companies, contacts, open opportunities and leads in Odoo match the Salesforce counts, minus the records you chose to leave behind. Write both numbers down.
  • Ten opportunities, field by field. Open each next to its Salesforce original. Check stage, amount, owner, close date, account and contact.
  • Pipeline total per stage. The value of open opportunities in each Odoo stage equals the Salesforce total for the matching stage.
  • Five accounts with long histories. Notes, completed tasks and events appear in Chatter in date order.
  • Open activities. Each salesperson sees their own follow-ups with correct due dates.
  • Custom fields. The values you kept show on the right records and filter correctly.
  • Duplicates. Search for your ten largest customers by name. Each appears once.
  • Owners. No record lacks an owner unless it lacked one in Salesforce.
  • Phone numbers and emails. Check twenty for formatting.
  • Logins. Every user opens Odoo and sees their own pipeline.

When a check fails, the cause is usually a mapping rule, not the data. Fix the rule and run the load again. Do not edit records by hand in Odoo before switch day, because the next run overwrites them.

Timeline

A Ferrify project takes 2 to 12 weeks. Where a Salesforce migration lands in that range depends on four things:

  • the number of custom fields and record types that need a decision;
  • the number of Flows and other automations to rebuild;
  • how many modules join CRM in the same project, such as Sales, Accounting or Inventory;
  • how fast answers come from your side. We ask for answers within 2 working days.

What shortens it: one person who can decide, a cleaned-up Salesforce, and a module list limited to what the team will use in the first month. The HubSpot migration guide follows the same order, if you are comparing notes with a team that moved from HubSpot.

What it costs

Ferrify projects start at $3,000. Each extra module adds to the price, and we fix the price on the call. Odoo licences come on top and go directly to Odoo. The implementation cost guide breaks down both bills.

For the service itself, see Ferrify's migration page and implementation page. If you already moved to Odoo and the team works around it, the tune-up is for you. And if your company fits the profile, the pilot offers a free implementation to two companies.

Questions and answers

Can our team keep working in Salesforce during the migration?

Yes. The migration only reads from Salesforce. The team works there until the switch day, and the records that changed since the first load move on that day.

Do Salesforce Flows and Apex code move to Odoo?

No. Automation does not translate between the two systems. We list the automations your team depends on and rebuild them as Odoo automations or activity rules.

Where do Salesforce accounts go in Odoo?

Into Contacts, as companies. The people who belonged to the account become contacts linked to that company.

Do we need the Leads menu in Odoo?

Only if you qualify leads before they become opportunities. Odoo's documentation describes Leads as an optional setting in CRM. If your Salesforce team works only with opportunities, you can leave it off.

Will a second migration run create duplicates?

No. Each Odoo record stores the ID of its Salesforce source, so a repeated run updates the record instead of adding a copy.

How long does a Salesforce to Odoo migration take?

Ferrify projects take 2 to 12 weeks. The main factors are how many automations and custom fields need decisions, how many modules you add and how fast your team answers questions.

Related guides

Tell us what you run today

30 minutes. You get a module list and a price for your project.

Book a call