CRM migration

Migrate from Successware to Twenty CRM

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

Successware logo

Successware

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between Successware and Twenty CRM.

Complexity

BStandard

Timeline

3–10 business days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Successware is a cloud-hosted business management system built for home-services companies (HVAC, plumbing, electrical, roofing). It combines CRM, job booking, field dispatch, and accounting in one platform. Its data lives in a proprietary database (BAK/MDB exports), organized around Customers, Relations, Jobs, Invoices, and PriceBook items. Successware has no public REST API for direct export — data extraction relies on backup files, A/R Aging Reports in XLSX, and Successware's own export utilities. Twenty CRM is a modern, open-source CRM (TypeScript/React/NestJS/PostgreSQL) with standard objects for People, Companies, Opportunities, Tasks, and Notes. It uses a REST and GraphQL API, CSV bulk import via the Command Menu, and supports unlimited custom objects at every pricing tier. Twenty's data model is relational: Companies must exist before People can reference them via companyId, and Opportunities link to both Companies and People. FlitStack AI extracts from Successware's backup and export files, normalizes proprietary formats (multi-line address parsing, technician email resolution), and loads into Twenty via the Twenty API or CSV import. We map Successware's Customers and Relations to Twenty People, Jobs to Opportunities with custom fields for service type and job status, and Invoices to a custom Invoice object. Workflows, automations, and accounting modules do not migrate — we export definitions for manual rebuild in Twenty's workflow builder.

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

Successware logo

Successware

What's pushing teams away

  • Technical glitches and software instability cause frustration — users report the platform freezing, crashing, or behaving unexpectedly during dispatch and invoicing workflows.
  • Dated interface and difficult learning curve — despite positive support reviews, some users describe the UI as old-fashioned and say it takes significant time to become proficient.
  • Migrating away is complex — Successware has no public API, migration relies on vendor-assisted exports, and the job-by-job close requirement creates manual work for businesses with long histories of open work orders.
  • Software has gone through a platform transition (Classic to New Platform) — customers report confusion about which version they are on and concern about future roadmap direction.
  • Some users outgrow the platform as their business scales beyond small to mid-market — the feature set is designed for SMBs and lacks the customization depth larger operations require.

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 Successware objects map to Twenty CRM

Each row shows how a Successware 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.

Successware

Customer / Relation

maps to

Twenty CRM

People

many:1
Fully supported

Successware separates Customers (billing clients) from Relations (additional contacts at the same account). FlitStack AI merges both into Twenty People records, flagging the primary contact as the first record created and attaching subsequent contacts to the same companyId. Email address serves as the deduplication key.

Successware

Customer / Relation Address

maps to

Twenty CRM

People (address fields)

1:1
Fully supported

Successware stores a single multi-line address string with no standardized format. FlitStack AI parses this into street, city, state, and postal code fields matching Twenty's address structure before import. The parsing logic handles common delimiters like commas and newlines, and flags anomalies. Parsing errors are flagged per record for manual correction before the full migration runs.

Successware

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Successware Company records map directly to Twenty Companies. Company name, domain/website, industry, and employee count translate 1:1. Successware's parent-company hierarchy maps to the Twenty company link field — the parent company must be migrated first to avoid orphaned child records.

Successware

Job

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Successware Jobs are the core operational record in the home-services context. They map to Twenty Opportunities, but Successware job fields (service type, job status, equipment, technician) have no native Twenty equivalents and are stored as custom Opportunity fields. The original job number is preserved as a custom reference ID for reconciliation.

Successware

Job Status (Open / Scheduled / In Progress / Completed / Invoiced)

maps to

Twenty CRM

Opportunity (custom pick-list field: SW_Job_Status__c)

1:1
Fully supported

Successware job status values do not map to any standard CRM pipeline stage. Each value requires a custom pick-list option in Twenty's Opportunity object. FlitStack AI creates SW_Job_Status__c with Successware's exact status vocabulary preserved. Teams choose whether to align these with Twenty pipeline stages or keep them as a separate read-only reference field.

