CRM migration
Field-level mapping, validation, and rollback between Star CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Star CRM
Source
Odoo CRM
Destination
Compatibility
7 of 12
objects map 1:1 between Star CRM and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Star CRM and Odoo CRM have structurally different data models that require explicit mapping before migration. Star CRM uses a flat Contact object that combines what Odoo separates: res.partner for both contacts and companies, plus crm.lead for unqualified prospects and crm.opportunity for qualified deals. We resolve the contact-company relationship during scoping, pre-configure Odoo's pipeline stages as crm.stage records before data lands, and map Star CRM's Deals to Odoo's crm.lead and crm.opportunity split based on deal maturity indicators. Star CRM's lack of a public API spec means we perform live schema discovery against the source instance during scoping rather than relying on documentation that does not exist. We do not migrate workflows, automations, or sequences; we deliver a written inventory for the customer's admin to rebuild in Odoo's automation framework.
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 Star CRM object lands in Odoo CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Star CRM
Contact
Odoo CRM
res.partner
1:1Star CRM Contacts map to Odoo res.partner records. Individual contacts are res.partner records with partner_type='contact'; company records are res.partner with partner_type='company'. We use the Star CRM contact email as the dedupe key during import. Name, email, phone, and address fields migrate directly. Custom contact properties discovered during live API scoping map to Odoo custom fields, which we pre-create as ir.model.fields before the import phase begins.
Star CRM
Company
Odoo CRM
res.partner (organization)
1:1Star CRM Company records map to res.partner with partner_type='company'. Company name becomes the partner's name field, and address fields migrate as address fields on the partner. Individual Contacts from Star CRM that are linked to a Company are imported as child res.partner records with parent_id pointing to the company partner, preserving the Star CRM contact-company relationship. We resolve parent_id by matching on the company name or company ID during the import phase.
Star CRM
Deal
Odoo CRM
crm.lead and crm.opportunity (split based on stage)
1:manyStar CRM Deals do not have an explicit Lead vs Opportunity distinction. We split at migration time using stage indicators: Deals in early stages (New, Qualified, or equivalent) map to Odoo crm.lead; Deals in later stages (Proposal Sent, Negotiation, Closed Won/Lost) map to crm.opportunity. We preserve the original Star CRM deal value in crm.lead and crm.opportunity expected_revenue. The split rule is documented during scoping and approved by the customer's admin before migration.
Star CRM
Deal Stage
Odoo CRM
crm.stage
lossyStar CRM pipeline stages map to Odoo crm.stage records in a named stage sequence. We create each Odoo stage record before migration, preserving the stage name, sequence order, and probability percentage from Star CRM. Stage-specific actions from Star CRM (stage-change automations) are documented in the automation inventory and do not migrate as code.
Star CRM
Pipeline
Odoo CRM
crm.team
lossyStar CRM Deal pipelines map to Odoo crm.team (sales team) records. We create a crm.team per Star CRM pipeline during the Odoo configuration phase, and assign the migrated crm.lead and crm.opportunity records to the appropriate team based on the Star CRM pipeline assignment. Team member assignments map from Star CRM Owner records.
Star CRM
Activity (calls, emails, meetings, notes)
Odoo CRM
mail.message
1:1Star CRM Activities (calls, emails, meetings, notes) migrate to Odoo mail.message records linked via model and res_id to the parent res.partner, crm.lead, or crm.opportunity. Activity type maps to Odoo's mail.message.message_type field (email, comment, notification). Date and time preserve from Star CRM. Call duration and disposition migrate to custom mail.message fields if present in the source. Email body content migrates as mail.message.body (HTML).
Star CRM
Lead (if distinguished from Contact in Star CRM)
Odoo CRM
crm.lead
1:1Where Star CRM distinguishes a separate Lead object from Contact, those records migrate to Odoo crm.lead as unqualified prospects. Lead source and any lead-specific custom properties migrate to crm.lead custom fields. Leads that have been converted to Contacts in Star CRM are handled as part of the Deal migration flow and do not duplicate as crm.lead records.
Star CRM
Owner (User)
Odoo CRM
res.users
1:1Star CRM Owners map to Odoo res.users by email match. We extract every distinct owner referenced on Contact, Company, Deal, and Activity records and match by email against the destination Odoo instance's res.users table. Any Star CRM owner without a matching Odoo user is placed in a reconciliation queue for the customer's admin to provision before record import resumes. Inactive Star CRM owners migrate as inactive Odoo users if flagged for inclusion.
Star CRM
Tag
Odoo CRM
crm.tag
lossyStar CRM Tags on Contacts or Deals migrate to Odoo crm.tag records. Tags on Contacts link to crm.lead and crm.opportunity via crm.tag.rel. Multi-select tags migrate as separate tag assignments per record. We create the crm.tag records before import and re-associate them during the data load phase.
Star CRM
Custom Properties (on any object)
Odoo CRM
Custom ir.model.field (pre-configured)
lossyStar CRM custom properties on Contacts, Companies, Deals, or Activities require pre-configuration in Odoo before migration. We perform live API discovery against Star CRM during scoping to enumerate all custom property names, data types, and values. We then create corresponding ir.model.field records in Odoo (as ir.model.fields) before the data import phase begins. Migration cannot load data into non-existent custom fields in Odoo, so this pre-configuration step is a prerequisite for any migration involving custom properties.
Star CRM
Attachment
Odoo CRM
ir.attachment
1:1Star CRM exports attachments as individual files per record without a structured archive. We download all attachment files, build a manifest linking each file to its parent record ID, and re-upload them to Odoo as ir.attachment records linked via res_model and res_id to the correct res.partner, crm.lead, or crm.opportunity. This step adds time to projects with heavy attachment volume and requires the parent records to exist in Odoo before attachments can be associated.
Star CRM
Engagement history (full timeline)
Odoo CRM
mail.message chain
1:1Star CRM engagement history (combined calls, emails, meetings, and notes on a per-record basis) migrates as a chronological mail.message chain in Odoo. We preserve the original timestamp on each message, maintain the parent-child message threading where available in Star CRM, and link each message to the correct res.partner or crm.lead/opportunity by resolving res_id at migration time. Engagement history that spans multiple years may be scoped to a 24-month window during scoping to reduce migration volume.
| Star CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner (organization)1:1 | Fully supported | |
| Deal | crm.lead and crm.opportunity (split based on stage)1:many | Fully supported | |
| Deal Stage | crm.stagelossy | Fully supported | |
| Pipeline | crm.teamlossy | Fully supported | |
| Activity (calls, emails, meetings, notes) | mail.message1:1 | Fully supported | |
| Lead (if distinguished from Contact in Star CRM) | crm.lead1:1 | Fully supported | |
| Owner (User) | res.users1:1 | Fully supported | |
| Tag | crm.taglossy | Fully supported | |
| Custom Properties (on any object) | Custom ir.model.field (pre-configured)lossy | Fully supported | |
| Attachment | ir.attachment1:1 | Fully supported | |
| Engagement history (full timeline) | mail.message chain1: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.
Star CRM gotchas
Sparse public documentation and no published API spec
No bulk export endpoint confirmed
Attachment export produces individual files per record
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Live API schema discovery
We connect to the Star CRM instance via its observed API endpoint and export a sample record set across all object types (Contacts, Companies, Deals, Activities, Leads). We infer field names, data types, relationship fields, and custom property definitions from the actual API responses rather than from documentation that does not exist. The discovery output is a written schema map with field-level data type annotations that serves as the foundation for Odoo field pre-configuration. This step is a prerequisite before any Odoo custom field can be created.
Odoo schema pre-configuration
We configure the destination Odoo instance before any data is loaded. This includes creating all necessary crm.stage records in the correct sequence, creating crm.team records per Star CRM pipeline, creating crm.tag records from Star CRM tag names, and pre-creating all Odoo custom fields (ir.model.field) to match the Star CRM custom properties discovered during schema discovery. Custom fields are deployed to the Odoo instance in a staging environment first for validation. Migration cannot proceed past this step until the Odoo schema is complete.
Data extraction and deduplication
We extract all Contact, Company, Deal, Activity, and Attachment records from Star CRM using the observed API with automated pagination. During extraction, we run deduplication passes: matching on email for Contacts and on company name or domain for Companies. The deduplication rules are documented and approved by the customer before export. Attachments are downloaded to a managed file store with a manifest linking each file to its parent record ID. Inactive records, records beyond the agreed migration window, and records flagged for archival are excluded per the scoping agreement.
Data transformation and object splitting
We transform the extracted records to Odoo's data model. Contacts and Companies become res.partner records with the appropriate partner_type and parent_id hierarchy. Deals split into crm.lead and crm.opportunity based on the stage-split rule agreed during scoping. Activities map to mail.message records linked to the parent record. Owners resolve by email match against Odoo res.users. Custom property values transform to the pre-created Odoo custom fields. The transformation output is a set of CSV or JSON files per Odoo object, ready for the Odoo data import wizard or XML-RPC API.
Staging import and reconciliation
We run a full migration into the Odoo staging environment using production-equivalent data volume. The customer reconciles record counts (partners, leads, opportunities, messages), spot-checks 20-40 records against the Star CRM source, and approves the mapping before production migration begins. Attachment re-association is validated in staging by confirming that at least 90% of ir.attachment records link to a valid res_model and res_id. Mapping corrections happen in staging, not in production.
Production migration and cutover
We freeze Star CRM writes during the cutover window, run a final delta migration to capture any records modified since staging, then complete the production import in dependency order: res.partner (companies first), res.partner (contacts with parent_id resolved), crm.team, crm.stage, crm.tag, crm.lead, crm.opportunity, mail.message, ir.attachment. Each phase emits a row-count reconciliation report. We deliver the automation inventory document listing all Star CRM workflow-equivalent rules for the customer's admin to rebuild in Odoo's automation framework.
Post-migration validation and handoff
We perform post-migration validation including record count matching, spot-checks on 25-50 records for field-level accuracy, and confirmation that parent-child relationships (contact to company, opportunity to contact, message to partner) are intact. We support a five-business-day hypercare window for reconciliation issues raised by the customer's team. Workflow, automation, and sequence rebuilds are outside the standard migration scope; we deliver a written inventory and recommend an Odoo partner or internal admin for that work.
Platform deep dives
Star CRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 Star CRM and Odoo CRM.
Object compatibility
3 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
Star CRM: Not applicable.
Data volume sensitivity
Star 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 Star CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Star CRM to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Star CRM
Other ways to arrive at Odoo CRM
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.