CRM migration

Migrate from Legrand Cloud CRM to Twenty CRM

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

Legrand Cloud CRM logo

Legrand Cloud CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

75%

9 of 12

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

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Legrand Cloud CRM to Twenty CRM is a migration from a proprietary SMB platform with no public API to an open-source, self-hostable CRM backed by Y Combinator. Legrand Cloud CRM exports data through its built-in Excel export function per module, with no REST or GraphQL API available for automated extraction. Twenty CRM accepts CSV imports via its Data Model settings, requiring all custom fields to be created before any record import, and its documentation explicitly states that file attachments are not included in CSV exports and must be re-uploaded manually. We work around Legrand's export constraints by sequencing the browser-layer extraction in dependency order (Accounts first, then Contacts, then Opportunities, then activities), scripting bulk-rename passes to preserve attachment-to-record associations, and resolving Twenty's user invitations before importing any record with an Owner reference. Workflows, sequences, and automations do not migrate; we deliver a written inventory of every Legrand workflow and automation requiring rebuild in Twenty's settings.

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

Twenty CRM logo

Twenty CRM

What's pulling them in

  • Top open-source CRM on GitHub with 40.6K stars, giving teams full source code access and infrastructure ownership without per-feature licensing surprises.
  • Free self-hosting under AGPL-3.0 means unlimited users and custom objects for the cost of cloud infrastructure alone, typically $20–100/month.
  • Pricing page explicitly mocks competitors for charging add-on fees for API access, webhooks, and workflows — transparency that resonates with RevOps teams burned by Salesforce.
  • Unlimited custom objects and fields with no price impact, letting teams shape the data model to their business rather than forcing business into rigid schemas.
  • Modern TypeScript/React/PostgreSQL stack means developer-led teams can extend, self-host, or integrate without fighting legacy architecture.

Object mapping

How Legrand Cloud CRM objects map to Twenty CRM

Each row shows how a Legrand Cloud CRM object lands in Twenty 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

Accounts

maps to

Twenty CRM

Company

1:1
Fully supported

Legrand Account records export cleanly via the built-in Excel export with standard address, type, and owner fields intact. We ingest Companies first in Twenty so that subsequent People imports can resolve the CompanyId lookup. Legrand's Account type (Customer, Prospect, Partner, Competitor) maps to Twenty's Company domain field, and the Account phone number maps to Company phone. Account addresses split into street, city, state, country, and postal code fields per Twenty's structured address schema.

Legrand Cloud CRM

Contacts

maps to

Twenty CRM

People

1:1
Fully supported

Legrand Contact records map directly to Twenty People. The CSV preserves the parent Account linkage, which we resolve to the Twenty CompanyId lookup at migration time. Legrand's role and title fields map to Twenty's jobTitle and companyName (if the contact record holds a different company from the linked Account). Email uniqueness is enforced in Twenty during import so we deduplicate by email before insertion.

Legrand Cloud CRM

Leads (Lead Inbox)

maps to

Twenty CRM

People

1:1
Mapping required

Legrand's Lead Inbox module maps to Twenty People with a custom field legrand_lead_source__c carrying the original lead source value. Lead status from Legrand (New, Contacted, Qualified, Disqualified) maps to Twenty's opportunities with a custom status field. Unqualified leads land as Twenty People records without an associated Opportunity; qualified leads that have moved to a pipeline stage create a linked Opportunity in Twenty.

Legrand Cloud CRM

Opportunities

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Legrand Opportunity records map to Twenty Opportunity. The pipeline stage name from Legrand becomes a custom stage value in Twenty's Opportunity stage field, and we note that Twenty does not ship with an automated incremental numbering system for Opportunity IDs — teams expecting auto-generated deal numbers from Legrand must configure a custom numbering approach in Twenty or accept manual entry. Stage probability percentages migrate as custom fields since Twenty's standard Opportunity object does not include probability by default.

Legrand Cloud CRM

Pipeline Stages

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

Each Legrand pipeline becomes a Twenty Opportunity with stage values defined in Settings Data Model before import. We create stage picklist values matching the Legrand stage names so that historical stage names are preserved and teams can report on the original pipeline labels in Twenty reporting.

Legrand Cloud CRM

Activities (Calendar/Emails)

maps to

Twenty CRM

Task or Note

1:many
Mapping required

Legrand's email and calendar integration exports as individual text files per activity rather than threaded conversations. We split email bodies into Twenty Note records (the actual content) and Task records (the activity timeline entry) linked to the parent People or Company record. Call disposition, duration, and meeting details migrate as Task records with the appropriate activity type marker. The split preserves the activity timestamp for timeline ordering.

Legrand Cloud CRM

Documents

maps to

Twenty CRM

File Attachments (re-upload required)

lossy
Mapping required

