CRM migration

Migrate from Legrand Cloud CRM to Odoo CRM

Field-level mapping, validation, and rollback between Legrand Cloud CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

Legrand Cloud CRM logo

Legrand Cloud CRM

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

77%

10 of 13

objects map 1:1 between Legrand Cloud CRM and Odoo CRM.

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Legrand Cloud CRM to Odoo CRM is a migration constrained by Legrand's lack of a public API on the Cloud tier. There is no REST endpoint for automated extraction, so we use Legrand's built-in Excel export pass per module, executed in dependency order: Accounts first, then Contacts, then Opportunities, then subordinate objects. Odoo CRM uses a unified crm.lead model that conflates Leads and Opportunities in a single table with a Stage field, which requires translating Legrand's separate Lead Inbox and Opportunities into Odoo's lead_type and stage_name fields. We preserve the original Legrand pipeline stage as a custom stage label in Odoo so the customer's sales team retains pipeline continuity. Add-on modules (Sales Quotes, Service Desk, Asset Tracking) map to Odoo sale.order, helpdesk.ticket, and maintenance.request respectively when those Odoo apps are active. We do not migrate workflows, automations, or sequence configurations; we deliver a written inventory for the customer's admin to rebuild using Odoo Studio and server actions.

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

Legrand Cloud CRM logo

Legrand Cloud CRM

What's pushing teams away

  • The user interface feels dated compared to modern SaaS CRMs, and customers report that aesthetic friction contributes to lower team adoption rates over time, especially onboarding new hires who expect a HubSpot-style experience.
  • No publicly documented API for Cloud CRM means automation is limited to Zapier integrations and the built-in browser export. Power users who want programmatic data access or custom sync logic find this a hard blocker.
  • On-Premise licensing costs are a surprise after the initial per-user quote — installation, configuration, data migration, third-party integration, and training are all priced separately on top of the subscription.
  • Storage tier limits on Cloud Starter (500MB, 10,000 records, 1,000 contacts) catch growing teams off guard, and upsell to higher tiers is not clearly communicated during onboarding.
  • Export limitations force manual workarounds for attachments and email threads — files export individually rather than as a structured archive, making large migrations time-consuming without a direct API.

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 Legrand Cloud CRM objects map to Odoo CRM

Each row shows how a Legrand Cloud 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.

Legrand Cloud CRM

Account

maps to

Odoo CRM

res.partner

1:1
Fully supported

Legrand Account records map to Odoo res.partner with is_company = True. The company name, address fields, phone, website, and account type (Customer/Supplier/Partner) migrate directly. We use the Legrand AccountID as an external reference field (ref) in Odoo for traceability. parent_id is left null on Account records; child Contact records link to these Account partners via parent_id after the Account import completes. Legrand's account type values map to Odoo's partner_properties via a custom field or tag since Odoo does not have a native account_type comparable field.

Legrand Cloud CRM

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

Legrand Contact records map to Odoo res.partner with is_company = False and parent_id pointing to the Account partner created in the prior pass. Full name splits into firstname and lastname per Odoo's name_splitFields convention. Email, phone, mobile, job title, and role map to the corresponding Odoo partner fields. The Contact's parent Account reference is resolved by looking up the Legrand AccountID in the ref field we populated during the Account import pass. Any orphaned Contacts without a valid parent Account are held in a reconciliation queue for the customer to resolve.

Legrand Cloud CRM

Lead Inbox

maps to

Odoo CRM

crm.lead

1:many
Fully supported

Legrand Lead Inbox records (source=Lead) map to Odoo crm.lead with lead_type = lead. The Lead Inbox module captures name, email, phone, source, status, owner, and any custom lead fields. We map Legrand lead status values to Odoo stage names and preserve the original Legrand source value in a custom field x_legrand_source for reporting continuity. If the customer uses Legrand's lead scoring, that value migrates to a custom field x_legrand_lead_score on the crm.lead record.

Legrand Cloud CRM

Opportunity

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Legrand Opportunity records map to Odoo crm.lead with lead_type = opportunity. Expected close date, probability (as a percentage mapped to crm.lead probability), and deal value (expected_revenue) migrate directly. Stage names from Legrand's pipeline map to Odoo stage names, and we pre-create the pipeline stages in Odoo before migration so that stage_name references resolve at import time. Owner assignment migrates by email lookup against Odoo res.users.

Legrand Cloud CRM

Pipeline Stages

maps to

Odoo CRM

crm.stage

lossy
Fully supported

Each named pipeline stage in Legrand's Opportunities module becomes a crm.stage record in Odoo CRM. Stage sequence order, probability percentages, and is_won/is_lost flags are configured in Odoo before any lead or opportunity data imports. The Legrand pipeline name becomes the Odoo crm.team or a tag on the crm.lead if the customer uses multiple pipelines. We pre-register all stage mappings in a staging configuration file that is applied to the Odoo database before the production migration pass.

