CRM migration
Field-level mapping, validation, and rollback between Exsalerate and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Exsalerate
Source
Twenty CRM
Destination
Compatibility
8 of 10
objects map 1:1 between Exsalerate and Twenty CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Exsalerate to Twenty CRM is a migration from a flat, account-centric CRM built for ANZ professional services teams to a normalised, open-source platform modelled on Salesforce's object structure. Exsalerate holds Accounts as the primary entity with Opportunities tied directly to pipeline stages; Twenty CRM separates Companies from People (Contacts) and uses Opportunities with a stage field. We resolve that schema difference during scoping, preserve the Exsalerate Account-Contact relationship, and map pipeline stages to Twenty CRM's Opportunity stage values. Exsalerate has no public REST API or bulk export endpoint, so we rely on its built-in CSV export with multi-file reconciliation and, where available, direct database access. WorkflowMax quote cross-references embedded in Exsalerate Opportunities have no native equivalent in Twenty CRM — we store them as a custom field on each Opportunity record and flag them for manual relinking. Colour-coded activity tiles migrate as Tasks with the original colour value in a custom metadata field. Workflows, automations, and Xero/WorkflowMax sync configurations do not migrate; we deliver a written inventory of every active Exsalerate automation for the customer's admin to rebuild in Twenty CRM or via its REST API.
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 Exsalerate 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.
Exsalerate
Account
Twenty CRM
Company
1:1Exsalerate Accounts map directly to Twenty CRM Company records. The Account name becomes the Company name, and contact details, owner assignment, and custom properties map field-to-field. Company is the first object imported because it satisfies the lookup dependency for Contacts, Opportunities, and activity records. We use the Company domain or name as the dedupe key during import to prevent duplicate records.
Exsalerate
Contact
Twenty CRM
Person
1:1Exsalerate Contacts map to Twenty CRM Person records. The Account-Contact relationship is preserved by linking each Person to the migrated Company record via a lookup field. We run duplicate detection across the contact set before import using email as the primary key. Any contacts without email addresses are flagged for the customer's admin to resolve manually before the migration phase begins.
Exsalerate
Opportunity
Twenty CRM
Opportunity
1:1Exsalerate Opportunities map directly to Twenty CRM Opportunity records. The Opportunity name, value (amount), expected close date, owner, and associated Pipeline Stage migrate field-to-field. The Exsalerate Pipeline Stage becomes the Twenty CRM Stage value. Closed-won and closed-lost reasons from Exsalerate custom properties migrate as text fields on the Opportunity. WorkflowMax quote cross-references embedded as custom attributes on Exsalerate Opportunities are stored in a custom field (workflowmax_quote_ref__c) on the Twenty CRM Opportunity and flagged for manual relinking if the customer needs to restore the project management connection.
Exsalerate
Pipeline
Twenty CRM
Pipeline (via Stage + custom grouping)
lossyExsalerate Pipelines are top-level named containers for sales activity. Twenty CRM does not have a separate Pipeline object; instead, pipeline groupings are achieved through stage labels and optional workspace view filters. We map each Exsalerate Pipeline name to a set of Opportunity Stage values prefixed with the pipeline name (for example, 'Enterprise: Proposal Sent') to preserve the pipeline context. The customer configures workspace views in Twenty CRM to filter by pipeline prefix after migration.
Exsalerate
Pipeline Stage
Twenty CRM
Opportunity Stage
lossyExsalerate Pipeline Stages (ordered labels such as Qualified, Proposal Sent, Negotiation) map to Twenty CRM Stage picklist values. Stage order and probability percentages are preserved. The colour metadata attached to stages in Exsalerate (used for visual tile encoding) is stored in a custom field on the Opportunity record for reference. Stage-level automation triggers do not migrate — we document each Exsalerate stage trigger in the automation inventory deliverable.
Exsalerate
To-Do Item
Twenty CRM
Task
1:1Exsalerate's colour-coded activity tiles (the to-do model) map to Twenty CRM Task records. Due date, status, owner, and description migrate field-to-field. The tile colour value is stored in a custom Task field (activity_tile_colour__c) to preserve the urgency and context encoding that Exsalerate users relied on. This custom field is created during schema preparation before the task import phase begins.
Exsalerate
Email Activity
Twenty CRM
Timeline Entry
1:1Exsalerate email history associated to Accounts and Contacts migrates to Twenty CRM Timeline Entries with subject, body (plain text), timestamp, sender, and recipients preserved. Attachments are handled as file migrations outside the record migration scope. Email threading relationships from Exsalerate are not preserved as Twenty CRM does not have a native email threading model; however, the chronological sequence of emails per contact is maintained through the ActivityDate timestamp.
Exsalerate
Custom Fields (Accounts, Contacts, Opportunities)
Twenty CRM
Custom Fields (Company, Person, Opportunity)
1:1Custom fields on Exsalerate Accounts, Contacts, and Opportunities are migrated with field-type awareness. Picklist values are normalised to the destination picklist format. Date formats are converted to ISO 8601. Numeric precision is preserved. Any Exsalerate custom field that does not have a direct Twenty CRM equivalent is created as a custom field in the Twenty CRM workspace during schema preparation. Fields with no equivalent object in Twenty CRM (for example, Exsalerate-specific accounting references) are stored as text custom fields and flagged for review.
Exsalerate
User / Owner
Twenty CRM
Workspace Member
1:1Exsalerate user accounts map to Twenty CRM workspace members. We create a user mapping table during scoping using email as the matching key. Any Exsalerate Owner without a matching Twenty CRM workspace member is held in a reconciliation queue for the customer's admin to provision before record import resumes. Inactive Exsalerate users are assigned to a placeholder owner record in Twenty CRM with a custom field indicating their inactive status.
Exsalerate
WorkflowMax Quote Imports (Opportunity cross-reference)
Twenty CRM
Custom Field on Opportunity
1:1Where Exsalerate Opportunities were created from WorkflowMax quotes, a cross-reference attribute links the Opportunity to the originating WorkflowMax job. This linkage is not a standard CRM field — it is a custom attribute that we detect during scoping. We store the WorkflowMax job reference identifier in a custom text field (workflowmax_job_ref__c) on the migrated Twenty CRM Opportunity. The customer rebuilds the WorkflowMax connection manually after migration using the stored reference, or excludes this field if the WorkflowMax relationship is being discontinued.
| Exsalerate | Twenty CRM | Compatibility | |
|---|---|---|---|
| Account | Company1:1 | Fully supported | |
| Contact | Person1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Pipeline | Pipeline (via Stage + custom grouping)lossy | Fully supported | |
| Pipeline Stage | Opportunity Stagelossy | Fully supported | |
| To-Do Item | Task1:1 | Fully supported | |
| Email Activity | Timeline Entry1:1 | Fully supported | |
| Custom Fields (Accounts, Contacts, Opportunities) | Custom Fields (Company, Person, Opportunity)1:1 | Fully supported | |
| User / Owner | Workspace Member1:1 | Fully supported | |
| WorkflowMax Quote Imports (Opportunity cross-reference) | Custom Field on Opportunity1: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.
Exsalerate gotchas
WorkflowMax quote-to-opportunity linkage is not a standard CRM field
Exsalerate has no publicly documented bulk export or API endpoint
Colour-coded to-do tiles do not map to standard CRM task priorities
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 export method confirmation
We audit the source Exsalerate deployment across Accounts, Contacts, Pipelines, Stages, Opportunities, To-Do items, email activities, custom fields, and user count. We confirm the CSV export method directly with the customer — identifying which objects are available in a single export file versus multiple files. We also identify whether any WorkflowMax quote cross-references are present in the Opportunity export. The discovery output is a written migration scope with a confirmed export path and a list of any data that cannot be extracted from Exsalerate's CSV export.
Twenty CRM workspace provisioning and schema design
We provision the Twenty CRM workspace (SaaS or self-hosted) and design the target schema. This includes creating custom fields for WorkflowMax references, activity tile colour values, and any Exsalerate custom fields without direct equivalents. We map each Exsalerate Pipeline to a set of stage prefixes in Twenty CRM and configure the Opportunity stage picklist. The schema is validated in a staging environment before production migration begins.
CSV extraction, reconciliation, and data cleaning
We extract data from Exsalerate using the confirmed CSV export method. We reconcile multiple export files by matching Exsalerate internal record IDs and foreign key references across Accounts, Contacts, and Opportunities. We clean the data: normalising date formats, resolving picklist values, detecting duplicates on email address for Contacts, and flagging any records with missing required fields. The reconciliation output is a row-count report per object with a list of records held for manual resolution.
Production migration in dependency order
We run production migration in record-dependency order: Companies first (from Exsalerate Accounts), then Persons (from Exsalerate Contacts with CompanyId resolved), then Opportunities (with Stage resolved and WorkflowMax quote references stored in custom fields), then Tasks (with activity tile colour in a custom field), then Timeline Entries for email history. Each phase emits a row-count reconciliation report. Owner resolution maps Exsalerate owners to Twenty CRM workspace members by email match, with any unresolved owners held in a reconciliation queue.
Cutover, validation, and automation inventory delivery
We freeze Exsalerate writes during cutover, run a final delta migration of any records modified during the migration window, then enable Twenty CRM as the system of record. We validate record counts, spot-check 25-50 records against the Exsalerate source, and confirm that Opportunity stage distributions match. We deliver the automation inventory document to the customer's admin team, listing every active Exsalerate workflow, pipeline rule, and automation trigger with a recommended Twenty CRM equivalent. We support a one-week hypercare window for reconciliation issues.
Post-migration handoff and workflow rebuild support
We do not rebuild Exsalerate automations, Xero integrations, or WorkflowMax sync connections inside the migration scope. We deliver a written handoff document that includes the full object mapping, the automation inventory, and the WorkflowMax reference list for manual relinking. The customer's admin or a technical partner rebuilds Exsalerate workflows using Twenty CRM's REST API or any automation tooling the customer chooses. We offer a separate engagement scope for workflow rebuild if the customer requires FlitStack AI to handle that work.
Platform deep dives
Exsalerate
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 Exsalerate 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
Exsalerate: Not publicly documented..
Data volume sensitivity
Exsalerate 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 Exsalerate to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Exsalerate 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 Exsalerate
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.