CRM migration

Migrate from Virtual Case Management to Twenty CRM

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

Virtual Case Management logo

Virtual Case Management

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Virtual Case Management and Twenty CRM.

Complexity

BStandard

Timeline

3–5 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Virtual Case Management (VCM) serves nonprofits and social-service agencies with a client-centric, program-delivery data model. Its core objects — Clients, Cases, Services, Referrals, and Case Notes — are structured around service-provision workflows rather than sales cycles. Twenty CRM is an open-source B2B CRM built on People, Companies, Opportunities, Notes, and Tasks. The two platforms share a relational core but diverge sharply in how they model case state, program enrollment, and service-provision timelines. FlitStack AI migrates VCM Clients to Twenty People, VCM Cases to Twenty Opportunities or a custom Case object depending on your preference, and VCM service records to a custom Service History object. Case notes import as Twenty Notes; referrals become either Opportunity links or a custom Junction object. We use the Twenty REST and GraphQL API for all inserts, respecting the CSV-import order constraint (Companies first, then People, then Opportunities). Workflows, program-enrollment rules, and agency-level sharing settings do not migrate and must be rebuilt as Twenty Workflows. Before the full run, we run a sample migration with field-level diff against a staging workspace so you can verify the People-to-Company linkage, case-stage mapping, and referral resolution before cutover.

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

Virtual Case Management logo

Virtual Case Management

What's pushing teams away

  • Reporting and demographic tools are severely limited, making it difficult to extract meaningful business intelligence or comply with funder data requests.
  • The platform is challenging for users unfamiliar with database-style data entry, creating adoption friction for non-technical staff.
  • Agencies outgrow the platform as they scale, needing advanced workflow automation or deeper integrations that VCM does not provide.
  • Lack of flexible export options makes it difficult to move data to other systems when switching platforms.

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 Virtual Case Management objects map to Twenty CRM

Each row shows how a Virtual Case Management 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.

Virtual Case Management

Client

maps to

Twenty CRM

People

1:1
Fully supported

VCM Client maps directly to Twenty People. The Client record's name, date of birth, contact fields, address, and demographics move to the corresponding Twenty People fields. Client IDs are stored as Source_System_ID__c on the People record for traceability and delta-run de-duplication.

Virtual Case Management

Case

maps to

Twenty CRM

Opportunity

1:1
Fully supported

VCM Case maps to Twenty Opportunity. The case enrollment date becomes the Opportunity CreatedAt timestamp; case discharge date maps to a custom Close_Date__c field since Twenty Opportunities represent deal closure rather than case resolution. Case status (Active, Discharged, etc.) maps to a custom pick-list field (Case_Status__c) on the Opportunity.

Virtual Case Management

Case

maps to

Twenty CRM

Custom Object: Case__c

1:1
Fully supported

If your VCM workflow requires per-case enrollment tracking with program codes and referral sources that don't fit the Opportunity model, we create a custom Case__c object in Twenty (Pro and Organization tiers support unlimited custom objects) and link it to the People record via a relation field. This approach preserves the full case hierarchy but requires Twenty-side schema setup before migration.

Virtual Case Management

Service Record

maps to

Twenty CRM

Custom Object: Service_History__c

1:1
Fully supported

VCM service records (date, service type, duration, staff member, units) have no Twenty native equivalent. We create a Service_History__c custom object with fields for Service_Date, Service_Type, Duration_Minutes, Staff_Member, and Units. Each service record links to the parent People record via a relation field.

Virtual Case Management

Referral

maps to

Twenty CRM

Opportunity custom fields + Custom Object: Referral__c

1:1
Fully supported

Referrals with simple referring-agency and referral-date data migrate as custom fields on the Opportunity (Referring_Agency__c, Referral_Date__c, Referral_Outcome__c). Complex referrals with multiple referral contacts and interaction history get a custom Referral__c junction object linked to both the People and Company records.

Virtual Case Management

Case Note

maps to

Twenty CRM

Note

1:1
Fully supported

VCM case notes migrate as Twenty Notes attached to the relevant People record (for client-level notes) or Opportunity record (for case-level notes). Original author, created date, and note-category metadata are preserved in custom fields on the Note object. Rich-text formatting in VCM notes is flattened to plain text to ensure compatibility with Twenty's Note body field, and file attachments on case notes are re-uploaded as Twenty Files linked to the same parent record.

Virtual Case Management

Agency / Service Provider

maps to

Twenty CRM

Company

1:1
Fully supported

VCM agencies and service providers map to Twenty Companies. Agency name becomes Company Name; agency type, service categories, and address data map to the corresponding Company fields. The agency's relationship to multiple clients (N:N in VCM) is resolved by creating one Company per agency and linking it to each relevant People record via the Company relation.