Twenty's CSV import documentation explicitly states that file attachments are not included in exports and must be re-uploaded manually or migrated via API. Legrand exports documents as individual files per record with the ContactID filename prefix. We script a bulk-rename pass to reconstruct the parent record association from filenames, then deliver the organized file set alongside the migration so that the customer's admin can re-upload via Twenty's file attachment UI or API. The folder hierarchy is not preserved by Legrand's export; we reconstruct it from metadata where available.

Legrand Cloud CRM

Service Desk Tickets

maps to

Twenty CRM

Task or Custom Object

1:1
Mapping required

Legrand Service Desk tickets (an add-on module at $15 per user per month on On-Premise) map to Twenty Task records with a custom ticket status field or to a custom ServiceTicket object if the customer has configured one. Ticket board assignment becomes a custom picklist value, and ticket age and custom fields migrate as custom fields on the target object. Internal agent comments do not export via Legrand's standard Excel export; we flag this gap and recommend a separate comments report run before migration cutover.

Legrand Cloud CRM

Sales Quotes

maps to

Twenty CRM

Custom Object (Quote)

1:1
Mapping required

Legrand Sales Quotes (an add-on at $16 per user per month on On-Premise; available on Cloud with line items and revision history) map to a custom Quote object in Twenty. Quote-to-Order linkage is preserved as a custom text field. The conversion status and revision number migrate as custom fields on the Quote object since Twenty's standard Opportunity object does not include a native quote module.

Legrand Cloud CRM

Assets

maps to

Twenty CRM

Custom Object (Asset)

1:1
Mapping required

Legrand Asset Tracking (an add-on at $10 per user per month on On-Premise) maps to a custom Asset object in Twenty. Serial number, linked customer, service history, and custom fields migrate as structured fields on the custom object. Asset-to-Ticket linkage is preserved as a text reference field pointing to the migrated Service Desk ticket identifier.

Legrand Cloud CRM

Campaigns

maps to

Twenty CRM

Custom Object (Campaign)

1:1
Fully supported

Legrand Campaign records export with name, type, status, and target member count. Campaign member associations export as a separate sheet. We create a custom Campaign object in Twenty and map member associations to CampaignParticipant records linked to the Campaign custom object. Campaign member status (Sent, Responded, Opted Out) migrates as a custom status field.

Legrand Cloud CRM

Jobs

maps to

Twenty CRM

Custom Object (Job)

1:1
Fully supported

Legrand's optional Jobs module (Cloud CRM and add-on on On-Premise) maps to a custom Job object in Twenty with status, assigned user, and linked customer as structured fields. Job status values migrate as picklist values in Twenty's custom object definition. The Jobs module is the least common add-on and customers without it have no Jobs object to migrate.

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

Twenty CRM logo

Twenty CRM gotchas

High

Import order is enforced and critical

High

Export limited to 20,000 records and visible columns only

Medium

Soft-deleted records count toward uniqueness and trigger restores

Medium

API rate limits cap at 200 req/min on Organization tier

Low

No native email sequences — follow-up cadences require external tools

Pair-specific challenges

  • Legrand Cloud CRM has no public API for automated extraction

    Legrand Cloud CRM has no publicly documented REST or GraphQL API, which means all data extraction relies on the built-in browser-layer export and Excel download function. We work around this by using the export per module in dependency order (Accounts first, then Contacts, then Opportunities), validating record counts against the export log after each pass. Customers expecting API-based migration tooling will not find it here. The migration scope must be scoped to what the manual export pass can produce within the customer's chosen window, and large attachment volumes require a separate bulk-rename choreography before re-upload.

  • Twenty CSV import does not include file attachments

    Twenty's documentation explicitly states that file attachments are not included in CSV exports and must be re-uploaded manually or migrated via API. Legrand exports documents as individual files per record without a folder hierarchy. We script a bulk-rename pass to tag each file with the parent record identifier, reconstruct the association from filenames, and deliver the organized file set for manual re-upload. Customers with large document volumes (hundreds of files per contact or account) should plan for a separate file migration pass or API-based upload after the main record migration.

  • Custom fields must exist in Twenty before CSV import

    Twenty's CSV import creates records, not fields. All custom fields must be created in Settings Data Model before any import begins. Legrand's custom field schema is audited per module during discovery, and we create matching custom fields in Twenty before importing any records. Fields that do not exist at import time are silently skipped. This is a sequencing dependency that requires the Twenty workspace to be fully configured before any data moves.

  • Service Desk internal comments do not export via standard Excel export

    Legrand's 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 from the Service Desk module before migration cutover and treat comment history as a supplemental data pass rather than a guaranteed 1:1 transfer. Without the separate report, agent commentary history will be absent from Twenty after migration.

  • Users must be invited to Twenty before importing Owner-linked records

    Twenty requires that users exist in the workspace before any record with an Owner lookup can be mapped. If a Legrand Owner record references a user who has not accepted a Twenty invitation, the OwnerId field cannot be resolved and the import fails or leaves records unassigned. We extract all distinct Legrand Owner emails during discovery, confirm the customer has invited those users to Twenty before the main import phase, and hold records with unresolved owners in a reconciliation queue for admin provisioning before resuming.