Legrand Cloud CRM

Sales Quotes (Add-on)

maps to

Odoo CRM

sale.order

1:1
Fully supported

Legrand Sales Quotes (Cloud or On-Premise add-on at $16/user) map to Odoo sale.order records when the Odoo Sale app is active. Quote header fields (customer reference, validity date, payment terms) migrate as sale.order fields. Line items migrate as sale.order.line records with product, quantity, and price. Conversion status (draft/sent/accepted/rejected) maps to Odoo state (draft/sent/sale/lost). The Quote-to-Order linkage is preserved as a note field since the Odoo quote-to-order conversion action is a UI operation that occurs post-migration in the customer's Odoo instance.

Legrand Cloud CRM

Service Desk Tickets (Add-on)

maps to

Odoo CRM

helpdesk.ticket

1:1
Fully supported

Legrand Service Desk ticket records map to Odoo helpdesk.ticket when the Odoo Helpdesk app is active. Board assignment, ticket status, priority, age, and custom fields migrate directly. Linked Asset references from Legrand (if the Asset Tracking add-on is also active) map to maintenance.request records in Odoo with a ticket reference field. Note: Legrand's internal agent comments do not appear in the standard Excel export and require a separate comments report pass before migration cutover. We flag this as a supplemental data pass and treat it as a partial transfer, not a guaranteed 1:1.

Legrand Cloud CRM

Asset Tracking (Add-on)

maps to

Odoo CRM

maintenance.request

1:1
Fully supported

Legrand Asset Tracking records map to Odoo maintenance.request when the Odoo Maintenance app is active. Serial number, linked customer (res.partner), and service history migrate as maintenance.request fields. Custom asset fields from Legrand map to custom fields on the maintenance.request model. The Asset-to-Ticket linkage is preserved as an x_legrand_asset_id text reference field since Odoo's Maintenance app does not natively link maintenance.requests to helpdesk.tickets without a custom field or module extension.

Legrand Cloud CRM

Campaign

maps to

Odoo CRM

utm.campaign

1:1
Fully supported

Legrand Campaign records (name, type, status, target member count) map to Odoo utm.campaign. Campaign member associations export as a separate sheet from Legrand and merge into Odoo's utm.membership or a custom campaign member model depending on whether the customer licenses the Odoo Marketing app. If Marketing is not active, we create a custom campaign member table (x_campaign_member) with lead/partner reference and membership status.

Legrand Cloud CRM

Document

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Legrand document files export as individual files per record rather than a contiguous folder archive. We script a bulk-rename pass to prefix each file with the parent record's Legrand ID (AccountID or ContactID) so that files can be associated to the correct res.partner or crm.lead during Odoo import. The folder hierarchy is not preserved by Legrand's export; we reconstruct it from document metadata where available. In Odoo, files attach to the parent record (res.partner or crm.lead) via ir.attachment with res_model and res_id fields set to the target model and record ID.

Legrand Cloud CRM

Activities (Email/Calendar)

maps to

Odoo CRM

mail.activity

1:1
Fully supported

Legrand's Outlook and Gmail integration stores email threads and calendar entries that export as individual text files per activity rather than threaded conversations. We separate email bodies from attachments, ingest the email text as Odoo mail.message records linked to the res.partner or crm.lead, and attach files as ir.attachment. Calendar events migrate to mail.activity with activity_type_id set to the Odoo default Meeting type and ActivityDate matching the original Legrand timestamp. Meeting location and attendee list are stored as activity fields or custom fields since Odoo's native activity model does not include an attendee list without the calendar module.

Legrand Cloud CRM

Custom Fields

maps to

Odoo CRM

ir.model.fields

lossy
Mapping required

Legrand custom fields per module (Accounts, Contacts, Opportunities, Lead Inbox) are audited during discovery. Each custom field is mapped to an Odoo ir.model.fields custom field on the corresponding model (res.partner or crm.lead). Field data type translation: Legrand text and textarea map to char or text; picklist maps to selection; date maps to date; number maps to float or integer; checkbox maps to boolean. We pre-create the custom field schema in Odoo before any data import so that the import pass includes the custom field columns. Custom field naming follows Odoo's x_ prefix convention for non-studio fields.

Legrand Cloud CRM

Owner

maps to

Odoo CRM

res.users

1:1
Fully supported

Legrand Owner (user) records referenced on Account, Contact, Opportunity, and Ticket exports are resolved by email match against Odoo res.users in the destination database. Any Legrand Owner without a matching Odoo user is placed in a reconciliation queue for the customer's admin to provision before the production migration pass continues. Owner assignment on crm.lead migrates as user_id in Odoo. This step gates the Opportunity and Ticket import phases since user_id is required on those models.

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.

