CRM migration

Migrate from Actionstep to Twenty CRM

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

Actionstep logo

Actionstep

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

10 of 10

objects map 1:1 between Actionstep and Twenty CRM.

Complexity

BStandard

Timeline

72–120 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Actionstep structures its data around legal concepts: Matters as case files, Participants as parties with roles (client, opposing counsel, witness), Data Collections as matter-typed custom fields, and built-in legal accounting (trust transactions, billing). Twenty CRM uses a standard CRM schema: People for contacts, Companies for organizations, Opportunities for deals, Notes and Tasks for activities, and custom objects for anything beyond the standard set. The migration maps Actionstep's Matter records to Twenty Opportunities, Participant records to People with role data stored in a custom field, Data Collections to Twenty custom objects, and Documents to Notes attachments. Legal accounting data (trust accounts, billing ledgers) has no equivalent in Twenty and cannot be migrated. Workflow definitions, step automations, and document templates are configuration artifacts — FlitStack exports them as JSON and HTML documentation for your Twenty admin to rebuild using Twenty's visual Workflow builder. The migration uses Actionstep's REST API (200 records per page) to extract data and Twenty's CSV import with relation-by-ID referencing to land records in the correct order: Companies first, then People linked by companyId, then Opportunities linked to both.

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

Actionstep logo

Actionstep

What's pushing teams away

  • The workflow creation process is described as very complicated, with a steep learning curve that frustrates firms expecting more approachable automation tooling.
  • The CRM features are not well suited to legal practice needs, forcing firms to patch in external CRM tools rather than relying on Actionstep's native capabilities.
  • Reporting is described as not user friendly, with firms noting the standard accounting reports are limited and require significant effort to extract meaningful firm insights.
  • The configuration depth that makes Actionstep powerful also creates a higher training burden, with some reviewers feeling the product demands too much time investment relative to alternatives.
  • Integration complexity with non-native tools means firms investing heavily in custom integrations face significant rework when migrating away from Actionstep.

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

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

Actionstep

Matter

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Actionstep Matters map to Twenty Opportunities. Matter name becomes Opportunity name; Matter status maps to Opportunity stage; amount and close date carry over. Matter metadata (created date, last activity) preserved as custom datetime fields. The matter type determines which Twenty custom fields apply based on Data Collection mapping.

Actionstep

Participant

maps to

Twenty CRM

People

1:1
Fully supported

Actionstep Participants map to Twenty People records. The Participant role (Client, Witness, Opposing Counsel, etc.) is preserved in a custom pick-list field (Participant_Role__c) on the People object. Each Participant's linked Matter becomes a task or note association in Twenty. Participants without email are migrated with name and phone only.

Actionstep

Data Collection (matter-type fields)

maps to

Twenty CRM

Custom Fields on Opportunity

1:1
Fully supported

Actionstep Data Collections are matter-typed custom field groups. We map each Data Collection to a set of custom fields on the Twenty Opportunity object, prefixed by matter type (e.g., Litigation_Court_Name__c). Field types converted: text→STRING, number→NUMBER, date→DATETIME, pick-list→SELECT. Must-create fields in Twenty before migration.

Actionstep

Document / Attachment

maps to

Twenty CRM

Notes (with attachment)

1:1
Fully supported

