CRM migration

Migrate from Synergy Matters to Twenty CRM

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

Synergy Matters logo

Synergy Matters

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

91%

10 of 11

objects map 1:1 between Synergy Matters and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Synergy Matters stores legal-practice data in a MySQL-backed schema centered on contacts, companies, and matter files with billable-hours and disbursement tracking. Twenty CRM uses a PostgreSQL-backed data model with People, Companies, Opportunities, Notes, Tasks, and unlimited custom objects on Pro and Organization plans. The migration maps Synergy contacts to Twenty People, companies to Twenty Companies, and matters to Twenty Opportunities with legal-specific fields carried as custom fields or a dedicated custom object for billable hours and disbursements. Synergy's N:N relationship between contacts and companies becomes a primary companyId plus secondary relations in Twenty's relational structure. We handle freeform Synergy field names by normalizing them to snake_case identifiers for Twenty's API. Workflows, automation rules, and document-management logic do not migrate and must be rebuilt in Twenty's workflow builder; we export Synergy's automation definitions as a rebuild reference. The cutover uses scoped read access against Synergy's database, preserving full operational continuity while a delta-pickup window captures any last-minute changes before final reconciliation.

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

Synergy Matters logo

Synergy Matters

What's pushing teams away

  • On-premise architecture (MySQL plus shared file server, minimum Windows XP) is increasingly out of step with the cloud-first practice-management market dominated by Clio, MyCase, and PracticePanther.
  • Sales-led pricing with no public tier sheet makes budget comparison against transparently-priced cloud competitors awkward.
  • Limited public review footprint — G2/Capterra coverage is thin, so prospective buyers cannot easily benchmark against alternatives.
  • No documented public API or developer portal — integrations rely on Outlook/Word plugins and one-shot accounting-system exports rather than a programmable surface.
  • Cloud Edition exists but it is positioned as an alternative product rather than the primary path, which complicates the upgrade story for firms that want to move off self-hosting.

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

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

Synergy Matters

Contact

maps to

Twenty CRM

People

1:1
Fully supported

Synergy contacts map directly to Twenty People. Email becomes the unique identifier for matching and deduplication. Address, phone, job title, and create-date all carry over. Multiple Synergy contacts without email become Twenty People with no email, flagged for manual review.

Synergy Matters

Company

maps to

Twenty CRM

Companies

1:1
Fully supported

Synergy companies map to Twenty Companies. Domain normalizes to Website. Industry values map to Twenty's industry select list where match exists; non-matching values become custom select values in Twenty's data model. Parent-child company hierarchies in Synergy map via Twenty's relation field.

Synergy Matters

Matter

maps to

Twenty CRM

Opportunities

1:1
Fully supported

Synergy matters become Twenty Opportunities. Matter name maps to Opportunity name. Matter status (open, pending, closed-won, closed-lost) maps to Twenty pipeline stages via value mapping. Billable amount maps to Opportunity amount. We create a custom Stage_History__c field to preserve Synergy's matter status change timestamps.

Synergy Matters

Billable Hours

maps to

Twenty CRM

Custom Object: Billable Hours

1:1
Fully supported

Synergy stores billable hours in a separate table with matter foreign keys. We create a Billable Hours custom object in Twenty with fields: Date, Hours, Rate, Amount, Attorney (linked to People), Matter (linked to Opportunity). On Free and Pro plans, Billable Hours may need to be stored as custom fields on the Opportunity instead due to the 10-object plan limit.

Synergy Matters

Disbursements

maps to

Twenty CRM

Custom Object: Disbursements

1:1
Fully supported

Synergy disbursements track out-of-pocket expenses per matter. We create a Disbursements custom object with fields: Date, Description, Amount, Matter (linked to Opportunity). If Twenty plan limits are reached, disbursements are stored as a JSON-formatted custom text field on the Opportunity record for audit reference.

Synergy Matters

Document File

maps to

Twenty CRM

Notes

1:1
Fully supported

Synergy document metadata (file name, file type, upload date, author) migrates as a Twenty Note attached to the relevant People or Opportunity record. The actual document files are re-uploaded to Twenty's file storage. File size limits apply; files exceeding 25MB are flagged for chunked upload.

Synergy Matters

