CRM migration
Field-level mapping, validation, and rollback between Lime CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Lime CRM
Source
Odoo CRM
Destination
Compatibility
9 of 12
objects map 1:1 between Lime CRM and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Lime CRM to Odoo CRM is a schema-reconciliation migration first and a data transfer second. Lime CRM builds its data model around customer-specific Limetypes with no canonical schema across tenants, while Odoo CRM uses a structured res.partner, crm.lead, and project.object model that assumes standard field types. We extract the live Limetype schema from the customer's Lime CRM admin before any field mapping begins, design the destination Odoo object model, and reconcile custom Lime fields to Odoo custom fields or related records. Email conversations export from Lime CRM as individual message files rather than threaded objects; we detect the conversation ID and timestamp, reassemble threads, and inject them as unified mail.thread records in Odoo. Workflow Automations, no-code automation rules, and GDPR-portal configurations do not migrate in transferable format; we deliver a written inventory of these for the customer's Odoo admin to rebuild using Odoo Studio or a consultant.
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 Lime 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.
Lime CRM
Company
Odoo CRM
res.partner (company type)
1:1Lime CRM Company records map to Odoo res.partner with partner_type set to 'company'. The Lime CRM company name, address fields, industry, and VAT number map to the corresponding Odoo partner fields. Odoo uses res.partner for both organisations and individuals; we set is_company=True on Company records and link Contacts as children. We resolve the company name as the dedupe key during import to prevent duplicate partners in Odoo.
Lime CRM
Contact
Odoo CRM
res.partner (individual)
1:1Lime CRM Contact records map to Odoo res.partner with partner_type set to 'individual' and parent_id pointing to the related Company partner. Name, email, phone, mobile, and function/role fields migrate directly. Custom Contact fields defined as Lime CRM Limetype properties map to Odoo custom fields on res.partner. The parent_company_id (lookup to Company) migrates as parent_id on the Odoo res.partner record.
Lime CRM
Deal
Odoo CRM
crm.lead (opportunity)
1:1Lime CRM Deal records map to Odoo crm.lead with type='opportunity'. Deal name becomes crm.lead name, deal value becomes planned_revenue, deal stage maps to a stage_id in an Odoo pipeline, and expected close date maps to date_deadline. Lime CRM allows custom deal pipelines and stages per industry; we create corresponding Odoo CRM Pipeline stages and assign the stage_id on import. Owner resolves by email match against Odoo res.users.
Lime CRM
Deal Stage
Odoo CRM
crm.stage
lossyEach Lime CRM deal pipeline with its stages maps to an Odoo CRM Stage within a crm.team pipeline. We create stages in Odoo matching the Lime CRM stage order and probability percentages. Stage names and order are preserved; probability percentages round to the nearest integer Odoo allows on stage configuration.
Lime CRM
Activity: Call, Meeting, Task, Note
Odoo CRM
mail.activity + mail.message
1:1Lime CRM Activities (calls, meetings, tasks, notes) attached to a Contact or Deal map to Odoo mail.activity records linked to the migrated res.partner or crm.lead. Activity type, subject, body, date, and duration migrate. Odoo mail.activity is the primary activity tracking model in Odoo 15 and later; we link activities to the correct res_id and res_model using the migrated record IDs from the parent object import phase.
Lime CRM
Email conversation (ConversationMessage files)
Odoo CRM
mail.thread + mail.message
lossyLime CRM exports email conversations as individual ConversationMessage files rather than threaded objects. We detect conversation ID and timestamp across the export manifest, reassemble messages into chronological order, and inject them into Odoo as mail.thread records with mail.message children. The parent record (Contact or Deal) is linked via res_id and model. This reassembly step is unique to Lime CRM source migrations and adds time to the scoping phase.
Lime CRM
Ticket
Odoo CRM
helpdesk.ticket
1:1Lime CRM Ticket records migrate to Odoo helpdesk.ticket if the destination includes the Odoo Helpdesk module. Ticket subject, description, status, priority, and assignee map to the corresponding Odoo fields. Ticket conversations migrate as mail.message on the ticket. We flag that the Odoo Helpdesk module is a separate install and add it to the scope if the customer requires ticket migration.
Lime CRM
Custom Limetype
Odoo CRM
Custom res.partner inheritance or ir.model.model
lossyLime CRM's configurable Limetypes are the most complex migration object because their schema is unique per customer. We extract the live Limetype field definitions from Lime CRM admin during discovery, map each Limetype to either an Odoo custom field on res.partner (if the Limetype is a person or company extension) or to a new Odoo model using ir.model.model inheritance (if the Limetype is a standalone entity). Each custom Limetype is treated as a separate mapping workstream with its own schema export and field mapping.
Lime CRM
Tag
Odoo CRM
crm.tag
1:1Lime CRM Tags applied to Contacts, Deals, and Tickets migrate to Odoo crm.tag records with tag_ids on crm.lead. We export tag values as a flat list per record and recreate the tag taxonomy in Odoo before import. Tags with the same name are deduplicated by tag name during import.
Lime CRM
Attachment
Odoo CRM
ir.attachment
1:1Lime CRM attachments are downloaded individually per record. We batch download by parent object (Contact, Deal, Ticket), rename files to preserve the parent relationship, and import them to Odoo ir.attachment linked to the migrated record via res_model and res_id. Files exceeding 25 MB are flagged before import because Odoo has a default attachment storage limit that may require configuration on the destination instance.
Lime CRM
Document
Odoo CRM
ir.attachment (document)
1:1Lime CRM Documents stored alongside Deals and Contacts with auto-fill templates export as document blob plus metadata. We import the document blob to Odoo ir.attachment linked to the parent record. Template auto-fill field mappings are documented as part of the mapping spec for the customer's admin to reconfigure in Odoo using the Odoo document management module.
Lime CRM
User / Owner
Odoo CRM
res.users
1:1Lime CRM Users and Deal owners map to Odoo res.users by email match. We validate that the destination Odoo instance has a corresponding user account before assigning owner_id references on migrated records. Users without a matching Odoo account go to a reconciliation queue for the customer to provision before record import resumes, because OwnerId references are required on most Odoo crm.lead and helpdesk.ticket records.
| Lime CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Company | res.partner (company type)1:1 | Fully supported | |
| Contact | res.partner (individual)1:1 | Fully supported | |
| Deal | crm.lead (opportunity)1:1 | Fully supported | |
| Deal Stage | crm.stagelossy | Fully supported | |
| Activity: Call, Meeting, Task, Note | mail.activity + mail.message1:1 | Fully supported | |
| Email conversation (ConversationMessage files) | mail.thread + mail.messagelossy | Fully supported | |
| Ticket | helpdesk.ticket1:1 | Fully supported | |
| Custom Limetype | Custom res.partner inheritance or ir.model.modellossy | Fully supported | |
| Tag | crm.tag1:1 | Fully supported | |
| Attachment | ir.attachment1:1 | Fully supported | |
| Document | ir.attachment (document)1:1 | Fully supported | |
| User / Owner | res.users1: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.
Lime CRM gotchas
Email threads export as individual message files
Super API-key generation removed from API
Custom Limetype schema is customer-unique
No bulk export for attachments in base tier
Workflow Automations do not export in transferable format
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 credential acquisition
We audit the source Lime CRM instance for all Limetypes, custom fields, pipeline structures, deal stages, user accounts, and engagement volume. We extract the live Limetype schema definition from the customer's Lime CRM admin as the first output. In parallel, we initiate the Lime CRM API credential request through Lime Technologies' account management, factoring in the 2-5 business day lead time. The discovery output is a written migration scope, a Lime CRM Limetype inventory, and an Odoo edition recommendation (Community or Enterprise depending on the customer's support and hosting requirements).
Schema design and Odoo model mapping
We design the destination Odoo object model based on the extracted Limetype schema. Each Lime CRM Limetype becomes either a set of custom fields on res.partner (for person or company extensions) or a new Odoo model via ir.model.model inheritance (for standalone entities). We create custom fields in the destination Odoo instance using Odoo Studio or the Settings interface, configure crm.lead stage pipelines matching the Lime CRM deal pipeline structure, and configure helpdesk.ticket stages if ticket migration is in scope. Schema design is validated in a staging Odoo environment before production migration begins.
Email thread reassembly and data transformation
We run the Lime CRM export and process the output to identify ConversationMessage files. We parse conversation IDs and timestamps, group messages by conversation, sort chronologically, and build unified conversation records for injection into Odoo's mail.thread model. Simultaneously, we apply field transformations including phone number normalisation (preventing leading-zero stripping), address standardisation, and date format normalisation. We also apply the user-owner email match against the destination Odoo res.users table and flag any owners without a matching Odoo user for the customer to provision.
Dependency-ordered import into Odoo
We run production migration in strict dependency order: Odoo res.users accounts (manually provisioned, validated), res.partner companies (is_company=True), res.partner contacts (with parent_id resolved to company partner), crm.lead opportunities (with partner_id and user_id resolved), mail.activity records (linked to migrated partner and lead records), mail.thread conversation records (reassembled from Lime CRM ConversationMessage files), helpdesk.ticket records, custom model records, ir.attachment files (with res_model and res_id resolved), and crm.tag records. Each phase emits a row-count reconciliation report before the next phase begins. Odoo ORM foreign key constraints are validated after each phase.
Cutover, validation, and automation handoff
We freeze writes in Lime CRM during the cutover window, run a final delta migration of any records modified during the migration, then confirm Odoo as the system of record. We validate record counts across all objects, run spot-checks on 25-50 records per object against the Lime CRM source, and confirm pipeline stage distribution matches. We deliver the Workflow and Automation inventory document (captured from the Lime CRM UI during discovery) to the customer's Odoo admin for rebuild using Odoo Studio Automated Actions. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's team during initial Odoo use.
Platform deep dives
Lime CRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Lime CRM and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Lime CRM and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Lime CRM and Odoo CRM.
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
Lime CRM: Not publicly documented.
Data volume sensitivity
Lime 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 Lime CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Lime 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 Lime 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.