Legrand Cloud CRM logo

Legrand Cloud CRM gotchas

High

No public API for Cloud CRM migration automation

High

Storage and record tier limits gate import scope on Cloud Starter

Medium

Attachment and email exports are per-record, not bulk

Medium

On-Premise migration and implementation costs are excluded from the per-user license

Low

Service Desk internal comments do not export via standard Excel export

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

  • Legrand Cloud has no API; migration relies on manual Excel export per module

    Legrand Cloud CRM does not expose a publicly documented REST or GraphQL API for automated data extraction. All migration passes use Legrand's built-in Excel export, which requires a manual login-and-export step per module. We coordinate with the customer's Legrand admin to run the export in dependency order (Accounts first, then Contacts, then Opportunities, then subordinate objects), validate record counts against our reconciliation log, and repeat any failed module passes before proceeding. The absence of an API also means incremental delta exports during cutover require the admin to manually re-run the export; we freeze Legrand writes during the cutover window to minimize delta volume.

  • Odoo uses a unified crm.lead model requiring Lead-Opportunity split translation

    Odoo CRM conflates Leads and Opportunities in a single crm.lead table with a lead_type field (lead vs opportunity) and a stage_name field for pipeline position. Legrand maintains separate Lead Inbox and Opportunities as distinct modules. We pre-create Odoo pipeline stages to match Legrand's pipeline schema, then translate Legrand source records at migration time: Lead Inbox records become crm.lead with lead_type = lead; Opportunity records become crm.lead with lead_type = opportunity. The stage_name mapping is critical — if a Legrand stage name has no corresponding Odoo stage, the import fails or the record lands in an unintended stage. We configure the full stage map before any data touches Odoo.

  • Legrand Cloud Starter record limits may constrain export scope

    Legrand Cloud Starter caps at 1,000 Contacts, 10,000 Records, and 500MB of storage. If the customer's dataset exceeds these limits, the Excel export truncates or fails silently. We scope the migration volume during discovery against the Starter limits and flag any object that exceeds the tier before scheduling. The customer must either upgrade to Standard or Professional (which raise limits to 5,000 and 8,000 Contacts per user respectively), or trim the dataset to fit the tier. We do not proceed with a migration scope that exceeds the source tier's limits because truncated exports produce incomplete data in Odoo.

  • Documents export as individual files per record, not a folder archive

    Legrand's Documents module exports files individually per record rather than as a contiguous folder hierarchy. A Contact with 12 attachments produces 12 separate download events with no native folder structure. We script a bulk-rename pass to prefix each file with the parent record's Legrand ID (AccountID or ContactID) so that files can be associated to the correct res.partner during import. The folder hierarchy is not preserved by the export tool and must be reconstructed manually from document metadata. This adds a non-trivial scripting step for migrations with large attachment volumes, and the customer should budget extra time for this pass.

  • Service Desk internal agent comments do not appear in standard Excel export

    The Legrand Knowledge Base documents a standard Excel export path for Service Desk tickets, but internal agent comments are stored in a separate data partition and do not appear in the standard export. We advise customers to run a separate comments report before migration cutover and treat comment history as a supplemental data pass. The comments transfer is not guaranteed as a 1:1 mapping because the export mechanism is non-standard. If the customer requires full comment history in Odoo Helpdesk, they should flag this during scoping so that we can design a custom extraction approach from Legrand's browser-accessible data layer.

Migration approach