Successware

Service Type / Department / Skill

maps to

Twenty CRM

Opportunity (custom text/select field: SW_Service_Type__c)

1:1
Fully supported

Successware records service type, department, and skill as structured pick-lists in the Job object. These map to a SW_Service_Type__c custom field on Twenty Opportunities. Field creation in Settings → Data Model must precede the CSV import, or the import will reject records referencing undefined pick-list values.

Successware

Employee / Technician (owner)

maps to

Twenty CRM

Workspace Member (via email match)

1:1
Fully supported

Successware assigns jobs to Employees by internal ID. FlitStack AI resolves the assigned employee by matching their email address (extracted from Successware's employee records) to Twenty Workspace Members. All owners must be invited to Twenty and accept their invitations before the migration runs — otherwise records land under a fallback owner and are flagged for reassignment.

Successware

Invoice / A/R Aging

maps to

Twenty CRM

Custom object: SW_Invoice__c

1:1
Fully supported

Successware invoices (Quick Entry and Cost Plus types) have no equivalent in Twenty's standard data model. FlitStack AI creates a custom SW_Invoice__c object with fields for invoice number, status, total amount, billing address, and the linked Opportunity ID. A/R aging data from Successware's XLSX export is appended as a separate dataset under the same custom object.

Successware

Job Notes / Call / Email / Meeting

maps to

Twenty CRM

Note / Task

1:1
Fully supported

Successware's note records attached to jobs migrate as Twenty Notes linked to the corresponding Opportunity. Timestamps and author information are preserved during the migration. Plain-text conversion is applied to any rich-text formatting in Successware notes. Inline images are not preserved in the migration, but the text content transfers completely. Attachments are noted in the reconciliation report for manual follow-up.

Successware

Custom Modules (Successware extensions beyond standard CRM)

maps to

Twenty CRM

Custom Objects

1:1
Mapping required

Successware allows modules beyond the core CRM (Industry-specific tools, custom property sets). FlitStack AI audits these during the data audit phase, creates matching custom objects in Twenty via Settings → Data Model, and maps each module's fields individually. N:N relationships in Successware may require junction objects in Twenty's relational model.

Successware

PriceBook Item

maps to

Twenty CRM

Custom Object: SW_PriceBook__c

1:1
Fully supported

Successware's PriceBook stores labor rates, part prices, and service codes used in invoicing. These map to a SW_PriceBook__c custom object in Twenty. Since Twenty has no native pricebook, FlitStack AI creates a reference table that can be queried via the Twenty API or maintained manually.

Successware

Successware System ID

maps to

Twenty CRM

Custom field: SW_Source_ID__c (on all objects)

1:1
Fully supported

Successware's internal record IDs are stored as SW_Source_ID__c on every migrated object. This field enables delta-run de-duplication (if the same record is exported twice), supports rollback identification, and allows users to cross-reference records back to the original Successware backup for audit purposes.

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.

Successware logo

Successware gotchas

High

No bulk job close — jobs must be closed one at a time

High

No public API — migration depends on vendor-assisted exports

Medium

A/R Aging data is a separate export from invoices

Medium

Legacy SuccessWare (photography) product shares the name

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

  • Successware has no public API — data extraction requires proprietary file formats

    Successware does not expose a REST or GraphQL API for direct data extraction. The primary export paths are backup files in BAK (SQL Server), MDB (MS Access), or ZIP format, and A/R Aging Reports in XLSX. FlitStack AI works with these file formats directly, parsing BAK/MDB exports into normalized CSV for Twenty import. If Successware manages your data on their hosted AWS environment, you must contact Successware Customer Support to request a data export — the process is not self-service. This adds a coordination step of 5–10 business days to the migration timeline that is not required when migrating from CRMs with open APIs.

  • Job scheduling and dispatch logic cannot migrate to Twenty's Opportunity model

    Successware's job scheduling engine — technician routing, time-slot booking, and dispatch board — encodes business rules specific to home-services operations. Twenty CRM has no native scheduling, dispatch, or field-service module. FlitStack AI migrates job records as Opportunities with custom fields capturing service type, status, technician email, and scheduled date, but the scheduling algorithm and calendar-level booking logic must be rebuilt. Teams typically re-implement this using Twenty's workflow builder, a third-party scheduling tool (Jobber, Housecall Pro), or custom code using Twenty's REST API. The rebuild scope is significant and should be estimated separately from data migration costs.

  • Successware's multi-line address field requires parsing before Twenty's structured address fields accept data

    Successware stores customer and service addresses as a single multi-line text field. Twenty CRM requires structured address components (addressStreet, addressCity, addressState, addressPostcode) as discrete fields. FlitStack AI applies address parsing during the transformation step — splitting on newline characters, commas, and known state/country patterns. Records with non-standard address formats (international addresses, PO boxes, multi-line care-of lines) are flagged for manual review before the full migration commits. Incorrectly parsed addresses result in empty address fields in Twenty, which can break routing and reporting for field-service teams.

  • Workspace Members must be created in Twenty before owner mapping can resolve

    Twenty's import system requires that users referenced as owners (Workspace Members) already exist in the workspace at import time. The Twenty documentation explicitly warns: 'Invite users BEFORE importing data. If your data includes user references, those relations cannot be mapped.' Successware stores employee and technician records internally but does not expose them in a standard export. FlitStack AI extracts employee emails from the Successware backup, creates a roster CSV for the Twenty admin to invite, and waits for all invites to be accepted before running the opportunity migration. Owner mapping failures result in records landing under a system fallback owner and being flagged for reassignment — acceptable for short migrations but problematic for large historical datasets.

  • Successware's complete accounting module has no equivalent in Twenty

    Successware's built-in accounting solution — Quick Entry and Cost Plus invoicing, A/R aging, pricebook items, and payment recording — is a key differentiator of the platform with no counterpart in Twenty CRM's data model. FlitStack AI migrates invoice records to a custom SW_Invoice__c object and A/R aging data as a separate linked dataset, but the accounting logic (billing rules, payment terms, credit memos, tax calculation) does not transfer. FlitStack exports Successware's pricebook as a SW_PriceBook__c custom object, but this is a reference table, not a functional billing module. Teams should budget for a dedicated accounting tool (QuickBooks, Xero, or Wave) to replace Successware's financial capabilities and should not assume invoice history alone provides financial continuity.

Migration approach

Six steps for a successful Successware to Twenty CRM data migration

  1. Extract and audit Successware data

    FlitStack AI begins every Successware migration by requesting the data export through Successware Customer Support (for cloud-hosted instances) or by accessing backup files directly. We extract all Customers, Relations, Companies, Jobs, Invoices, Employees, and PriceBook records. We audit the data for completeness, identify multi-line address fields requiring parsing, inventory all custom pick-list values (especially job status and service type), and assess the volume of records per object. This phase produces a data inventory document that drives the migration plan and identifies any objects that require custom object creation in Twenty before import runs.

  2. Prepare Twenty workspace: custom objects, fields, and workspace members

    Before any data lands in Twenty, we create the target schema. This means creating custom objects (SW_Invoice__c, SW_PriceBook__c) in Settings → Data Model, adding custom fields to the Opportunity object (SW_Job_Status__c, SW_Service_Type__c, SW_Scheduled_Date__c, SW_Equipment_Type__c, SW_Technician_Email__c, SW_Problem_Description__c, SW_Resolution_Notes__c), and pre-populating pick-list values with Successware's exact vocabulary. Simultaneously, we provide a roster CSV of all Successware employee emails for the Twenty admin to invite as Workspace Members. All invites must be accepted before the owner resolution step — this is a hard dependency documented in Twenty's migration guide.

  3. Transform and parse Successware data for Twenty import format

    FlitStack AI transforms Successware's proprietary data into Twenty's import schema. The key transformation work includes: parsing multi-line address strings into addressStreet, addressCity, addressState, and addressPostcode components; resolving technician IDs to email addresses extracted from Successware employee records; mapping Successware's job status values to the SW_Job_Status__c pick-list created in Step 2; mapping invoice records into the SW_Invoice__c custom object and linking them to Opportunities by the original job ID; and preserving Successware system IDs as SW_Source_ID__c on every record. Records with transformation errors are flagged in a pre-migration error report for manual resolution before the import runs.

  4. Run sample migration with field-level diff

    FlitStack AI executes a sample migration using a representative slice of records — typically 100–500 covering a range of job statuses, service types, and technician assignments. We validate that address parsing is accurate across all address formats present in the dataset, confirm that SW_Job_Status__c pick-list values match Successware vocabulary exactly, verify owner resolution (technician email → Twenty Workspace Member), and check that SW_Invoice__c records link correctly to their parent Opportunities. A field-level diff report is delivered before the full migration commits, allowing the team to approve or adjust the mapping.

  5. Execute full migration and delta pickup

    After sample migration sign-off, FlitStack AI runs the full migration. For large datasets (over 20,000 records), we use the Twenty REST or GraphQL API directly rather than the CSV import UI to bypass the 20,000-record per-import limit and handle relationship linking programmatically. A delta-pickup window (24–48 hours) captures any records created or modified in Successware during the cutover. Audit logs are maintained throughout. One-click rollback is available if the reconciliation check reveals data integrity issues. We deliver a post-migration reconciliation report showing record counts per object, owner mapping success rate, and any records that landed under the fallback owner.

  6. Deliver rebuild reference documentation for Successware automations and workflows

    Successware workflows, job-scheduling rules, and automation sequences do not migrate — they must be rebuilt. FlitStack AI exports Successware's workflow definitions as a reference document that maps each automation's trigger, conditions, and actions to Twenty's workflow builder equivalents. The document covers: job status change triggers, technician assignment rules, notification actions, and any conditional routing logic. For job scheduling specifically, we document the Successware scheduling criteria so the team can re-implement routing in a third-party scheduling tool or via Twenty's API. This documentation is delivered alongside the migration report and is not included in the standard migration price.

Platform deep dives

Context on both ends of the pair

Successware logo

Successware

Source

Strengths

  • Unified CRM, dispatch, field service, and accounting in a single cloud-hosted platform for trade businesses.
  • Built-in invoicing supporting both flat-rate (Quick Entry) and commercial (Cost Plus) billing models.
  • Employee dispatch engine using departments, skills, and equipment matching.
  • PriceBook catalog linked directly to jobs and invoices for consistent pricing and margin tracking.
  • AWS-hosted SaaS with automatic updates and no local server requirement.

Weaknesses

  • No documented public API — all data movement requires vendor-assisted export or manual report generation.
  • No bulk job close function — open jobs must be closed individually, creating manual work ahead of migrations.
  • Platform underwent a significant Classic-to-New transition, causing confusion for long-tenured customers about feature parity and roadmap.
  • Interface described as dated by some users; learning curve can be steep for new staff members.
  • Scalability ceiling — feature depth is optimized for SMB; larger field service operations may find the platform limiting.
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. 1 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 Successware and Twenty CRM.

  • Object compatibility

    B

    1 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

    Successware: Not publicly documented.

  • Data volume sensitivity

    B

    Successware doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Successware 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 Successware to Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Successware-to-Twenty migrations complete within 3–10 business days for setups with under 25,000 records and no custom objects. Mid-market setups with 25,000–100,000 records, multiple custom modules, and A/R aging data extend to 3–5 weeks. The primary variable is whether Successware Customer Support export requests (for cloud-hosted instances) are fulfilled quickly — that step alone can add 5–10 business days that are outside FlitStack's control. Data cleaning, address parsing validation, and Twenty workspace preparation (custom fields and Workspace Member invitations) run concurrently and do not add sequential time.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Successware.
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