Actionstep documents attached to Matters or Participants migrate as Twenty Notes with the file re-uploaded as an attachment. File size limit 25MB per file (Twenty's default). Inline images in Word documents are downloaded and re-hosted as Note attachments. Document tags from Actionstep become Note body text headers.

Actionstep

Step / Task

maps to

Twenty CRM

Tasks

1:1
Fully supported

Actionstep Steps within a Matter map to Twenty Tasks linked to the corresponding Opportunity. Step name becomes Task subject; step due date maps to due date; assignee resolves by email match to Twenty workspace members. Completed steps preserve completion date. Steps without a due date create Tasks with no due date field.

Actionstep

Actionstep User / Staff

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Actionstep staff members map to Twenty Workspace Members. Resolution happens by email match — if the email exists in Twenty, the OwnerId links; if not, records assign to a designated fallback member and the Actionstep user ID is stored in a custom field for later reconciliation. Invite Actionstep users to Twenty before migration.

Actionstep

Custom Object (Builder object variables)

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Actionstep Builder object variables (from object models like as:action_participant or custom Data Collections) map 1:1 to Twenty Custom Objects. N:N relationships between object variables require a junction object in Twenty — we surface this in the mapping plan. Custom object records migrate last after all parent records exist.

Actionstep

Trust Account / Ledger

maps to

Twenty CRM

No Equivalent

1:1
Fully supported

Actionstep's IOLTA trust accounting, client ledgers, and bill totals have no Twenty CRM equivalent — Twenty has no billing or accounting module. We export trust data as CSV for your finance team to load into a dedicated accounting tool. This data cannot be stored meaningfully in Twenty's CRM schema.

Actionstep

Workflow / Automation (step triggers, email templates)

maps to

Twenty CRM

No Equivalent — Export for Rebuild

1:1
Fully supported

Actionstep step-based workflows, email triggers, and document automation templates do not migrate. FlitStack exports workflow definitions as a structured JSON file plus HTML documentation describing each trigger, condition, and action. Your Twenty admin uses this as a rebuild reference for Twenty's Workflow builder and Settings → Data Model.

Actionstep

Billing / Invoice

maps to

Twenty CRM

No Equivalent

1:1
Fully supported

Actionstep bills, invoices, and payment records map to no Twenty CRM object — Twenty lacks a billing module. We export invoice and payment history as CSV. Firms needing integrated billing should pair Twenty with a dedicated legal billing tool post-migration; the invoice export serves as opening balances.

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.

Actionstep logo

Actionstep gotchas

Medium

API is case-sensitive and requires exact casing

High

No system account access — API is user-centric

Medium

Rate limiting introduced April 2024 limits bulk export speed

High

Trust accounting transactions require special migration handling

High

Workflow automations are not API-exportable

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

  • Legal accounting data has no Twenty CRM destination

    Actionstep's trust accounts, IOLTA ledgers, client ledger balances, and billing totals are legal-specific financial records with no equivalent object in Twenty CRM. Twenty ships with no accounting module — it is a CRM, not a practice management accounting tool. We export this data as CSV for loading into a dedicated legal billing platform (such as LawPay, Clio Grow, or a custom spreadsheet). Attempting to store trust data in Twenty's Opportunity or custom objects would misrepresent financial records and create audit risk. This limitation must be acknowledged before migration scope is finalized.

  • Actionstep API rate limits require batched extraction

    From April 2024, Actionstep introduced rate limiting across all public API endpoints. The API uses a user-context model — all API activity runs under the authenticating user's security context and is logged against that user session. The System Administrator account cannot be used for API access. Page size is capped at 200 records per request. We extract data in paginated batches, throttling to avoid limit hits, and use the sandbox environment first to validate extraction logic. Rate limit errors during extraction are retried with exponential back-off; extraction resumes from the last successful page cursor.

  • Twenty import order is strict — Companies must precede People

    Twenty's CSV import enforces referential integrity: you cannot import a Person with a companyId unless the Company record already exists. Similarly, Opportunities must reference an existing companyId. We sequence the migration in this exact order: (1) Companies, (2) People linked to Companies by domain or email-domain match, (3) Opportunities linked to Companies and People, (4) Custom Objects last after parent records exist. Circular references (company A lists company B as parent; company B lists A as parent) are flagged and resolved manually before the migration runs. If your Actionstep data has Participants without any company link, they land in Twenty as People with no companyId — this is valid and handled by Twenty's schema.

  • Participant roles need a custom field in Twenty

    Actionstep Participants have a role field (Client, Witness, Opposing Counsel, etc.) that is native to the platform. Twenty People has no native role field — there is no built-in equivalent for contact roles in the legal sense. We create a custom SELECT field (Participant_Role__c) on the People object and populate it with the exact role values from Actionstep. Roles that have no natural Twenty equivalent (e.g., 'Barrister', 'Mediator') are preserved as custom pick-list values. If your firm uses roles to drive downstream logic, this custom field must be recreated in Twenty's Settings → Data Model before migration — we cannot create it automatically through CSV import.

  • Workflows and step automations do not transfer

    Actionstep's Builder workflow system — step triggers, email automations, document generation rules, and matter-typed process automations — is a proprietary configuration layer that has no equivalent in Twenty's schema. Twenty's Workflows feature (Settings → Workflows) provides automation for record-level triggers, but the Actionstep workflow logic must be manually rebuilt. We export your Actionstep workflow definitions as structured JSON plus human-readable HTML documentation describing every trigger, condition branch, and action sequence. Your Twenty admin uses this as a rebuild checklist. Budget 1–3 days of admin time per significant workflow for manual reconstruction in Twenty's visual workflow builder.

Migration approach

Six steps for a successful Actionstep to Twenty CRM data migration

  1. Extract Actionstep data via paginated API

    We authenticate to Actionstep using OAuth2 with a non-System Administrator user account (Actionstep requires user-context API access). Data is extracted in paginated batches of 200 records per request, respecting rate limits introduced April 2024. We pull: Matters, Participants, Documents, Steps, and all custom Data Collections. The sandbox environment is used first to validate extraction logic and record counts. Any records that fail extraction are retried up to 3 times with exponential back-off before being flagged in the extraction report.

  2. Set up Twenty workspace and create custom fields

    Before any data lands, we create all required custom fields in Twenty's Settings → Data Model: Participant_Role__c on People, Original_Open_Date__c and Source_System_ID__c on Opportunity, and any custom fields mapped from Actionstep Data Collections. Custom objects are created for any Builder object variables in Actionstep. Workspace members must be invited and accepted before the migration — if a Matter owner email does not match a Twenty member, the record is assigned to a fallback member and the Actionstep user ID is stored in a custom field. We deliver a setup checklist so your Twenty admin creates the schema before data import runs.

  3. Sequence migration: Companies → People → Opportunities → Custom Objects

    We run the migration in the load order Twenty requires: Companies first (using domain as the unique identifier), then People with companyId links resolved by email domain match, then Opportunities with companyId and linked People (via Opportunity contact roles), then Custom Objects. Participant roles are populated from the extracted role values into Participant_Role__c. Documents are attached to the corresponding Notes on their parent record. Steps are converted to Tasks linked to the corresponding Opportunity. Unresolved references (Participant with no company link, orphan Tasks) are logged and land as valid Twenty records without the unresolved relation.

  4. Run sample migration with field-level diff

    A representative sample (typically 200–500 records spanning multiple matter types, Participants, and Documents) migrates first. We generate a field-level diff comparing source values against destination values — checking that custom field mappings resolve correctly, that Participant roles populate the custom pick-list, that Documents attach to the right parent Notes, and that Owner resolution by email is complete. You review the diff and approve before the full migration commits. Any field mapping errors are corrected and the sample re-runs.

  5. Execute full migration with delta-pickup window

    The full migration runs against Twenty's CSV import (or API for large datasets). A delta-pickup window of 24–48 hours captures any Matters, Participants, or Documents modified or created in Actionstep during the cutover period. Audit log records every import operation. After cutover, we run a reconciliation report comparing record counts and field totals between Actionstep and Twenty. If reconciliation fails, one-click rollback reverts the Twenty workspace to its pre-migration state. We deliver the export-for-rebuild package (workflow JSON, document template list, trust account CSV) as a separate deliverable alongside the migrated CRM data.

Platform deep dives

Context on both ends of the pair

Actionstep logo

Actionstep

Source

Strengths

  • Combines practice management, CRM, document automation, trust accounting, and billing in a single integrated platform.
  • Builder tool enables deep customization of matter types, data collections, and participant role structures per practice area.
  • Enhanced Billing Module supports complex legal billing including trust accounting and multi-currency reporting.
  • Cloud-native with mobile app access, eliminating on-premise server requirements for law firms.
  • Native iManage document management integration provides enterprise-grade document handling for firms requiring advanced DMS.

Weaknesses

  • CRM capabilities are considered underdeveloped and not well suited to legal practice relationship management.
  • Workflow automation creation has a steep learning curve and is frequently described as complicated by users.
  • Reporting lacks user-friendliness, with limited standard accounting reports compared to dedicated legal billing software.
  • The high degree of configurability creates a significant training burden for new users and admins.
  • Workflow automations cannot be exported programmatically, requiring manual reconstruction on the destination platform.
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 Actionstep 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

    Actionstep: Rate limiting introduced April 2024 — limits not publicly documented per endpoint; page size capped at 200 records per request.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Actionstep to Twenty migrations complete in 72–120 hours of clock time for under 100,000 records. The longest phase is Data Collection field mapping — each matter type has its own set of custom fields that must be created in Twenty's Settings → Data Model before import. Setups with more than 10 matter types or 500+ custom fields extend to 5–10 business days. The Actionstep API's 200-record page limit and rate throttling add modest overhead to the extraction phase.

Adjacent paths

Related migrations to explore

Ready when you are

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