CRM migration
Field-level mapping, validation, and rollback between ASPEC and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
ASPEC
Source
Twenty CRM
Destination
Compatibility
8 of 11
objects map 1:1 between ASPEC and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from ASPEC CRM to Twenty CRM is a migration from a compact, single-tenant platform with no documented API to an open-source CRM with a modern REST API and active GitHub community. The primary structural challenge is that ASPEC has no public API for automated data extraction, so we coordinate with the customer to extract data through the platform UI or direct database access before any migration work begins. ASPEC also separates custom field definitions from record data in a distinct metadata layer, which means we run a mandatory schema audit before writing to Twenty so that no per-user custom fields are silently dropped. We map ASPEC's pipeline stages directly to Twenty Opportunities but configure Twenty's pipeline stages and pipeline column layout in the destination first. Activities (calls, emails, tasks, meetings) migrate as Twenty Tasks with the correct linked entity resolved at import time. We do not migrate ASPEC Reports, Attachments, or automation workflows; we deliver a written handoff inventory for the customer's admin to rebuild these in Twenty's UI.
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 ASPEC 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.
ASPEC
Contact
Twenty CRM
Person
1:1ASPEC Contact records (name, email, phone, address, owner assignment) map directly to Twenty CRM's Person object. We extract every Contact field including per-user custom fields enumerated during schema discovery and write them as typed fields on the Person record. The email address serves as the dedupe key during import. ASPEC owner assignment maps to Twenty's workspaceMember field resolved via the User mapping step.
ASPEC
Company
Twenty CRM
Company
1:1ASPEC Company records map directly to Twenty's Company object, preserving the link to associated Contacts and Opportunities. The domain from ASPEC's company data becomes the Website field in Twenty. We create Companies before Person records during import so that the company-to-person relationship is satisfied at Person insert time.
ASPEC
Opportunity
Twenty CRM
Opportunity
1:1ASPEC Opportunity records (deal name, value, stage, expected close date) map to Twenty CRM Opportunity. The stage name from ASPEC maps directly to Twenty's stage field, but any custom ASPEC stage labels require value-mapping to Twenty's pipeline stage enum before import. ASPEC's pipeline association maps to Twenty's pipeline field, which we configure during the schema setup phase.
ASPEC
Pipeline Stage
Twenty CRM
Pipeline + Stage
lossyASPEC pipelines define stage names and ordering in a separate configuration layer. We capture the full pipeline configuration during the schema discovery step, then create matching Twenty CRM pipelines and stage definitions via the Twenty metadata API before Opportunities are imported. Stage probabilities migrate from ASPEC if available and are set on the corresponding Twenty stage record.
ASPEC
Activity: Call
Twenty CRM
Task (type = call)
1:1ASPEC call activity records (timestamped, linked to Contact or Company) map to Twenty Task records with type = call. Call disposition and duration transfer to custom Task fields if defined in the Twenty schema during setup. Activity timeline ordering is preserved by setting the createdAt timestamp to the original ASPEC activity timestamp.
ASPEC
Activity: Email
Twenty CRM
Task (type = email)
1:1ASPEC email activity records map to Twenty Task with type = email and the email body preserved in the Task description field. The linked Contact or Company from ASPEC resolves to the Twenty Person or Company record at migration time using the email address or record ID cross-reference.
ASPEC
Activity: Meeting
Twenty CRM
Task (type = meeting)
1:1ASPEC meeting records map to Twenty Task with type = meeting, preserving location, start time, and end time. Attendees from ASPEC are recorded in the Task's linked-people field or as a custom multi-select field in Twenty, depending on the schema configuration decided during scoping.
ASPEC
Activity: Task
Twenty CRM
Task (type = task)
1:1ASPEC task activity records (status, priority, due date, owner) map to Twenty Task records with type = task. Status and priority from ASPEC map to Twenty's status and priority enums. Task owner assignment resolves via the User mapping step using the ASPEC owner email as the match key.
ASPEC
Custom Fields
Twenty CRM
Custom Fields
lossyASPEC stores per-user custom field definitions in a separate metadata layer. We run a mandatory schema discovery step before any data migration, enumerating all active custom fields, their data types, and which objects they are attached to. We then pre-create the matching custom field definitions in Twenty CRM's schema via the /metadata API before record import begins. Skipping this step means custom fields are silently absent from migrated records.
ASPEC
Tag/Label
Twenty CRM
Custom Field (multi-select or Topic)
lossyASPEC tags on Contacts and Companies migrate as multi-select picklist fields in Twenty or as tagged-objects depending on the customer's preferred organization strategy. We capture all distinct tag values during schema discovery and configure the target field type during the schema setup phase. The customer chooses the tag strategy during scoping.
ASPEC
User/Owner
Twenty CRM
WorkspaceMember
1:1ASPEC record ownership assigns to Users, which we map to Twenty CRM workspaceMembers. We resolve ASPEC owners by email match against Twenty User records created during setup. Any ASPEC owner without a matching Twenty user is held in a reconciliation queue for the customer to provision before record import resumes. Archived or inactive ASPEC users require explicit reactivation decisions from the customer.
| ASPEC | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Pipeline + Stagelossy | Fully supported | |
| Activity: Call | Task (type = call)1:1 | Fully supported | |
| Activity: Email | Task (type = email)1:1 | Fully supported | |
| Activity: Meeting | Task (type = meeting)1:1 | Fully supported | |
| Activity: Task | Task (type = task)1:1 | Fully supported | |
| Custom Fields | Custom Fieldslossy | Mapping required | |
| Tag/Label | Custom Field (multi-select or Topic)lossy | Fully supported | |
| User/Owner | WorkspaceMember1: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.
ASPEC gotchas
No documented public API for automated data export
Custom field schema not stored with record data
Currency and pricing listed in CAD
Single-review sample limits migration confidence
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 ASPEC portal across active objects, custom field definitions, pipeline configurations, activity volumes, and any identified workflows or automations. Because ASPEC has no public API, we confirm the export method during this step: direct CSV export per object from the ASPEC UI, or database-level access if available on the customer's hosting plan. We also assess the target Twenty CRM tier (cloud vs self-hosted) and confirm whether SSO, mobile access, and reporting depth requirements influence the tier decision. The discovery output is a written migration scope document covering record counts, custom field inventory, and export method.
Schema discovery and custom field enumeration
We run the mandatory schema discovery step against the ASPEC export data, enumerating every active custom field, its data type, and which objects it is attached to. We cross-reference this with any schema metadata accessible through the customer's hosting environment. We then pre-create the matching custom field definitions in Twenty CRM's workspace via the /metadata API, configure pipeline structures matching the ASPEC pipeline configuration, and set up the stage enum values before any record data is written. This step runs before any data migration and prevents silent custom-field drops.
Owner reconciliation and Twenty user provisioning
We extract every distinct ASPEC Owner referenced on Contact, Company, Opportunity, and Activity records and match by email against the Twenty CRM destination workspace's user table. Owners without a matching Twenty user are held in a reconciliation queue. The customer provisions any missing users in Twenty before migration proceeds. This step must complete before record import because OwnerId references are required on most standard objects in Twenty.
Sandbox migration and reconciliation
We run a full migration into the customer's target Twenty environment using production-like data volume. For self-hosted deployments this means a staging instance; for cloud deployments it means the target workspace with a test dataset. The customer reconciles record counts (Persons, Companies, Opportunities, Tasks), spot-checks 25-50 records against the ASPEC source, and approves the schema and mapping before production migration begins. Any custom field mapping corrections, stage-label mismatches, or tag-strategy decisions happen here, not in production.
Production migration in dependency order
We run production migration in record-dependency order: Companies (created first for relationship integrity), Persons (with AccountId resolved), Opportunities (with pipeline and stage resolved), Activity history (Tasks of all types with linked-entity resolution). Each phase emits a row-count reconciliation report before the next phase begins. For large activity histories we use Twenty's bulk import capability with chunking. Tags migrate after the base object migration completes, using the strategy agreed during scoping.
Cutover, validation, and handoff inventory
We freeze any live writes to ASPEC during the cutover window, run a final delta migration of any records modified during the migration window, then enable Twenty CRM as the system of record. We deliver a written handoff inventory covering any identified ASPEC workflows or automations (for manual rebuild in Twenty), a report of any records that could not be migrated due to missing dependencies, and the full custom field and pipeline configuration as-built documentation. We support a one-week hypercare window for reconciliation issues. We do not rebuild ASPEC automations, Reports, or Attachments as those fall outside the migration scope.
Platform deep dives
ASPEC
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 ASPEC 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
ASPEC: Not publicly documented.
Data volume sensitivity
ASPEC 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 ASPEC to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your ASPEC 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 ASPEC
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.