CRM migration
Field-level mapping, validation, and rollback between The Case File and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
The Case File
Source
Odoo CRM
Destination
Compatibility
11 of 11
objects map 1:1 between The Case File and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
The Case File organizes data around individual cases with contacts, companies, activities, and documents attached directly to case records. Odoo CRM uses a relational model built around crm.lead (for leads and opportunities), res.partner (for contacts and companies), and crm.team (for sales unit organization). These architectures are fundamentally different: The Case File is case-centric; Odoo CRM is contact- and pipeline-centric. FlitStack AI maps The Case File contact records to res.partner, case records to crm.lead with the opportunity type flag, and case-linked activities to mail.activity records. Documents attached to cases are migrated as Odoo attachments with the original case reference preserved. Custom fields in The Case File are translated to Odoo ir.model.fields entries — text fields, selections, dates, and numeric fields all map to their Odoo equivalents with field technical names generated from the source label. The migration uses Odoo's XML-RPC API for record creation and attachment upload, with foreign-key resolution ensuring that contacts exist before cases are linked. Workflows, billing rules, and document templates do not migrate — these must be rebuilt in Odoo using its automation rules and reporting tools.
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 The Case File 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.
The Case File
Contact
Odoo CRM
res.partner
1:1The Case File contacts map directly to Odoo res.partner records. The 'company' flag on a contact sets the is_company boolean — true for organization contacts, false for individual contacts. Partner addresses (street, city, country) migrate to res.partner address fields using Odoo's address layout model.
The Case File
Company
Odoo CRM
res.partner (is_company=true)
1:1The Case File company records become res.partner entries with is_company=True. The company name maps to name, domain maps to website, industry maps to industry_id via the res.partner.industry selection field. Employee count and revenue migrate as custom fields since Odoo stores these on the partner form but not as standard fields.
The Case File
Case
Odoo CRM
crm.lead
1:1Each The Case File case maps to a crm.lead record in Odoo CRM. The case title becomes the lead name (name field), case description becomes the description text field, and case priority maps to priority (1=Low, 2=Normal, 3=High). The case type or category maps to the type field — use 'lead' for prospect cases and 'opportunity' for active deal cases based on case status.
The Case File
Case Status
Odoo CRM
crm.stage
1:1The Case File status values (e.g., Open, In Progress, Resolved, Closed) map to Odoo crm.stage records by name. The migration creates stage records in the default pipeline if they do not already exist. Each stage gets sequence order matching the source status sort order. Probability values are assigned per stage using Odoo's stage probability defaults unless custom probabilities were tracked in The Case File.
The Case File
Case Activity
Odoo CRM
mail.activity
1:1Activities logged against a case in The Case File (calls, meetings, tasks, notes) migrate as mail.activity records. The activity_type_id is resolved by matching the source activity type label to Odoo's built-in activity types (call, meeting, todo, email). Original date and user assignment are preserved via activity_date_deadline and user_id respectively. Activity summary maps to activity_note.
The Case File
Document / Attachment
Odoo CRM
ir.attachment
1:1Documents attached to cases migrate as ir.attachment records with res_model='crm.lead' and res_id set to the target crm.lead ID. The original filename is preserved in the name field, and the file binary content is stored in the datas field. Odoo's attachment size limit (default 100MB) is respected; files exceeding this threshold are flagged for manual handling.
The Case File
Case Custom Fields
Odoo CRM
ir.model.fields (custom)
1:1Custom fields defined in The Case File are created as ir.model.fields entries on the crm.lead model before migration. Field types are translated: text/textarea becomes char or text depending on length, numbers become integer or float, dates become date, and pick-lists become selection fields with the original options as key-value pairs. Field technical names are generated from the source label (e.g., 'Contract Value' becomes x_contract_value).
The Case File
User / Owner
Odoo CRM
res.users
1:1Case owners in The Case File are matched to res.users records by email address. Unmatched owners are flagged as warnings — the case is assigned to a fallback user (typically the migration admin) and a custom Source_Owner__c field preserves the original owner name for manual reassignment in Odoo.
The Case File
Team
Odoo CRM
crm.team
1:1If The Case File has a team or department concept, these map to crm.team records. The team name and member list migrate; team members are linked via crm.team.member_ids (res.users many2many). Odoo requires the team to exist before members can be assigned, so the migration creates teams before user assignments are processed.
The Case File
Billing / Invoice Items
Odoo CRM
account.move (draft)
1:1Billing records and invoice line items in The Case File do not map to standard Odoo CRM objects. These are exported as a separate dataset (account.move records in draft state) and handed to the accounting team for reconciliation. The case reference is preserved in the invoice line description for audit traceability.
The Case File
Notes / Free-text
Odoo CRM
mail.message
1:1Free-text notes attached to cases migrate as mail.message records on the crm.lead. The message_body field carries the note text, message_type is set to 'comment', and the original note date maps to date. Author is set to the system migration user if the original author cannot be resolved.
| The Case File | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner (is_company=true)1:1 | Fully supported | |
| Case | crm.lead1:1 | Fully supported | |
| Case Status | crm.stage1:1 | Fully supported | |
| Case Activity | mail.activity1:1 | Fully supported | |
| Document / Attachment | ir.attachment1:1 | Fully supported | |
| Case Custom Fields | ir.model.fields (custom)1:1 | Fully supported | |
| User / Owner | res.users1:1 | Fully supported | |
| Team | crm.team1:1 | Fully supported | |
| Billing / Invoice Items | account.move (draft)1:1 | Fully supported | |
| Notes / Free-text | mail.message1: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.
The Case File gotchas
No publicly documented API for programmatic data extraction
Trust account ledger balances require manual verification
Custom fields lack a documented export schema
Document folder structure does not export flatly
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
Configure Odoo schema before data migration
FlitStack reviews The Case File's object and field inventory and configures the corresponding Odoo objects before any data is moved. This includes creating custom fields on crm.lead via ir.model.fields, configuring crm.stage records to match The Case File status values, setting up crm.team records for each source team or department, and confirming res.company configuration if multi-entity data is involved. Odoo schema configuration is delivered as a setup checklist your admin can execute or that FlitStack can apply via XML-RPC with admin credentials.
Map and validate all field transformations
Every field in The Case File is mapped to an Odoo field with documented mapping type (direct, value_mapping, transformed, custom_field_required). FlitStack generates a field-mapping specification document showing the source field, destination field, mapping type, and any transformation logic. Special attention is given to pick-list value translations (value_mapping), owner resolution (transformed by email match), and document attachment linking (direct with res_model and res_id resolution). The specification is reviewed with your team before migration proceeds.
Run sample migration with field-level validation
A representative slice of records — typically 100–500 covering contacts, companies, cases, and activities across different statuses — is migrated first. FlitStack generates a field-level diff comparing source values against the destination record values. Your team reviews the diff to confirm stage mapping, owner resolution, and custom field population are correct before the full migration run commits. Sample migration results are delivered as a CSV export with source value, destination field, and destination value for each mapped field.
Execute full migration with delta-pickup window
The full migration runs against your Odoo instance using XML-RPC API calls. Records are processed in dependency order: companies first (for parent_id resolution), then contacts, then cases linked to contacts, then activities and attachments. A delta-pickup window of 24–48 hours runs after the initial full migration to capture any records created or modified in The Case File during the cutover period. FlitStack logs every API operation to an audit trail so each migrated record can be traced back to its source ID.
Validate and hand off manual-rebuild assets
Post-migration validation includes record counts per object, spot-checks on field population, and attachment file verification. FlitStack delivers a migration summary report showing success rate, error counts, and records requiring manual review. Workflow definitions, automation rules, email templates, and billing configurations are exported as JSON blueprints for your Odoo admin to rebuild using Odoo's automation tools. A 30-day post-migration support window covers data corrections identified during validation.
Platform deep dives
The Case File
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 The Case File 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
The Case File: Not publicly documented.
Data volume sensitivity
The Case File 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 The Case File to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your The Case File 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 The Case File
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.