Contact-Matter Association

maps to

Twenty CRM

People-Opportunity Relation

many:1
Fully supported

Synergy's N:N contact-to-matter table is collapsed into a primary link (Person linked to Opportunity as primary contact) plus secondary relation records created via Twenty's relation import. All association roles are preserved in a custom Role__c field on the relation for audit continuity.

Synergy Matters

Activity Log (Call/Email)

maps to

Twenty CRM

Notes / Tasks

1:1
Fully supported

Synergy activity log entries (calls, emails, meetings) migrate as Twenty Notes attached to the relevant People and/or Opportunity record. Original entry timestamps are preserved as a custom datetime field for audit continuity. Synergy's activity type field maps to a custom Type__c pick-list on the Note.

Synergy Matters

User / Staff

maps to

Twenty CRM

Workspace Members

1:1
Fully supported

Synergy users and staff members are matched to Twenty workspace members by email address. Active Synergy users receive Twenty accounts; inactive users are imported as deactivated records. Permissions are not migrated — Twenty permission groups are set to default and require post-migration configuration.

Synergy Matters

Custom Field (MySQL column)

maps to

Twenty CRM

Custom Field on relevant object

1:1
Fully supported

Synergy's freeform MySQL columns become Twenty custom fields with appropriate types (text, number, date, select). We normalize column names containing spaces or special characters to snake_case identifiers for Twenty's API. Custom fields are created before data migration so the import pipeline can reference them by API name.

Synergy Matters

Synergy System ID

maps to

Twenty CRM

Custom field: Source_System_ID__c

1:1
Fully supported

Synergy's internal record IDs are stored as a custom text field on every object for traceability, delta-run deduplication, and rollback identification. The field is named Source_System_ID__c and populated with the full Synergy primary key so future syncs can reference the source record unambiguously.

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.

Synergy Matters logo

Synergy Matters gotchas

High

Documents live on a shared Windows file server, not in the database

Medium

OCR is generated locally and may not be portable as structured data

Medium

Outlook plugin email-to-matter filing is plugin-side, not server-side

Medium

On-premise minimum is Windows XP / older OS

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

  • Synergy billable-hours and disbursement records have no native Twenty equivalent

    Synergy Matters stores billable hours and disbursements as separate MySQL tables with matter foreign keys. Twenty CRM has no native billing, time-tracking, or disbursement object. The migration maps these to a Billable Hours custom object with fields for date, hours, rate, amount, attorney, and matter. On Twenty's Free and Pro plans (10 custom objects maximum), you may hit the limit if you already have other custom objects configured — in that case, we store disbursements as a JSON-formatted custom text field on the Opportunity for audit reference. Your team decides which approach fits your practice's reporting needs before migration runs.

  • Synergy N:N contact-to-matter associations require primary-link splitting in Twenty

    Synergy allows a contact to be associated with multiple matters simultaneously through a junction table. Twenty's import model enforces a primary companyId on People and a separate relation import for secondary links. We assign the most-recently-used or most-revenue-linked matter as the primary association, then create secondary relations via Twenty's relation import using the contact's email as the unique key. All Synergy association roles are preserved in a custom Role__c field on the relation record so the full picture is available in Twenty after migration.

  • Twenty requires strict import order — companies before people, people before opportunities

    Twenty's CSV import enforces referential integrity: the companyId field on a People record must reference an existing Companies record, and Opportunity records must reference existing People or Companies. Attempting to import opportunities before people exist produces foreign-key failures. We follow Twenty's documented import sequence (Companies → People → Opportunities → Custom objects with relations) and run a pre-flight validation that confirms every foreign-key reference resolves before each batch commits. Circular or broken references are flagged and reported before the migration runs.

  • Twenty API rate limits cap batch migration throughput on Free and Pro plans

    Twenty's REST and GraphQL APIs enforce rate limits of 100 requests per minute on the Free plan and 200 requests per minute on Pro. Large Synergy datasets (10,000+ records) risk hitting these limits during bulk migration, causing 429 errors and incomplete batches. We monitor X-RateLimit-Remaining response headers during API-based migration, throttle requests accordingly, and fall back to Twenty's CSV import for record batches that exceed API throughput. The migration plan documents which method is used per object before execution.

  • Synergy freeform MySQL column names require normalization to snake_case for Twenty's API

    Synergy's MySQL schema stores custom fields with names that may include spaces, hyphens, numbers, and mixed case (e.g., 'Opposing Counsel', 'Court File #', 'Partner/Senior Associate'). Twenty's API requires field identifiers in snake_case alphanumeric format. We normalize all field names during the mapping phase — stripping punctuation, replacing spaces with underscores, and removing leading numbers — then update the import plan with the new Twenty API field names. Any downstream references (reports, integrations) that hardcode Synergy field names will need to be updated to the normalized Twenty field names post-migration.

