CRM migration
Field-level mapping, validation, and rollback between Tall Emu CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Tall Emu CRM
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Tall Emu CRM and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Tall Emu CRM to Odoo CRM is a migration between two all-in-one platforms with overlapping capabilities but different data architectures. Tall Emu structures around Companies, Contacts, Products, Pipelines, Subscriptions, and Sales documents with a strong inventory and manufacturing layer; Odoo models the same concepts across its CRM, Inventory, Manufacturing, and Invoicing apps, each of which must be enabled during Odoo setup to receive the migrated data. Tall Emu has no publicly documented bulk REST API, so we use Excel export from grid views as our primary extraction mechanism, transforming and chunking the data for JSON-RPC import into Odoo. Subscription Status values, freight tracking records, and custom pipeline stage probabilities require explicit mapping rules before import. Workflows, automations, and invoice templates do not migrate; we deliver a written inventory of active Tall Emu automations and recommended Odoo Studio equivalents for the customer's admin to rebuild.
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 Tall Emu 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.
Tall Emu CRM
Company
Odoo CRM
res.partner (company type)
1:1Tall Emu Company records map to Odoo res.partner records with partner_type set to company. Company name, street address, city, state, postcode, country, phone, and website transfer directly. Odoo requires a partner to exist before any Contact can reference it via parent_id, so we import Companies first in every migration run. Email and domain fields are preserved for deduplication. If the destination Odoo instance has contacts from other integrations, we run a domain-based dedupe pass before inserting.
Tall Emu CRM
Contact
Odoo CRM
res.partner (individual type)
1:1Tall Emu Contact records map to Odoo res.partner with partner_type set to individual and parent_id pointing to the mapped Company partner. First name, last name, email, phone, mobile, role, and address fields transfer directly. We resolve parent_id by matching the Tall Emu Company name against the destination partner name field. If multiple companies share the same name in Odoo, we use the most recently created or the one with matching city and country as additional disambiguation criteria.
Tall Emu CRM
Product
Odoo CRM
product.product or product.template
1:1Tall Emu Products map to Odoo product.template records with product variants managed via Odoo's attribute and value system. SKU, product name, description, sales price, cost price, and stock on hand transfer. Serial number tracking, landed costs, and reorder points map to Odoo's lot_id, landed_cost_ok, and reorder_point fields. BOM structures map to Odoo mrp.bom records with component lines and routing steps. The migration sequence is product templates first, then BOM components, then stock quant data last.
Tall Emu CRM
Pipeline / Opportunity
Odoo CRM
crm.lead (pipeline mode)
1:1Tall Emu Pipelines map to Odoo crm.lead records with type = opportunity. Stage names, probabilities, and stage order transfer to Odoo's stage_id and probability fields. Odoo stage probabilities default to 0-100 integers; we map Tall Emu's decimal probability values by rounding. Each Tall Emu pipeline becomes a separate Odoo team (crm.team) with its own stage sequence. Closed-Lost and Closed-Won reasons map to Odoo's lost_reason_id if the Odoo CRM app is version 17 or later.
Tall Emu CRM
Quote
Odoo CRM
sale.order (quotation state)
1:1Tall Emu Quotes map to Odoo sale.order records in draft/quotation state. Line items (product, quantity, unit price, discount) transfer to sale.order.line records linked to the sale.order. Terms and acceptance status migrate as a note and state field respectively. Tall Emu Quote status values (Draft, Sent, Accepted, Declined) map to Odoo state values (draft, sent, sale, cancel). PDF templates and signed documents do not transfer as binary files; we flag attachments for manual re-upload post-migration.
Tall Emu CRM
Order
Odoo CRM
sale.order (confirmed state) or stock.picking
1:1Tall Emu Sales Orders map to Odoo sale.order records in confirmed or done state for the order header, with picking records (stock.picking) generated via Odoo's delivery module if the Inventory app is active. Line items carry over to sale.order.line. If the destination has Odoo Manufacturing installed, confirmed orders with manufactured components can trigger mrp.production records. We flag any order with fulfilment state outside Odoo's standard picking workflow for manual review.
Tall Emu CRM
Subscription
Odoo CRM
sale.subscription
1:1Tall Emu Subscriptions (Plan, Status, Order Quantity, Billable Quantity, Price, Period, Renewal Due Date) map to Odoo sale.subscription records. Status values (Active, Expired, Paused, Cancelled) require explicit mapping to Odoo's close_reason_id and state fields. Odoo Subscription requires the sale_subscription app (Odoo Enterprise) or the sale_management module (Community) with custom fields. Period and billing frequency map to Odoo's recurring_interval and recurring_rule_type. If the destination lacks the subscription module, we map to sale.order with a recurring note field and flag for rebuild.
Tall Emu CRM
Activities / Tasks
Odoo CRM
mail.activity
1:1Tall Emu Activities (meetings, calls, emails, tasks) with assignees, due dates, and completion status map to Odoo mail.activity records linked to the parent res.partner or crm.lead via res_model and res_id. Activity type (call, meeting, email, task) maps to Odoo's activity_type_id. The original timestamp preserves the activity timeline ordering. If Odoo has theDiscuss or VoIP module enabled, call records can be further classified with subtype. We resolve res_id by matching the activity's related record against the migrated partner or lead IDs.
Tall Emu CRM
Custom Fields
Odoo CRM
ir.model.fields (custom)
lossyTall Emu custom fields on Companies, Contacts, Products, Pipelines, and Quotes migrate as Odoo custom ir.model.fields created via Settings > Technical > Custom Fields before migration. We audit Tall Emu's custom field availability per module during discovery (some modules do not support custom fields). If the destination Odoo version lacks an equivalent field type (e.g., Tall Emu checkbox with no Odoo equivalent boolean), we flag it for pre-migration field creation as a char or selection field with a note for manual cleanup post-migration.
Tall Emu CRM
Freight / Shipping Records
Odoo CRM
stock.picking or delivery.carrier
1:1Tall Emu freight records (carrier, tracking number, delivery status) map to Odoo stock.picking records with delivery_type and carrier_id if the Inventory and Delivery apps are active. Tracking URLs map to picking.note. If the destination Odoo instance does not have the Delivery app installed, freight records migrate as notes on the related sale.order. We flag this gap during scoping and recommend installing the Delivery app before migration if freight history is critical for the customer's operations.
Tall Emu CRM
Users / Teams
Odoo CRM
res.users
1:1Tall Emu Users map to Odoo res.users by email match. Roles and team assignments transfer as Odoo access rights groups (res.groups) and crm.team membership respectively. Teams migrate as crm.team records with member_ids linking to the mapped res.users records. Any Tall Emu User without a matching Odoo user email is held in a reconciliation queue for the customer's admin to provision before record import resumes.
Tall Emu CRM
Attachments
Odoo CRM
ir.attachment
1:1Tall Emu stores document attachments (PDFs, images) linked to records, but there is no documented bulk export endpoint for binary files. We export file metadata (filename, record association, upload date) and flag all attachments for manual re-upload post-migration. For Quotes and Orders with associated PDFs, we note the parent record so the customer's admin can re-attach the files in Odoo's document management module after migration.
| Tall Emu CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Company | res.partner (company type)1:1 | Fully supported | |
| Contact | res.partner (individual type)1:1 | Fully supported | |
| Product | product.product or product.template1:1 | Fully supported | |
| Pipeline / Opportunity | crm.lead (pipeline mode)1:1 | Fully supported | |
| Quote | sale.order (quotation state)1:1 | Fully supported | |
| Order | sale.order (confirmed state) or stock.picking1:1 | Fully supported | |
| Subscription | sale.subscription1:1 | Fully supported | |
| Activities / Tasks | mail.activity1:1 | Mapping required | |
| Custom Fields | ir.model.fields (custom)lossy | Mapping required | |
| Freight / Shipping Records | stock.picking or delivery.carrier1:1 | Mapping required | |
| Users / Teams | res.users1:1 | Mapping required | |
| Attachments | ir.attachment1:1 | Not 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.
Tall Emu CRM gotchas
Mandatory upfront annual billing plus onboarding fee
No documented public REST API for bulk migration
Integration with MYOB and Xero is native but brittle in practice
Custom fields not available on all modules
Workflow automations do not survive migration
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
Discovery and Odoo app inventory
We audit Tall Emu's active modules (Companies, Contacts, Products, Pipelines, Quotes, Orders, Subscriptions, Activities, Freight, Users) and export record counts per module. We pair this with an Odoo environment review: which apps are installed (CRM, Inventory, Manufacturing, Sale Management, Delivery, Subscription), which edition (Community or Enterprise), and whether the JSON-RPC API is accessible for import. The discovery output is a written migration scope, an Odoo app recommendation checklist, and a Tall Emu workflow inventory sheet for rebuild planning.
Excel export and data extraction
We extract data from Tall Emu using Excel grid exports in dependency order: Companies, Contacts, Products (with BOM components), Pipeline stage definitions, Subscriptions, Quotes, Orders, Activities, and Freight records. We export all custom fields alongside standard fields and note any modules that do not support custom fields per Tall Emu's documentation. Tall Emu Users are exported with email, name, role, and team assignment for Odoo res.users mapping. The export is chunked by module into CSV files ready for transformation.
Odoo environment provisioning and schema setup
We provision or validate the destination Odoo environment: install the required apps (CRM, Inventory, Sale Management, Delivery, Subscription as applicable), create custom ir.model.fields for any Tall Emu custom fields without native Odoo equivalents, configure CRM stages and teams to match the Tall Emu pipeline structure, and validate the JSON-RPC API access credentials. Odoo Community self-hosted instances require the customer's admin to provide database credentials and ensure the server allows external API access. Odoo Online instances use the Odoo API key for authentication.
Transformation and mapping pipeline
We transform the Tall Emu CSV exports into Odoo-compatible JSON-RPC payloads using the mapping rules defined during scoping. The transform handles: res.partner creation (Companies first, then Contacts with parent_id resolution), crm.lead creation (with stage_id resolved from the pipeline mapping), sale.order creation (Quotes as quotation state, Orders as confirmed state), product.template and mrp.bom creation, sale.subscription creation or sale.order custom field mapping, and mail.activity creation with res_model and res_id resolved against the imported partner and lead IDs. Every record receives a unique migration ID for reconciliation.
Sandbox migration and reconciliation
We run a full migration into the Odoo Sandbox environment (or a cloned database for Odoo Online) using production-like data volume. The customer's team reconciles record counts (Partners in, Leads in, Products in, Orders in, Activities in), spot-checks 25-50 random records against the Tall Emu source, and validates that parent-child relationships are intact (Contacts linked to Companies, Orders linked to Partners). Any mapping corrections are documented and applied to the production migration script before the next step.
Production migration and cutover
We freeze Tall Emu writes during cutover, run a final delta export of any records modified during the migration window, then execute the production migration. Records import in dependency order: res.partner (Companies), res.partner (Contacts with parent_id), product.template, crm.lead (Opportunities), sale.order (Quotes and Orders), stock.picking (if Delivery app active), sale.subscription, mail.activity. Each phase emits a row-count reconciliation report. We deliver the workflow and automation inventory document to the customer's admin for Odoo Studio rebuild. We support a one-week hypercare window for reconciliation issues raised by the team.
Platform deep dives
Tall Emu CRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Tall Emu CRM and Odoo CRM.
Object compatibility
1 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
Tall Emu CRM: Not publicly documented.
Data volume sensitivity
Tall Emu 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 Tall Emu CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Tall Emu 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 Tall Emu 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.