CRM migration
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
Source
Twenty CRM
Destination
Compatibility
9 of 12
objects map 1:1 between Legrand Cloud CRM and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
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.
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 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
Twenty CRM
Company
1:1Legrand 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
Twenty CRM
People
1:1Legrand 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)
Twenty CRM
People
1:1Legrand'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
Twenty CRM
Opportunity
1:1Legrand 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
Twenty CRM
Opportunity Stage
lossyEach 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)
Twenty CRM
Task or Note
1:manyLegrand'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
Twenty CRM
File Attachments (re-upload required)
lossyTwenty'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
Twenty CRM
Task or Custom Object
1:1Legrand 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
Twenty CRM
Custom Object (Quote)
1:1Legrand 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
Twenty CRM
Custom Object (Asset)
1:1Legrand 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
Twenty CRM
Custom Object (Campaign)
1:1Legrand 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
Twenty CRM
Custom Object (Job)
1:1Legrand'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.
| Legrand Cloud CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Accounts | Company1:1 | Fully supported | |
| Contacts | People1:1 | Fully supported | |
| Leads (Lead Inbox) | People1:1 | Mapping required | |
| Opportunities | Opportunity1:1 | Fully supported | |
| Pipeline Stages | Opportunity Stagelossy | Fully supported | |
| Activities (Calendar/Emails) | Task or Note1:many | Mapping required | |
| Documents | File Attachments (re-upload required)lossy | Mapping required | |
| Service Desk Tickets | Task or Custom Object1:1 | Mapping required | |
| Sales Quotes | Custom Object (Quote)1:1 | Mapping required | |
| Assets | Custom Object (Asset)1:1 | Mapping required | |
| Campaigns | Custom Object (Campaign)1:1 | Fully supported | |
| Jobs | Custom Object (Job)1: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.
Legrand Cloud CRM gotchas
No public API for Cloud CRM migration automation
Storage and record tier limits gate import scope on Cloud Starter
Attachment and email exports are per-record, not bulk
On-Premise migration and implementation costs are excluded from the per-user license
Service Desk internal comments do not export via standard Excel export
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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.
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
Legrand Cloud CRM
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Legrand Cloud CRM and Twenty CRM.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
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
Legrand Cloud CRM: Not publicly documented.
Data volume sensitivity
Legrand Cloud CRM doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Legrand Cloud CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Legrand Cloud CRM
Other ways to arrive at Twenty 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.