Migration approach

Six steps for a successful Synergy Matters to Twenty CRM data migration

  1. Audit Synergy database schema and build migration map

    We connect to Synergy's MySQL database (read-only) and extract the full object inventory: contacts, companies, matters, billable-hours table, disbursements table, N:N junction tables, and all custom columns. We produce a migration map document that lists every field to migrate, its Twenty target object and field API name, the mapping type (direct, value-mapping, custom-field-required), and any N:N relationships that need re-building via Twenty's relation import. This map is your approval checkpoint before we touch any data.

  2. Create Twenty schema: custom fields, custom objects, and permission groups

    Before importing data, we create all required custom fields and custom objects in your Twenty workspace using the Migration Map. This includes the Billable Hours and Disbursements custom objects (subject to your plan's object-count limit), Stage_Label__c and Source_System_ID__c on Opportunities, custom activity-type and original-date fields on Notes, and any legal-specific select values for jurisdiction and matter type. Permission groups are set to default at this stage — your admin configures Twenty's access model after migration.

  3. Match Synergy users to Twenty workspace members by email

    We extract the active Synergy user list and match against Twenty workspace members by email address. Unmatched Synergy users are flagged with their record counts so your team can decide whether to invite them to Twenty before migration or reassign their records to a designated fallback user. No record lands in Twenty without an owner — this step prevents orphaned matter assignments at migration time.

  4. Run test migration with sample records and field-level diff

    A representative slice of records — typically 100–500 across contacts, companies, matters, and activities — migrates first. We generate a field-level diff comparing source Synergy values against the resulting Twenty records, with particular attention to matter status-to-stage value mapping, billable-amount-to-amount accuracy, and N:N contact-matter association resolution. You also verify that custom field values, date fields, and pick-list selections transferred correctly. You review the diff and approve before the full run commits.

  5. Execute full migration with delta-pickup and reconciliation report

    Full migration runs following Twenty's import order: Companies, then People with companyId links, then Opportunities with contact relations, then custom objects with relations. A delta-pickup window (typically 24–48 hours) captures any records modified in Synergy during the cutover period. We generate a reconciliation report matching source record counts to destination record counts per object and surface any records that failed to migrate with error reasons so your team can remediate before go-live.

Platform deep dives

Context on both ends of the pair

Synergy Matters logo

Synergy Matters

Source

Strengths

  • Law-firm-specific matter-centric data model with built-in matter security.
  • Automatic OCR on incoming documents producing searchable PDFs.
  • Auto-tracked print, fax, and scan disbursements with no file codes required.
  • Outlook and Word plugins file emails and documents into the matter automatically.
  • On-premise deployment satisfies firms with strict data-residency or self-hosting preferences.

Weaknesses

  • On-prem MySQL + file server architecture is dated versus cloud-first competitors.
  • Pricing not published; quote-only.
  • No public API or developer portal; integrations rely on plugins and accounting exports.
  • Limited public review and analyst footprint.
  • Documents and metadata live in two distinct stores, increasing migration complexity.
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 manual workaround.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Synergy Matters and Twenty CRM.

  • Object compatibility

    B

    1 of 8 objects need a manual workaround.

  • 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

    Synergy Matters: Not applicable — no public API..

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Synergy-to-Twenty migrations complete within 48–72 hours of clock time for under 50,000 records. Complex migrations involving legal-specific custom objects (billable hours, disbursements, multi-matter-type structures) or extensive N:N relationship tables extend to 5–7 days. The longest planning step is schema creation in Twenty — designing the custom objects and field types that replace Synergy's MySQL columns before data import begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Synergy Matters.
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