Virtual Case Management

Case Worker / Staff

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

VCM case workers map to Twenty Workspace Members. We match VCM staff by email address to Twenty workspace invitees. Caseload assignments (which clients a worker is assigned to) migrate as a custom People custom field (Primary_Case_Worker__c) on the People record. If a VCM staff member has no matching Twenty account, they are flagged for manual workspace invite before migration.

Virtual Case Management

Document / File

maps to

Twenty CRM

File

1:1
Fully supported

VCM file attachments re-upload to Twenty Files linked to the parent People, Opportunity, or custom Case__c record. File category metadata (intake form, consent document, service log) migrates as custom text fields on the file. File size limits per Twenty storage configuration apply.

Virtual Case Management

Program / Service Type

maps to

Twenty CRM

Custom Field on Opportunity or Case__c

1:1
Fully supported

VCM program codes (e.g., Emergency Shelter, Food Pantry, Case Management) are pick-list values in VCM. We map each program code to a corresponding custom pick-list value in Twenty's Service_Type__c or Program_Code__c field. Unmapped program codes are flagged for manual value creation in Settings → Data Model before migration.

Virtual Case Management

Workflow / Automation

maps to

Twenty CRM

Not migrated

1:1
Fully supported

VCM workflows — enrollment triggers, service-reminder automations, case-update notifications — have no Twenty CRM equivalent and do not migrate. FlitStack AI exports the workflow definitions as a JSON reference document for your Twenty admin to rebuild using Twenty Workflows (available on Pro and Organization tiers).

Virtual Case Management

Report / Dashboard

maps to

Twenty CRM

Not migrated

1:1
Fully supported

VCM reports on enrollment rates, service-delivery metrics, and client outcomes do not transfer to Twenty. The underlying data (People, Opportunities, custom Case__c, Service_History__c) migrates and becomes available for Twenty views and API-based reporting. Your team builds new reports in Twenty from the migrated data.

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.

Virtual Case Management logo

Virtual Case Management gotchas

High

No publicly documented bulk export API

Medium

Report definitions are not exportable

Low

Database-entry interface creates training burden

Medium

Multi-agency security level mapping requires manual verification

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

  • VCM case-enrollment model requires custom object design before migration

    VCM Cases model program enrollment with enrollment dates, discharge reasons, program codes, and referral sources — none of which have a native Twenty CRM equivalent. Twenty Opportunities use StageName (a pick-list tied to a Sales Process) for pipeline state and CloseDate for expected close, neither of which maps to case-discharge semantics. We surface two migration paths: map Cases to Opportunities using a custom Case_Status__c pick-list and a custom Discharge_Date__c field, or create a custom Case__c object (Pro and Organization tiers support unlimited custom objects). Your admin must pre-create the custom object and its fields in Settings → Data Model before data lands — Twenty's CSV import creates records, not fields. We deliver the exact schema spec during planning so the setup can happen in parallel.

  • Service-history records need a dedicated custom object with relational links

    VCM service records (date, type, duration, staff, units) are structured records in a one-to-many relationship with the client. Twenty has no native equivalent — Opportunities track deal metrics but not individual service events. FlitStack creates a Service_History__c custom object in Twenty (requires Pro or Organization tier for custom objects) with a relation field linking each service record back to the People record. The custom object must be created in Settings → Data Model before migration runs, and the relation field must be configured so Twenty's import validates the peopleId reference exists before the service record inserts.

  • VCM referral N:N relationships need a junction object or field-based resolution

    VCM allows a client to be referred by multiple agencies across multiple cases, and an agency to refer across multiple clients — a many-to-many relationship that doesn't map cleanly to Twenty's Company-People-Opportunity model. Twenty supports custom objects as junction entities, but the junction must be designed before migration. We typically resolve this by storing the primary referring agency on the Opportunity (Referring_Agency__c) as a text field linked to a Company, and creating a custom Referral__c object for secondary referrals. If your VCM setup relies heavily on multi-agency referral chains, a custom junction object design is needed upfront — we include this in the migration schema plan.

  • Twenty's API rate limits differ by cloud tier and require pagination handling

    Twenty Cloud Pro limits API calls to 100/minute; Organization tier allows 200/minute (per twenty.com/pricing). VCM data exports often contain thousands of client records, service lines, and notes — a naive API loop will hit rate limits on the Organization tier and fail on Pro. FlitStack uses batched inserts with exponential backoff on 429 responses and paginates all list queries using Twenty's cursor-based pagination (described in docs.twenty.com/user-guide/data-migration/how-tos/import-data-via-api). For VCM setups over 10,000 records, we recommend migrating via the Twenty CSV import UI (up to 20,000 records per export) backed by our API-driven field mapping to handle relational links that CSV alone cannot resolve.

  • Case-worker assignment needs email-matched Workspace Members before migration

    VCM case workers are linked to clients by staff ID. Twenty assigns records to Workspace Members, and the assignee field on Opportunities and Tasks accepts a workspaceMemberId. If a VCM case worker has no corresponding Twenty workspace account, the assignment cannot resolve during migration — the record inserts but the assignee is null or defaults to the migration service account. We match VCM staff by email address against Twenty workspace invitees before migration. Any unmatched staff are flagged for manual workspace invitation. This is a hard dependency: records with null assignees after migration will require a bulk update in Twenty after all users are onboarded.

