CRM migration
Field-level mapping, validation, and rollback between Sunbase Data and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Sunbase Data
Source
Twenty CRM
Destination
Compatibility
7 of 11
objects map 1:1 between Sunbase Data and Twenty CRM.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Sunbase Data to Twenty CRM is a multi-module extraction exercise followed by a data model redesign. Sunbase organizes records across separate CRM, Project, HR, and Financial modules with no unified export and no documented REST API, so data extraction relies on direct database access for enterprise deployments or manual CSV exports per module. Twenty CRM uses a simpler schema centered on Companies, People, Opportunities, Tasks, and Notes, with custom objects and fields configured in Settings before any import. We build a cross-module relationship map during discovery that connects Sunbase Contact IDs to Deal IDs, Project IDs to Work Order IDs, and Client IDs to the originating Contact, then import into Twenty's unified model. Automation workflows, pipeline boards, and stage-triggered actions do not migrate from Sunbase; we deliver a written automation inventory so your admin rebuilds triggers in Twenty. File attachments are not transferable via CSV and require a separate handling plan.
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 Sunbase Data 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.
Sunbase Data
Contact
Twenty CRM
People
1:1Sunbase Contact records (name, email, phone, address, plus industry-specific fields) map to Twenty People. Standard fields migrate directly. Sunbase custom fields on Contact require a pre-shared field manifest because the field definition metadata (name, type, validation) does not export alongside data. We validate that all custom field names in the manifest exist as configured fields in Twenty Settings → Data Model before the import phase begins.
Sunbase Data
Lead
Twenty CRM
People or Opportunity (classification required)
lossySunbase captures leads through door-to-door sales forms, web capture, and manual entry. We classify Sunbase Leads by status: unqualified leads (no associated Deal, no follow-up scheduled) map to Twenty People as a standalone record; leads with an active deal or scheduled appointment map to Twenty People with a linked Opportunity. The customer defines the classification threshold during scoping based on their sales process.
Sunbase Data
Client
Twenty CRM
People or Company (based on type)
lossySunbase Client records represent either individuals (homeowners) or organizations (property owners, general contractors). We inspect the client_type field during extraction and route individual clients to Twenty People and organizational clients to Twenty Company. The customer confirms the client type taxonomy during scoping because Sunbase does not enforce a strict type distinction.
Sunbase Data
Company (Sunbase CRM module)
Twenty CRM
Company
1:1Sunbase CRM module Company records (distinct from organizational Client records) map directly to Twenty Company. The company domain or website becomes the lookup anchor. If both Sunbase Company and Sunbase Client (org type) exist for the same organization, we deduplicate during the transform phase by company name match and consolidate into a single Twenty Company record.
Sunbase Data
Deal
Twenty CRM
Opportunity
1:1Sunbase Deals (with pipeline stages, deal values, proposals, quotes, and stage history) map to Twenty Opportunity. The pipeline stage name maps to Opportunity stage. Sunbase pipeline configuration (visual sales boards, stage definitions) is non-exportable; we document the current stage names and probabilities from Sunbase during scoping and the customer configures the corresponding Opportunity stages in Twenty before migration. Closed-Won and Closed-Lost reasons migrate as custom fields.
Sunbase Data
Project
Twenty CRM
Custom Object (Project)
1:1Sunbase Projects (installation or job-site operations with metadata, status, budget tracking, and linked Work Orders) have no direct Twenty standard object equivalent. We pre-create a Twenty custom object named Project via Settings → Data Model, define custom fields matching Sunbase project metadata, and import Projects as custom object records. Projects with multiple associated Work Orders maintain a lookup relationship that we resolve by Project ID during import.
Sunbase Data
Work Order
Twenty CRM
Custom Object (Work Order)
1:1Sunbase Work Orders (permit info, task details, attachments, system specifications, employee assignments, and scheduling data) migrate to a Twenty custom object named Work Order. We pre-create the custom object schema including fields for permit number, system specifications, assigned crew, and status. Work Order links to Project via a lookup relationship resolved at import time. Attachments require separate handling (see gotchas).
Sunbase Data
Invoice
Twenty CRM
Custom Object (Invoice)
1:1Sunbase Invoices (line items, payment status, and linkage to Project or Client) migrate to a Twenty custom object named Invoice. We preserve invoice number, issue date, due date, line item descriptions, amounts, and payment status. Invoices link to the originating Project or Client record via lookups resolved at migration time. Historical paid invoices migrate as records with a Paid status flag.
Sunbase Data
Employee
Twenty CRM
People (role-filtered)
1:manySunbase Employee records include HR data, crew assignments, and GPS location history. We split Employee into two migration targets: (1) people records for employees who are also sales contacts or client-facing (migrated to Twenty People with a role tag), and (2) a user provisioning list for employees who need Twenty user accounts. GPS trail data is bulk-exported where available and provided as a CSV attachment to the customer for manual use in Twenty; it does not map to a standard Twenty field.
Sunbase Data
Appointment
Twenty CRM
Task or Note
1:1Sunbase Appointments (with dates, times, assigned contacts, and status) map to Twenty Task records with the scheduled date preserved in the due date field. The appointment description migrates as the Task body. Google Calendar linkage is not transferable; appointments land as Twenty records without a calendar sync. We flag calendar reconnection as a post-migration configuration step.
Sunbase Data
Document
Twenty CRM
Note (with manual re-upload plan)
lossySunbase Documents (contracts, financing applications, permits) are binary files stored in the module. CSV import does not include file attachments. We extract file metadata (file name, upload date, associations to Contact, Deal, Project) as structured records and provide the customer with a document re-upload plan: either manual re-upload via Twenty's UI or API-based migration of the binary files. The customer chooses the approach during scoping.
| Sunbase Data | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | People1:1 | Fully supported | |
| Lead | People or Opportunity (classification required)lossy | Fully supported | |
| Client | People or Company (based on type)lossy | Fully supported | |
| Company (Sunbase CRM module) | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Project | Custom Object (Project)1:1 | Fully supported | |
| Work Order | Custom Object (Work Order)1:1 | Fully supported | |
| Invoice | Custom Object (Invoice)1:1 | Fully supported | |
| Employee | People (role-filtered)1:many | Fully supported | |
| Appointment | Task or Note1:1 | Fully supported | |
| Document | Note (with manual re-upload plan)lossy | 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.
Sunbase Data gotchas
No publicly documented REST API or export endpoints
Module-level data isolation complicates bulk exports
Automation workflows and pipeline configurations are non-exportable
Custom fields lack a schema definition 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 extraction method selection
We audit all active Sunbase modules (CRM, Project, HR, Financial) and the data volume within each. We confirm whether direct database access is available via Sunbase's technical team or whether manual CSV exports are the extraction path. We extract a preliminary record count per object, inspect the cross-module relationship structure (Contact-to-Deal, Project-to-Work-Order, Client-to-Invoice), and identify any custom field usage via the customer-provided manifest. The discovery output is a written migration scope, an extraction method recommendation, and a cross-module relationship map.
Schema design and relationship resolution plan
We design the Twenty destination schema. For Sunbase standard objects (Contact, Deal, Lead, Company), we map to Twenty People, Opportunity, and Company. For Sunbase objects without direct equivalents (Project, Work Order, Invoice), we pre-create custom objects in Twenty Settings → Data Model. We define all custom fields with correct types, configure lookup relationships (Work Order → Project, Invoice → Project, Opportunity → Company), and create the relationship resolution table that maps Sunbase internal IDs to the import order. Schema is validated in a Twenty test workspace before any production data moves.
Data extraction and cross-module mapping
We execute the extraction method confirmed in Step 1. For direct database access, we run read-only queries against the Sunbase database targeting each object table with JOINs on relationship keys (Contact ID, Deal ID, Project ID, Client ID). For manual export fallback, we coordinate the CSV export from each module interface and provide a relationship linkage template that the customer completes to document which Contact IDs link to which Deal IDs and which Project IDs link to which Work Order IDs. We then merge the per-module exports using the linkage template. We flag any records with missing required relationships for customer resolution.
Data transformation and quality cleanup
We transform the extracted records to match the Twenty schema. This includes field name mapping, type validation (date formats, phone number standardization, email format checking), and duplicate detection. Sunbase records frequently contain duplicates introduced by separate entry across modules (the same Contact entered as both a CRM Contact and a Project-linked Contact); we run a dedupe pass using email and company name as match keys and present the customer with a duplicate resolution report. We also apply the custom field mapping using the customer-provided manifest and flag any Sunbase custom fields that do not have a corresponding Twenty field configured.
Sandbox validation and relationship reconciliation
We run a full migration into a Twenty test workspace using production-equivalent data volume. The customer reviews the imported People, Companies, Opportunities, and custom object records, spot-checks 25-50 records against the Sunbase source for field accuracy and relationship integrity, and validates that all Owner assignments resolved to existing Twenty Users. Any mapping corrections (wrong field, missing relationship, custom field not created) are addressed here. We do not proceed to production migration until the customer signs off on the Sandbox reconciliation.
Production migration and cutover
We run production migration in dependency order: Companies (first, as the anchor for lookups), People (with CompanyId resolved), Opportunities (with CompanyId and OwnerId resolved), custom object records (Projects, Work Orders, Invoices with relationship lookups resolved), and Tasks. Each phase emits a row-count reconciliation report. We freeze Sunbase writes during the cutover window, run a final delta migration of any records created or modified during the migration window, then hand off to the customer for go-live. We deliver the automation inventory document for the customer's admin to rebuild in Twenty and support a one-week hypercare window for reconciliation issues.
Platform deep dives
Sunbase Data
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 1 of 8 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Sunbase Data and Twenty CRM.
Object compatibility
1 of 8 objects need a manual workaround.
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
Sunbase Data: Not publicly documented.
Data volume sensitivity
Sunbase Data 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 Sunbase Data to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Sunbase Data 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 Sunbase Data
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.