CRM migration

Migrate from Lemon Tech to Odoo CRM

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 logo

Lemon Tech

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

75%

9 of 12

objects map 1:1 between Lemon Tech and Odoo CRM.

Complexity

BStandard

Timeline

3-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Lemon Tech logo

Lemon Tech

What's pushing teams away

  • Very limited public documentation makes it difficult for new users or migrating teams to understand the data model without direct vendor engagement.
  • No publicly documented public REST API forces migrations to rely on the built-in export tooling, which may not cover all edge cases.
  • Pricing is fully custom with no transparent tier structure, making it hard to evaluate cost-effectiveness or negotiate during renewal.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How Lemon Tech objects map to Odoo CRM

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

maps to

Odoo CRM

Contact (res.partner)

1:1
Fully supported

Lemon 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)

maps to

Odoo CRM

Contact (res.partner)

1:1
Fully supported

Lemon 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

maps to

Odoo CRM

Project (project.project)

1:1
Fully supported

Lemon 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

maps to

Odoo CRM

Project Task with Timesheet (account.analytic.line)

1:1
Fully supported

Lemon 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

maps to

Odoo CRM

User (res.users)

1:1
Fully supported

Lemon 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

maps to

Odoo CRM

Custom Field (res.partner, project.project) or Custom Module

lossy
Fully supported

Lemon 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

maps to

Odoo CRM

Structured Table Import (ir.model.data)

lossy
Mapping required

SQL 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

maps to

Odoo CRM

IrAttachment

1:1
Fully supported

File 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)

maps to

Odoo CRM

Followers (mail.followers) or Task Assignee

1:1
Fully supported

Lemon 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)

maps to

Odoo CRM

CRM Opportunity (crm.lead)

1:1
Fully supported

If 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

maps to

Odoo CRM

Tag (crm.tag)

lossy
Fully supported

Lemon 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

maps to

Odoo CRM

mail.message / create_date / write_date

1:1
Fully supported

Lemon 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.

Gotchas + challenges

What specifically takes care here

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 logo

Lemon Tech gotchas

High

No public API for bulk data extraction

Medium

SQL Wrapper complexity varies by definition

Low

Custom entity naming conventions are customer-specific

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Lemon Tech has no public API — export tasks may timeout on large datasets

    Lemon Tech does not publish a public REST API for bulk data extraction. All data leaves the platform via the built-in Entity export function, which runs as a server-side task. For firms with high record counts — particularly large matter lists, extensive time-entry histories, or many custom entity records — these export tasks can hit server timeout limits. We handle this by coordinating chunked, entity-level exports during off-peak hours and staging them incrementally. During discovery, we identify the largest entity types and schedule export sequencing to avoid task queue backlogs. If the customer is on a lower Lemon Tech tier with potential feature-gating of export capabilities, we flag this during scoping and recommend export scheduling before migration begins.

  • Custom entity naming conventions are customer-specific and require normalization

    Lemon Tech custom entities created through the API or UI have no enforced naming conventions. Firms may use camelCase, snake_case, spaces, or numeric prefixes depending on internal standards. Odoo's API naming conventions require alphanumeric characters and underscores for field and model names. We normalize all custom entity and field names to a consistent snake_case format during mapping, and we preserve the original Lemon Tech names in field help text and a metadata JSON field on each record for auditability. Fields with duplicate names after normalization are disambiguated with a numeric suffix and documented in the mapping specification.

  • Complex SQL Wrappers with multi-table joins require manual mapping

    SQL Wrappers in Lemon Tech are configured per-customer and can include custom SQL, joins across multiple tables, or references to third-party data sources. Simple wrappers exporting flat relational tables map cleanly to Odoo CSV imports. Wrappers with nested joins, computed columns, or external database references do not have a direct Odoo equivalent and require manual field mapping during discovery. We inventory all SQL Wrapper definitions during discovery, flag any with complex logic or external dependencies as requiring custom mapping work, and deliver a written specification rather than attempting automated SQL translation.

  • Odoo CRM requires Project and Invoicing modules for time-entry migration

    Lemon Tech time entries and billing records linked to Matters require the Odoo Project Management and Timesheets apps to be installed on the destination instance for full migration fidelity. If the destination Odoo instance has only the CRM app active (the default configuration), we map time entries to custom fields on the Matter-as-Project record rather than to timesheet lines, and we flag that the customer may need to install the Project and Timesheets apps to restore billable hour tracking. Odoo.sh and self-hosted instances can add apps post-migration; Odoo Online instances may require a plan upgrade.

  • Lemon Tech automations and workflows do not migrate to Odoo Studio

    Lemon Tech workflow configurations, automation rules, and SQL Wrapper-driven reporting logic are platform-specific and do not have Odoo equivalents that can be migrated programmatically. We deliver a written inventory of every active Lemon Tech workflow and automation rule with its trigger conditions, actions, and recommended Odoo Studio or server action equivalent. The customer's admin or an Odoo implementation partner rebuilds these post-migration. SQL Wrapper reporting queries are documented as specifications for manual rebuild in Odoo using the reporting engine or custom Python reports.

Migration approach

Six steps for a successful Lemon Tech to Odoo CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Lemon Tech logo

Lemon Tech

Source

Strengths

  • Purpose-built for professional services with native support for Matters, time entries, and billing records.
  • Custom entities and SQL Wrappers provide flexibility for complex data requirements.
  • Entity-level export function supports both standard and custom entity types in a migration-compatible format.

Weaknesses

  • No publicly available API documentation limits automation options for migrations.
  • Very limited online community or third-party resources for troubleshooting.
  • Fully custom pricing model with no published benchmarks or self-service tier information.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. All 8 core objects map 1:1 between Lemon Tech and Odoo CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Lemon Tech and Odoo CRM.

  • Object compatibility

    A

    All 8 core objects map 1:1 between Lemon Tech and Odoo CRM.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Lemon Tech: Not publicly documented.

  • Data volume sensitivity

    B

    Lemon Tech doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Lemon Tech to Odoo CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Lemon Tech to Odoo CRM data migrations

Answers to the questions buyers ask most during Lemon Tech to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most Lemon Tech migrations land between three and six weeks for firms under 15,000 contact records, 3,000 matters, and no complex SQL Wrapper definitions. Migrations with complex SQL Wrappers, more than ten distinct custom entity types, large time-entry histories, or significant attachment volumes move to eight to fourteen weeks because of the manual mapping work required for SQL Wrapper inventory, the absence of a public API for batch extraction, and the Odoo schema provisioning needed for custom fields. Timeline depends heavily on how many Lemon Tech entity types are active and whether the customer has installed the Odoo Project Management and Timesheets apps on the destination instance.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Lemon Tech.
Land in Odoo CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day