Migration approach

Six steps for a successful Virtual Case Management to Twenty CRM data migration

  1. Audit VCM data and design Twenty schema

    FlitStack AI audits your VCM export — client records, case files, service history, referrals, case notes, and documents — to produce a data volume count and schema map. We then deliver a Twenty schema setup plan specifying which custom objects and custom fields to create in Settings → Data Model (Case__c, Service_History__c, Referral__c, and any custom fields on People and Opportunity). Your admin creates these in Twenty while we prepare the migration scripts. This step typically takes 3–5 business days.

  2. Invite and resolve all workspace members

    Before data lands, all VCM case workers who will appear as assignees need Twenty workspace accounts. We extract all unique staff email addresses from VCM, match them against your existing Twenty workspace members, and flag any unmatched staff for manual invitation. No record assigns to a case worker without a corresponding Twenty WorkspaceMember — resolving this dependency upfront prevents null assignee issues during migration.

  3. Migrate companies and agencies first, then people

    Twenty's CSV import documentation explicitly requires uploading the 'one' side of one-to-many relationships before the 'many' side. We migrate VCM agencies and service providers to Twenty Companies first, then migrate VCM clients to Twenty People, resolving the people-to-company link using the migrated company domain or ID. This sequencing ensures that when Twenty validates the companyId relation on each People record, the referenced Company already exists in the workspace.

  4. Run a sample migration with field-level diff

    A representative slice of VCM records — typically 100–500 covering clients, agencies, cases, service lines, and notes — migrates to your Twenty staging workspace before the full run. We generate a field-level diff comparing source values against the destination records so you can verify the People-to-Company linkage, case-status to Opportunity mapping, referral field resolution, and service-history relation integrity. Any mapping adjustments get made before the production run commits.

  5. Execute full migration with delta pickup and rollback plan

    The full VCM dataset migrates to your Twenty production workspace via API batch inserts with rate-limit handling. A delta-pickup window (typically 24–48 hours) captures any new records or case updates made in VCM during the cutover. FlitStack AI maintains an audit log of every operation and a one-click rollback script that re-imports from the pre-migration VCM backup if reconciliation identifies record mismatches. Once validated, your team transitions to Twenty and VCM is set to read-only or decommissioned.

Platform deep dives

Context on both ends of the pair

Virtual Case Management logo

Virtual Case Management

Source

Strengths

  • Purpose-built for nonprofit and human services case management rather than adapted from a general CRM.
  • Referral system natively links client records across the VCM agency network without manual re-entry.
  • Multi-security-level architecture addresses inter-agency confidentiality requirements out of the box.
  • Responsive support team helps users resolve questions without extensive documentation.
  • Client auto-ID generation provides immediate record organization for new agencies.

Weaknesses

  • Reporting and analytics tools are shallow and do not meet typical funder or management reporting requirements.
  • No publicly documented bulk export or API, making data portability a significant hurdle.
  • Steep learning curve for users without database or structured data entry experience.
  • Limited customization compared to modern CRM platforms, restricting workflow adaptation as agencies grow.
  • No clear path to advanced automation or deep third-party integrations.
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. 2 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 Virtual Case Management and Twenty CRM.

  • Object compatibility

    B

    2 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

    Virtual Case Management: Not publicly documented — confirmed during integration scoping..

  • Data volume sensitivity

    B

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

Estimator

Estimate your Virtual Case Management 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 Virtual Case Management to Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most VCM to Twenty CRM migrations complete in 3–5 days for setups under 5,000 client records using a clean, standard data model. Complex migrations with 50,000+ records, multiple custom objects (Case__c, Service_History__c), referral junction objects, and case-note history extend to 2–4 weeks. The longest planning step is designing the Twenty custom-object schema in Settings → Data Model — this can run in parallel with FlitStack's migration script preparation and doesn't add to the critical path.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Virtual Case Management.
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