CRM migration
Field-level mapping, validation, and rollback between Lemon Tech and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Lemon Tech
Source
Odoo CRM
Destination
Compatibility
9 of 12
objects map 1:1 between Lemon Tech and Odoo CRM.
Complexity
BStandard
Timeline
3-6 weeks
Overview
Lemon Tech organizes data around Entities, Matters, Contacts, and Users for professional services and legal firms. Odoo CRM uses Leads, Opportunities, Contacts, and Accounts with a pipeline-stage model and a modular ERP foundation that can extend into Projects and Invoicing. The migration relies on Lemon Tech's built-in Entity export function rather than a documented public API, which constrains how we extract large datasets and requires chunked, off-peak scheduling for firms with high record counts. Custom Entities and SQL Wrappers are the most variable migration objects — simple wrappers export as standard tables, while complex ones with multi-table joins or external data require manual field mapping during discovery. We do not migrate Lemon Tech automations, workflows, or SQL Wrapper logic as functional code; we deliver a written inventory of these for the customer's admin to rebuild in Odoo's Studio or via custom modules.
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 Lemon Tech 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.
Lemon Tech
Contact
Odoo CRM
Contact (res.partner)
1:1Lemon Tech Contact records with name, email, phone, and address fields export cleanly via the Entity export function. We map Lemon Tech contacts to Odoo res.partner records with address fields split into street, city, state, country, and zip using the standard Odoo partner address schema. Any custom contact properties from Lemon Tech custom entities migrate to res.partner custom fields created in Odoo Studio (Enterprise) or as database-level custom fields (Community). Email addresses are used as the primary dedupe key during import to prevent duplicate partner records.
Lemon Tech
Entity (standard)
Odoo CRM
Contact (res.partner)
1:1Lemon Tech standard Entities that are not Matters or Contacts but represent organizational records (firms, organizations, or other entity types) map to Odoo res.partner records with the is_company flag set to True. We use the Entity name as the partner name and preserve any associated contact records as child contact records (address contacts) under the parent partner. If the entity has no associated contacts, it becomes a standalone company partner record.
Lemon Tech
Matter
Odoo CRM
Project (project.project)
1:1Lemon Tech Matters are the primary case and project container. We map Matters to Odoo Project records, preserving the matter name as project name, Matter status as project stage, linked contacts as followers or task assignees, and Matter dates as project start and end dates. Custom Matter fields migrate as project custom fields. If Odoo Project Management is not active on the destination instance, we map Matters to CRM Opportunities with a matter_reference custom field to maintain context.
Lemon Tech
Time Entry / Billing Record
Odoo CRM
Project Task with Timesheet (account.analytic.line)
1:1Lemon Tech time entries linked to Matters export as structured relational data via the Entity export. We map these to Odoo Project Tasks (linked to the Matter-as-Project) with timesheet records in account.analytic.line, preserving billable amounts, dates, and linked contact references. If Odoo Invoicing is active, we configure the billable flag and map billable amounts to sale.order.line entries. The mapping requires the Odoo Project Management and Timesheets apps to be installed on the destination instance.
Lemon Tech
User
Odoo CRM
User (res.users)
1:1Lemon Tech User records with name, email, and role information map to Odoo res.users. We resolve users by email match against the destination Odoo instance's user table. Any Lemon Tech User without a matching Odoo User is placed in a reconciliation queue for the customer's admin to provision before record import resumes. Role and permission context from Lemon Tech maps to Odoo Groups (e.g., user, manager, admin) and is documented for manual assignment post-migration.
Lemon Tech
Custom Entity
Odoo CRM
Custom Field (res.partner, project.project) or Custom Module
lossyLemon Tech custom entity types are inventoried during discovery, including all field names and data types. Simple custom entities with a flat schema map to custom fields on the closest standard Odoo object (res.partner for contact-related entities, project.project for matter-related entities). Complex custom entities with their own relational structure map to Odoo custom modules with dedicated database tables, created before migration via Odoo Studio (Enterprise) or custom Python module development. The original Lemon Tech entity names are preserved in field help text for auditability.
Lemon Tech
SQL Wrapper Data
Odoo CRM
Structured Table Import (ir.model.data)
lossySQL Wrappers in Lemon Tech combine CRM data with custom SQL or third-party sources for reporting. Simple wrappers exporting flat relational tables map directly to Odoo CSV imports as custom models. Complex wrappers with multi-table joins, computed columns, or external data sources require manual field mapping during discovery — we inventory every SQL Wrapper definition, document its dependencies and join logic, and deliver a mapping specification document rather than attempting to automate SQL translation. Any wrapper referencing external databases is flagged as out of scope for migration and documented for manual rebuild.
Lemon Tech
Attachment
Odoo CRM
IrAttachment
1:1File attachments associated with Lemon Tech entities or matters export as binary blobs via the Entity export function. We preserve filenames, file types, and the association to the parent record (Contact, Matter, or custom entity). Attachments are stored as Odoo ir.attachment records linked to the corresponding res.partner, project.project, or custom model record. Binary files over 5 MB are flagged for chunked upload to avoid Odoo attachment size limits. The original attachment folder structure is not preserved; all attachments attach directly to the parent record.
Lemon Tech
Entity Relationship (linked contacts to matters)
Odoo CRM
Followers (mail.followers) or Task Assignee
1:1Lemon Tech's relational model links contacts to matters through Entity-level associations. We preserve these relationships in Odoo by adding migrated contacts as followers on the corresponding project (Matter-as-Project) using the mail.followers model, which gives contacts visibility into project-level activity. If the customer uses Odoo CRM pipeline view instead of Projects, linked contacts are stored in a many2many custom field on the Opportunity record. The original relationship type (primary contact, billing contact, referring attorney) is preserved in a custom field on the follower or contact record.
Lemon Tech
Opportunity (if Lemon Tech has deal pipeline equivalent)
Odoo CRM
CRM Opportunity (crm.lead)
1:1If the Lemon Tech instance uses a deal or opportunity-like entity type alongside Matters, we map those records to Odoo CRM Opportunities (crm.lead records with type=opportunity). The mapping preserves deal value, stage, probability, expected close date, and any linked contacts as partner_id on the opportunity. Stage values are mapped to Odoo CRM stage names configured in the destination instance's pipeline. If the customer uses only Matters (no separate deal entity), we use the Matter-as-Project mapping instead and document any deal-specific fields for manual entry or custom module build.
Lemon Tech
Tag / Category
Odoo CRM
Tag (crm.tag)
lossyLemon Tech tags or category classifications stored on Entities, Contacts, or Matters map to Odoo CRM Tags (crm.tag model). Tags used for legal matter classification (practice area, client type, jurisdiction) migrate as tags on the project.record for Odoo Projects. Tags used for contact classification migrate as tags on res.partner. We deduplicate tag names during import and document any tag hierarchies that will need to be rebuilt as Odoo project categories or custom stage groups.
Lemon Tech
Historical Timestamps
Odoo CRM
mail.message / create_date / write_date
1:1Lemon Tech entity creation dates, last-modified dates, and matter open dates migrate to Odoo record create_date, write_date, and custom date fields respectively. Activity timestamps from engagement records (if applicable) migrate to mail.message records with message_type=comment and a custom reference to the original Lemon Tech timestamp. We preserve the original timezone context from Lemon Tech and set Odoo's create_date and write_date to match where the Odoo API allows, ensuring the activity timeline reflects the original record history.
| Lemon Tech | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | Contact (res.partner)1:1 | Fully supported | |
| Entity (standard) | Contact (res.partner)1:1 | Fully supported | |
| Matter | Project (project.project)1:1 | Fully supported | |
| Time Entry / Billing Record | Project Task with Timesheet (account.analytic.line)1:1 | Fully supported | |
| User | User (res.users)1:1 | Fully supported | |
| Custom Entity | Custom Field (res.partner, project.project) or Custom Modulelossy | Fully supported | |
| SQL Wrapper Data | Structured Table Import (ir.model.data)lossy | Mapping required | |
| Attachment | IrAttachment1:1 | Fully supported | |
| Entity Relationship (linked contacts to matters) | Followers (mail.followers) or Task Assignee1:1 | Fully supported | |
| Opportunity (if Lemon Tech has deal pipeline equivalent) | CRM Opportunity (crm.lead)1:1 | Fully supported | |
| Tag / Category | Tag (crm.tag)lossy | Fully supported | |
| Historical Timestamps | mail.message / create_date / write_date1: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.
Lemon Tech gotchas
No public API for bulk data extraction
SQL Wrapper complexity varies by definition
Custom entity naming conventions are customer-specific
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 Lemon Tech export audit
We conduct a structured discovery session with the customer's Lemon Tech administrator to inventory all entity types (standard and custom), SQL Wrapper definitions, matter structures, user accounts, and attachment volumes. We review which Lemon Tech tier the customer is on to confirm export capability scope. We also identify the destination Odoo edition (Community or Enterprise), active apps, existing data, and user count. The discovery output is a written migration scope document that lists every entity type to be migrated, the recommended export method per entity, and any entities flagged as requiring custom mapping work.
Export sequencing and staging
We coordinate with the customer's Lemon Tech administrator to schedule entity-level exports in dependency order — contacts first (because matters reference contacts), then matters and custom entities, then time entries and billing records, then attachments. Large exports are chunked by entity type and scheduled during off-peak hours to avoid task queue timeouts. We use Lemon Tech's built-in export function for all standard entities and SQL Wrapper exports for reporting tables. Each export is staged in a secure migration workspace, validated for row count and field completeness, and signed off by the customer before transformation begins.
Odoo schema provisioning and custom field creation
Before any data loads, we provision the Odoo destination schema. For Community editions, this involves creating custom fields via database-level additions or lightweight Python scripts; for Enterprise editions, we use Odoo Studio to create custom fields on res.partner, project.project, and crm.lead. We create CRM pipeline stages, project categories, and tags matching the Lemon Tech entity categories. We configure the Project Management and Timesheets apps if time-entry migration is in scope. All custom field names, types, and help text are documented in the mapping specification alongside the original Lemon Tech entity and field names.
Data transformation and SQL Wrapper mapping
We transform Lemon Tech export data into Odoo-compatible CSV and XML-RPC payloads. Contact and Entity records are mapped to res.partner with the is_company flag applied to organizational entities. Matters are mapped to project.project records. Time entries are mapped to account.analytic.line records linked to project tasks. SQL Wrapper data is processed per-wrapper: simple flat-table wrappers convert to CSV imports; complex wrappers are flagged and documented in the mapping specification rather than imported. We normalize all field names, validate required fields (partner name, email format, date formats), and generate a pre-import validation report flagging any records with missing required fields or data quality issues.
Sandbox migration and reconciliation
We run a full migration into an Odoo staging database or sandbox environment using production-like data volume. The customer's admin reviews a reconciliation report comparing record counts in Lemon Tech against Odoo — Contacts in, Partners in, Projects in, Timesheet lines in, Attachments in. We spot-check 25-50 records per object type against the Lemon Tech source for field-level accuracy. Any mapping corrections are documented and applied before the production migration. Owner reconciliation (matching Lemon Tech users to Odoo res.users by email) happens here, with any unmatched users placed in a queue for the admin to provision.
Production migration and cutover
We run the production migration in dependency order: Users (manually provisioned and validated), Partners (from Contacts and Entities), Projects (from Matters), Tasks and Timesheets, Custom field data, SQL Wrapper data, Attachments, and Tags. Each phase emits a reconciliation report before the next begins. We freeze Lemon Tech writes during the cutover window, run a final delta migration for any records modified during migration, and enable Odoo as the system of record. We deliver the automation inventory document (Lemon Tech workflows and SQL Wrapper logic requiring rebuild) and support a one-week hypercare window for reconciliation issues. We do not rebuild Lemon Tech automations or SQL Wrapper logic inside the migration scope; that is a separate engagement.
Platform deep dives
Lemon Tech
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Lemon Tech and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Lemon Tech and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Lemon Tech 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
Lemon Tech: Not publicly documented.
Data volume sensitivity
Lemon Tech 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 Lemon Tech to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Lemon Tech 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 Lemon Tech
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.