---
title: Moving years of service history from Salesforce into Odoo | Orbital Objectives
description: "Migration tooling for cases, email and files, then the clean-up that makes migrated data usable: original dates and machine ownership."
image: https://orbitalobjectives.com/hubfs/oo-social-share.png
---

[Skip to content](https://orbitalobjectives.com/work/salesforce-to-odoo-migration#main)

[rbital bjectives](https://orbitalobjectives.com/?hsLang=en)

- [Services](https://orbitalobjectives.com/services?hsLang=en)
- [Our Work](https://orbitalobjectives.com/work?hsLang=en)
- [About](https://orbitalobjectives.com/about?hsLang=en)
- [Insights](https://orbitalobjectives.com/insights?hsLang=en)

[Discuss Your Project](https://orbitalobjectives.com/contact?hsLang=en)

1. [Our Work](https://orbitalobjectives.com/work?hsLang=en)
2. Manufacturing

# Moving years of service history from Salesforce into Odoo

Migration tooling for cases, email and files, then the clean-up that makes migrated data usable: original dates and machine ownership.

## The problem

The company was leaving Salesforce for Odoo. Its Service Cloud history, engineering documents and the record of which customer owned which installed machine all had to arrive intact.

A straight import loses things quietly: every record takes the import date as its creation date, and relationships that lived in Salesforce have nowhere to land.

## The approach

I wrote export and upload tools against the Salesforce and Odoo APIs, with logs for every run. For anything that wrote to production I worked dry-run first, kept a backup, and built the restore before the write.

## What I built

- Export scripts for cases, email messages, comments and files, with a verification pass against Odoo
- A file uploader that attaches Salesforce files to the matching Odoo products, engineering changes and opportunities
- Generated SQL that restores original creation and close dates, matched through import IDs
- A tiered matching process to backfill the end customer on serialized machines: by site ID, then name and address, with weak matches sent to human review

## Outcome

- More than 127,000 cases and 460,000 emails moved into Odoo in a single run.
- Original dates restored on about 25,000 records.

#### Industry

Manufacturing

#### Platform

Salesforce + Odoo

#### Technology

- Salesforce API
- Odoo external API
- Python
- SQL
- Data reconciliation

#### Related services

- [Salesforce Integrations & Data Migration](https://orbitalobjectives.com/services#salesforce-integrations-data-migration)
- [Odoo ERP Consulting & Integrations](https://orbitalobjectives.com/services#odoo-erp-consulting-integrations)

[Discuss Your Project](https://orbitalobjectives.com/contact?hsLang=en)

### [Odoo Manufacturing Replacing a hosted LMS with a training academy inside Odoo A full migration from a hosted learning platform to Odoo eLearning, with custom modules to play SCORM courses and control who can see them. →](https://orbitalobjectives.com/work/lms-migration-odoo?hsLang=en)

Next step

## Tell me what is stuck.

A first conversation is 30 minutes with the person who would do the work. You will leave knowing whether I am the right fit and roughly what it would take.

[Discuss Your Project →](https://orbitalobjectives.com/contact?hsLang=en) [Explore Our Work](https://orbitalobjectives.com/work?hsLang=en)

[rbital bjectives](https://orbitalobjectives.com/?hsLang=en)

Everything orbits your objective

Independent Salesforce, HubSpot and Odoo consulting. Massachusetts.

#### Services

- [Consulting & Development](https://orbitalobjectives.com/services#salesforce-consulting-development)
- [CPQ & Revenue Operations](https://orbitalobjectives.com/services#salesforce-cpq-revenue-operations)
- [Service Cloud & Automation](https://orbitalobjectives.com/services#service-cloud-automation)
- [Experience Cloud & Partner Portals](https://orbitalobjectives.com/services#experience-cloud-partner-portals)
- [Integrations & Data Migration](https://orbitalobjectives.com/services#salesforce-integrations-data-migration)
- [All services](https://orbitalobjectives.com/services?hsLang=en)

#### Practice

- [Our Work](https://orbitalobjectives.com/work?hsLang=en)
- [About](https://orbitalobjectives.com/about?hsLang=en)
- [Insights](https://orbitalobjectives.com/insights?hsLang=en)
- [Contact](https://orbitalobjectives.com/contact?hsLang=en)

#### Contact

- [info@orbitalobjectives.com](mailto:info@orbitalobjectives.com)
- [Discuss Your Project](https://orbitalobjectives.com/contact?hsLang=en)

© 2026 Orbital Objectives LLCSalesforce and Odoo are trademarks of their respective owners.

```json
{
  "@context" : "https://schema.org",
  "@type" : "Article",
  "about" : [ "Salesforce API", "Odoo external API", "Python", "SQL", "Data reconciliation" ],
  "articleSection" : "Case study",
  "author" : {
    "@id" : "https://orbitalobjectives.com/#organization"
  },
  "description" : "Migration tooling for cases, email and files, then the clean-up that makes migrated data usable: original dates and machine ownership.",
  "headline" : "Moving years of service history from Salesforce into Odoo",
  "publisher" : {
    "@id" : "https://orbitalobjectives.com/#organization"
  },
  "url" : "https://orbitalobjectives.com/work/salesforce-to-odoo-migration"
}
```

```json
{
  "@context" : "https://schema.org",
  "@type" : "BreadcrumbList",
  "itemListElement" : [ {
    "@type" : "ListItem",
    "item" : "https://orbitalobjectives.com/",
    "name" : "Home",
    "position" : 1
  }, {
    "@type" : "ListItem",
    "item" : "https://orbitalobjectives.com/work",
    "name" : "Our Work",
    "position" : 2
  }, {
    "@type" : "ListItem",
    "item" : "https://orbitalobjectives.com/work/salesforce-to-odoo-migration",
    "name" : "Moving years of service history from Salesforce into Odoo",
    "position" : 3
  } ]
}
```