Six steps for a successful Legrand Cloud CRM to Odoo CRM data migration

  1. Discovery and data audit

    We audit the source Legrand Cloud CRM portal across tier (Starter/Standard/Professional), active modules, custom fields per module, pipeline count, attachment volume, and active add-on usage (Quotes, Service Desk, Asset Tracking). We extract a full record count per module from Legrand's built-in export log and compare against the tier's storage and record limits to confirm the dataset fits within the current tier or identify which tier upgrade is needed. We produce a written migration scope document that lists every object, its record count, its export mechanism (standard Excel vs supplemental comments pass), and any tier-constraint flags.

  2. Odoo configuration and stage design

    We configure the destination Odoo CRM before any data arrives. This includes activating the CRM app and any required Odoo apps (Sale, Helpdesk, Maintenance) based on the migration scope, pre-creating pipeline stages that mirror Legrand's stage names and probabilities, designing the custom field schema on res.partner and crm.lead to receive Legrand's custom field data, and configuring the utm.campaign structure for any Campaign data. Configuration is deployed in an Odoo sandbox or development database for validation before production migration begins.

  3. Export sequencing and bulk-rename scripting

    We coordinate the Legrand export pass with the customer's admin, executing in dependency order: Accounts (with all fields), Contacts (with parent Account linkage preserved), Opportunities (with stage names), then Lead Inbox records, Quotes, Service Desk Tickets, Assets, and Campaigns. Attachment files are bulk-renamed with parent-record ID prefixes during a separate scripting pass. Internal Service Desk comments are extracted via a supplemental report. Each export pass produces a reconciliation row-count report that we compare against the discovery audit before proceeding.

  4. Sandbox migration and mapping validation

    We run a full migration into the Odoo sandbox database using production-equivalent record volumes. The customer's Odoo admin reconciles record counts (partners in, leads in, opportunities in, tickets in), spot-checks 25-50 records per object against the Legrand source for field accuracy and linkage integrity, and validates the pipeline stage assignments. Any field mapping corrections, stage name adjustments, or custom field schema changes happen in sandbox before the production migration begins. We do not proceed to production migration without a signed sandbox validation from the customer's admin.

  5. Owner and user provisioning reconciliation

    We extract every distinct Legrand Owner referenced on Accounts, Contacts, Opportunities, and Tickets and match by email against the Odoo res.users table. Any Legrand Owner without a matching Odoo User is placed in a reconciliation queue. The customer's Odoo admin provisions missing users and sets their access rights before the production migration pass. Owner resolution gates the Opportunity and Ticket import phases because user_id is a required field on crm.lead and helpdesk.ticket in Odoo.

  6. Production migration in dependency order

    We run the production migration in record-dependency order: res.partner (Accounts with is_company=True), res.partner (Contacts with parent_id resolved), crm.lead (Lead Inbox and Opportunities with stage_name and user_id resolved), sale.order (Quotes), helpdesk.ticket (Service Desk), maintenance.request (Assets), utm.campaign (Campaigns), ir.attachment (documents with bulk-rename applied), and mail.activity (email and calendar history). Each phase emits a row-count reconciliation report before the next phase begins. Incremental delta exports for records modified during the migration window are merged before cutover.

  7. Cutover, validation, and automation rebuild handoff

    We freeze Legrand write access during the cutover window, run a final delta pass for any records modified during migration, then mark Odoo as the system of record. We deliver a written inventory of every Legrand workflow, automation, and sequence configuration with Odoo Studio equivalents documented for the customer's admin to rebuild. We do not rebuild Legrand automations as Odoo server actions or automated actions within the migration scope; that work is handled by the customer's admin or an Odoo implementation partner. We provide a one-week hypercare window for reconciliation issues raised by the sales or service team.

Platform deep dives

Context on both ends of the pair

Legrand Cloud CRM logo

Legrand Cloud CRM

Source

Strengths

  • Outlook and Gmail email integration with CRM panel inside the email client keeps sales activity logged without copy-paste friction.
  • Deep accounting integrations with QuickBooks Online, XERO, MYOB, and QuickBooks Enterprise reduce dual-entry work for finance-adjacent teams.
  • Configurable per-module custom fields and pipeline stages let businesses model their exact sales process rather than bending to a fixed template.
  • Dual deployment options (Cloud for remote teams, On-Premise for data-sovereignty requirements) serve SMBs with mixed IT postures.
  • Service Desk and Asset Tracking add-ons give B2B companies a single system for pre-sale pipeline and post-sale support without buying a separate helpdesk.

Weaknesses

  • No publicly documented API for Cloud CRM limits automation to Zapier, email integration, or manual export workflows, which creates risk for growing teams that need programmatic data access.
  • User interface is described as dated and lacking the polish of modern SaaS CRMs, which affects team adoption and onboarding speed for new employees.
  • Storage and record limits on lower Cloud tiers (500MB, 10,000 records) constrain larger migrations and require careful scoping before any data transfer begins.
  • On-Premise pricing is opaque — the published per-user rate excludes installation, migration, integration, and training, which add significant project cost beyond the subscription.
  • Knowledge base and documentation are limited to basic export and field-add instructions; deep API references, schema diagrams, and migration playbooks are not publicly available.
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. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Legrand Cloud CRM and Odoo CRM.

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • 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

    Legrand Cloud CRM: Not publicly documented.

  • Data volume sensitivity

    B

    Legrand Cloud CRM doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Legrand Cloud CRM 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 Legrand Cloud CRM to Odoo CRM data migrations

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

Can't find your answer?

Walk through your Legrand Cloud CRM to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Straightforward migrations under 15,000 Contacts and 3,000 Opportunities with no add-on modules complete in four to six weeks. Migrations with the Service Desk add-on, Asset Tracking data, large attachment volumes (over 50,000 files), or complex custom field schemas across multiple modules extend to eight to twelve weeks because of the per-record export constraint, bulk-rename scripting, and Odoo stage configuration scope. The Legrand tier also matters: Starter customers who need to upgrade before exporting will add one to two weeks to the discovery and tier-upgrade phase.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Legrand Cloud CRM.
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