Migration approach

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

  1. Discovery and Legrand export choreography

    We audit the source Legrand Cloud CRM account across tier (Starter, Standard, Professional, or On-Premise add-ons), active modules, custom fields per module, pipeline count, attachment volume, and any Service Desk or Asset Tracking add-on usage. We map every Legrand module to a Twenty object or custom object and identify any fields that require custom field creation in Twenty before import. We confirm whether the customer has run the separate Service Desk comments report and whether the Jobs module is active. The discovery output is a written migration scope, a Legrand export checklist per module, and a Twenty Data Model pre-creation checklist.

  2. Twenty workspace pre-configuration

    We configure the Twenty workspace before importing any records. This includes creating all standard objects (Company, People, Opportunity), creating any custom objects (Quote, Asset, ServiceTicket, Campaign, Job) referenced in the migration scope, adding all custom fields to standard and custom objects, defining picklist values for pipeline stages and status fields, and inviting all team members who appear as Legrand Owners so that Owner lookups resolve at import time. Twenty's requirement that fields exist before import is enforced here; any missing custom field causes silent field skips during import.

  3. Legrand data export in dependency order

    We guide the customer through the Legrand export in the correct dependency sequence: Accounts (Companies) first, then Contacts (People), then Opportunities, then Lead Inbox records, then Activities split into Tasks and Notes, then Campaign records and CampaignMember associations, then Quotes, then Service Desk tickets, then Assets, then Jobs. Each export produces a CSV that we validate against the export log for record count accuracy before the next module export begins. Attachments are exported separately and the bulk-rename pass tags each file with its parent record identifier for re-association in Twenty.

  4. Data transformation and field mapping

    We transform each Legrand CSV into Twenty's import format. This includes splitting the Activities export into separate Task and Note CSV files, mapping Legrand's pipeline stage names to Twenty custom stage values, splitting the Contacts export into People records with CompanyId lookups resolved via the Companies import pass, mapping Lead Inbox records to People with a custom lead source field, splitting Deals into Opportunity records with custom probability fields, and mapping custom field values to Twenty's picklist formats. The transform output is a set of clean CSVs ready for Twenty's import wizard.

  5. Twenty import in dependency order

    We run Twenty imports in record-dependency order: Companies first (parent records), then People (with CompanyId resolved), then Opportunities (with CompanyId and OwnerId resolved), then custom objects (Quote, Asset, ServiceTicket, Campaign, Job), then Tasks and Notes (with linked People and Company records). Each phase emits a row-count reconciliation report. Owner lookups that cannot resolve go to a reconciliation queue for the customer's admin to provision missing Twenty users before the next phase. Attachments are delivered as an organized file set with parent record tagging for manual re-upload.

  6. Cutover, validation, and workflow inventory handoff

    We freeze Legrand writes during cutover, run a final delta migration of any records modified during the migration window, then enable Twenty as the system of record. We deliver a written inventory of every Legrand workflow, automation, and sequence with its trigger, conditions, and actions for the customer's admin to rebuild in Twenty. We do not rebuild workflows as code; that work is a separate engagement or an internal admin task. We support a one-week post-cutover window to resolve record reconciliation issues raised by the customer's 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.
Twenty CRM logo

Twenty CRM

Destination

Strengths

  • AGPL-3.0 open-source license with full source code on GitHub — no vendor lock-in, no sunset risk.
  • Unlimited users and unlimited custom objects on self-hosted, with no feature gating based on headcount.
  • REST and GraphQL APIs available on all paid tiers, not locked behind an enterprise add-on fee.
  • MCP server and webhooks shipped as standard features, not premium upgrades.
  • Modern PostgreSQL-backed data model that developer teams can query, extend, and self-host.

Weaknesses

  • Recent v1.0 release means limited production hardening compared to CRMs with multi-year operational track records.
  • No native email sequencing or sales engagement tools — follow-up cadences require a separate platform.
  • No native two-way email sync or inbox integration, requiring third-party connectors for full activity logging.
  • Self-hosting 'free' pricing hides real infrastructure and DevOps costs that stack up over time.
  • Workflow automation is functional but lacks the complexity needed for sophisticated multi-step sales motions.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 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 Twenty CRM.

  • Object compatibility

    B

    2 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 Twenty 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 Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts under 10,000 records with no add-on modules (Service Desk, Asset Tracking, Quotes) and clean standard field schemas. Migrations with add-on modules, large attachment volumes (requiring bulk-rename and re-upload choreography), or custom field schemas exceeding twenty fields move to eight to twelve weeks because of the manual export choreography, attachment reconstruction, and Twenty custom field pre-creation work. The lack of a Legrand public API means the export phase is manual per module and cannot be parallelized.

Adjacent paths

Related migrations to explore

Ready when you are

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