CRM migration

Migrate from RealGreen by WorkWave to Twenty CRM

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

RealGreen by WorkWave logo

RealGreen by WorkWave

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between RealGreen by WorkWave and Twenty CRM.

Complexity

BStandard

Timeline

5–10 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

RealGreen by WorkWave combines CRM, scheduling, routing, and payment processing for green-industry operators — a purpose-built field-service stack where the CRM component shares a data model with its sister platform WorkWave Service Assistant. Twenty CRM is a modern open-source Salesforce alternative built on TypeScript, NestJS, React, and PostgreSQL, offering People, Companies, Opportunities, Notes, Tasks, and unlimited custom objects with no feature gating on custom fields. The migration carries RealGreen's customer records, company records, work order histories, and payment references into Twenty's standard objects and a custom Work_Order object, while routing data, service-geography configurations, and payment token records are preserved as reference fields or left for manual rebuild. FlitStack sequences the import as Companies → People → Opportunities → Custom Work Orders, respecting Twenty's import-order constraint and resolving owner assignments by email match against Twenty workspace members before data lands. Custom pick-list values for service types, work order statuses, and service territories are mapped from RealGreen's field settings into Twenty's Data Model select fields, ensuring that filtering, grouping, and automation triggers function identically in the destination workspace. Routing engine parameters and WorkWave Payment token credentials cannot be extracted and require separate reconfiguration with third-party routing tools and a new payment processor integration.

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

RealGreen by WorkWave logo

RealGreen by WorkWave

What's pushing teams away

  • Acquisition aftermath and declining support — a LawnSite forum post from a $50K+/year customer describes 2.5 hours per week on hold since WorkWave acquired RealGreen in 2021, citing mass layoffs and eroded customer responsiveness.
  • Steep learning curve and difficult onboarding — multiple G2 reviewers cite slow performance, frequent mobile crashes, and a challenging initial training period that stretches into weeks of lost productivity.
  • Complex and unpredictable pricing — the fully custom pricing model means no public quotes, with one source citing $150–$300+/month typical range, and customers report difficulty forecasting total cost as crews grow.
  • Integration limitations and API costs — WorkWave's developer portal notes a one-time API setup fee plus per-call charges, making third-party integrations expensive and the platform feel siloed from other tools.
  • Mobile app performance failures — G2 reviewers specifically call out crashes on mobile devices, delayed work order status updates after marking projects complete, and poor field usability that undermines the core FSM workflow.

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 RealGreen by WorkWave objects map to Twenty CRM

Each row shows how a RealGreen by WorkWave 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.

RealGreen by WorkWave

Customer (person record)

maps to

Twenty CRM

People

1:1
Fully supported

RealGreen customers map directly to Twenty People. The customer record holds name, email, phone, address, and service flags — all standard Twenty People fields. Original RealGreen customer IDs are preserved in a custom Source_System_ID__c field for delta-run de-duplication. Customers without an assigned company in RealGreen land as standalone People records in Twenty.

RealGreen by WorkWave

Company

maps to

Twenty CRM

Companies

1:1
Fully supported

RealGreen company records (business accounts, property management entities) map 1:1 to Twenty Companies. Company name, domain, industry, address, and employee count translate to the corresponding Twenty Companies fields. RealGreen supports company hierarchies (parent/child); these map to Twenty's nested Companies structure via the parentId reference where applicable.

RealGreen by WorkWave

Work Order

maps to

Twenty CRM

Custom Object: Work_Order

1:1
Fully supported

Work Orders have no native Twenty equivalent — they become a custom Work_Order object created in Settings → Data Model before import. The object holds technician name, service type, territory, scheduled date, status, total amount, and notes. Work Order ID is stored in Source_System_ID__c for traceability. RealGreen's open vs. completed vs. invoiced status maps to a Work_Order_Status__c pick-list.

RealGreen by WorkWave

Work Order Line Item / Service Line

maps to

Twenty CRM

Custom Object: Work_Order_Line_Item

1:1
Fully supported

Individual service lines on a Work Order (e.g., lawn mowing, mulching, aeration) are imported as child Work_Order_Line_Item records linked to the parent Work_Order via a relation field. Each line carries service name, quantity, unit price, and line total. If RealGreen uses bundled pricing, the bundle is stored as a single line with the aggregated amount and a line_description noting the bundle name.

RealGreen by WorkWave

Customer Owner / Assigned Rep

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

RealGreen's assigned representative on a customer or work order is resolved by email match against Twenty workspace members. Unmatched owners are flagged with an Assigned_Rep_Source__c text field containing the RealGreen owner name and email, so the team can manually assign in Twenty post-migration. Twenty requires members to accept invitations before foreign-key relations can be established — this step is sequenced before the People import.

RealGreen by WorkWave

Payment / Invoice Record

maps to

Twenty CRM

Custom Object: Payment_Record

1:1
Fully supported

Payment history from RealGreen (amount, date, method, status) migrates as a custom Payment_Record object linked to the parent Work_Order. Payment tokens and ACH/credit card references are NOT migrated — those live in WorkWave Payments' token vault and cannot be exported. The payment record preserves financial history for reporting; the actual payment method must be re-established with the new payment processor in Twenty.

RealGreen by WorkWave

Territory / Service Area

maps to

Twenty CRM

Custom Field: Service_Territory__c (on Work_Order)

1:1
Fully supported

RealGreen's territory labels (geographic service areas, routing zones) are stored as a text or select custom field on the Work_Order object. If the team uses a structured list of territories, FlitStack creates a select field with the same options so filtering and reporting work in Twenty's kanban and table views.

RealGreen by WorkWave

Note / Attachment

maps to

Twenty CRM

Notes

1:1
Fully supported

Notes attached to RealGreen customers, companies, or work orders migrate as Twenty Notes linked to the corresponding People, Companies, or Work_Order record. Attachments (e.g., signed forms, property diagrams) are downloaded from RealGreen's file storage and re-uploaded to Twenty's file attachment on the related record. File size limits on Twenty's cloud tier apply to individual uploads.

RealGreen by WorkWave

Task / Follow-up

maps to

Twenty CRM

Tasks

1:1
Fully supported

Follow-up tasks and to-dos created in RealGreen (e.g., call customer, schedule re-inspection) migrate as Twenty Tasks linked to the relevant People or Work_Order record. Task status (completed, pending, cancelled) maps to Twenty's status field. Overdue timestamps are preserved in a custom Original_Due_Date__c field for reporting continuity.

RealGreen by WorkWave

Routing Data (route IDs, crew assignments)

maps to

Twenty CRM

Custom Field: Route_Reference__c (on Work_Order)

1:1
Fully supported

RealGreen's dynamic routing engine generates route IDs and crew assignments that have no native equivalent in Twenty's CRM model. These are preserved as a text custom field (Route_Reference__c) on each Work_Order for historical reference. Route optimization logic must be rebuilt using Twenty's workflow builder or an external routing tool — FlitStack exports the RealGreen route schema as a rebuild reference.

RealGreen by WorkWave

Customer Portal Access Flag

maps to

Twenty CRM

Custom Field: Has_Customer_Portal_Access__c

1:1
Fully supported

RealGreen's Customer Assistant Portal access flag indicates whether a customer has self-service login credentials. Twenty has no native customer portal concept; this is preserved as a boolean custom field on the People record for reference. The customer-facing self-service experience must be designed and configured separately in Twenty.

RealGreen by WorkWave

Flag Codes / Customer Status Tags

maps to

Twenty CRM

Custom Field: RG_Flag_Code__c

1:1
Fully supported

RealGreen uses flag codes to categorize customers by status (e.g., priority, do-not-service, pre-pay). These are imported as a text custom field (RG_Flag_Code__c) on the People record. If the team uses a defined set of flag values, a select field with those options is created so filtering and automation triggers in Twenty work the same way.

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.

RealGreen by WorkWave logo

RealGreen by WorkWave gotchas

High

WorkWave API requires paid developer account with setup and per-call fees

High

RealGreen was acquired by WorkWave in June 2021 — support and roadmap have shifted

Medium

Mobile app performance degrades after marking work orders complete

Medium

Snowflake Data Factory requires customer-managed compute costs

Medium

Tokenized payment methods require separate WorkWave transfer request

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

  • WorkWave API requires a paid developer account before export

    RealGreen's WorkWave API is not freely accessible — it requires a paid developer account with a one-time setup fee and per-call charges billed by WorkWave. Teams that have not activated API access cannot run automated exports and must use the manual CSV export from Service Assistant 5's Customer Import Utility, which exports customer and marketing data but does not cover work order history or payment records in bulk. FlitStack requires confirmation of API access or a manual export agreement before scoping the migration, because the data retrieval method directly determines which objects can migrate on day one.

  • Twenty's import order constraint requires Companies before People before Work Orders

    Twenty's CSV import enforces referential integrity: you cannot import People with a companyId reference until the Company records exist, and you cannot import Work Orders with People or Companies lookups until those records are committed. RealGreen stores customers and companies in a flat list, and work orders link to both. FlitStack sequences the migration as Companies → People → Work Orders → Payment Records, with a dependency graph that flags any orphan work orders (customer ID not matched) before the Work Order phase begins. If RealGreen has customers with no assigned company, those land as standalone People records — the dependency is released.

  • Routing data and dynamic route assignments have no CRM equivalent in Twenty

    RealGreen's Dynamic Routing engine generates optimized crew routes and stop sequences that are specific to WorkWave's routing algorithm. Twenty has no native routing or scheduling capability — it is a pure CRM at its core. Route IDs, stop sequence numbers, and crew assignments stored on Work Orders are preserved as text fields (Route_Reference__c, Crew__c) for historical reporting, but the optimization logic cannot be imported. Teams that depend on RealGreen's routing engine for daily scheduling must select a third-party routing tool (Route4Me, Badger Maps, or similar) and rebuild their routing workflows outside Twenty's data model.

  • Payment tokens and WorkWave Payment method references cannot be exported

    RealGreen's integrated payment processing via WorkWave Payments stores credit card tokens and ACH credentials in a WorkWave-controlled vault. These tokens are not accessible via the API and cannot be migrated to Twenty. Payment history (amount, date, method, status) migrates to a custom Payment_Record object for financial reporting continuity, but customers must re-enter payment credentials in Twenty's payment integration. This is a billing and PCI-scope decision that must be communicated to customers before cutover — any recurring payment schedules in RealGreen Autopay must be manually re-established in the new payment processor.

  • Twenty's 20,000-record export cap requires chunking for large work order datasets

    Twenty's CSV export function is capped at 20,000 records per export operation. For RealGreen deployments with large work order histories (common for operators with multi-year records), FlitStack must run multiple targeted exports filtered by date range or status, then consolidate the files before import into the custom Work_Order object. This is handled as part of the field-level mapping plan; the chunking strategy is documented in the migration specification before the test run. RealGreen's own CSV export does not have this cap, so the constraint is purely on the Twenty destination side.

Migration approach

Six steps for a successful RealGreen by WorkWave to Twenty CRM data migration

  1. Confirm RealGreen data access and export method

    FlitStack verifies whether the RealGreen account has an active WorkWave API developer account or whether the migration will rely on Service Assistant 5's manual CSV export. If API access is available, we pull customer, company, work order, and payment data via the WorkWave REST API using authenticated requests. If only CSV export is available, we use the Customer Import Utility templates and a custom Work Order CSV export designed around Twenty's custom object schema. This step produces a data inventory document listing record counts per object and a data quality assessment identifying duplicate records, missing required fields, and orphaned relationships.

  2. Design Twenty data model and create custom objects

    Before any data is imported, FlitStack creates the Work_Order, Work_Order_Line_Item, and Payment_Record custom objects in Twenty's Settings → Data Model, along with all custom fields referenced in the field mapping (Source_System_ID__c, Work_Order_Status__c, Service_Territory__c, Route_Reference__c, Technician__c, etc.). We also invite all team members to the Twenty workspace so owner email resolution works during the People import. A schema setup plan is delivered to the Twenty admin for review and approval before the migration test run begins.

  3. Resolve owner and technician relationships by email

    RealGreen's assigned rep and technician fields are stored as names or email strings, not as foreign keys. FlitStack builds an owner resolution table by matching RealGreen email addresses against invited Twenty Workspace Members. Records with unmatched owners receive an Assigned_Rep_Source__c text field carrying the original RealGreen owner name and email — the Twenty admin assigns these manually post-migration. Technician email-to-member matching is applied to the Work_Order Technician__c field. This step runs before the People import so all owner lookups are pre-resolved and no records land with null owner references.

  4. Run a sample migration with field-level diff

    A representative slice of 200–500 records spanning customers, companies, work orders, and payment records is imported first. FlitStack generates a field-level diff between the source RealGreen export and the Twenty import result, verifying that pick-list value mappings (service type, work order status, territory) translated correctly, that companyId and peopleId lookups resolved for all linked work orders, and that timestamps (created_date, completed_date, payment_date) appear in the custom datetime fields rather than overwriting Twenty's system timestamps. The diff is shared with the customer for sign-off before the full run commits.

  5. Execute full migration with delta-pickup and rollback plan

    The full migration runs Companies → People → Work Orders → Line Items → Payment Records in sequence. A delta-pickup window of 24–48 hours runs alongside the cutover, capturing any RealGreen records modified or created during the migration window. An audit log records every import operation with source record ID, destination record ID, and timestamp. If reconciliation fails — for example, more than 2% of work orders have missing customer links — FlitStack triggers a one-click rollback that reverts all imported records and surfaces the specific failure batch for remediation before a retry.

Platform deep dives

Context on both ends of the pair

RealGreen by WorkWave logo

RealGreen by WorkWave

Source

Strengths

  • Industry-native data model for lawn care, landscaping, irrigation, and arbor service operations with no horizontal CRM adaptation required.
  • Dynamic Routing engine measurably increases crew capacity through automated multi-stop route optimization.
  • Integrated fintech stack combining card processing, autopay, installment billing, and merchant cash advances through WorkWave Payments.
  • Snowflake-based Data Factory with BI tool connectivity gives operators SQL-accessible historical data refreshing every four hours.
  • Comprehensive learning ecosystem with WorkWave University LMS and Community peer support forums.

Weaknesses

  • Fully custom pricing with no public tier structure creates forecasting difficulty for growing operations evaluating total cost of ownership.
  • Mobile app suffers from performance issues and crashes that undermine field-first FSM workflows for crews working offline or in low-connectivity areas.
  • Acquisition by WorkWave in 2021 disrupted support quality and product roadmap continuity, according to long-term customer accounts.
  • Steep onboarding investment — implementations typically require 2–4 weeks including data migration, training, and feature activation.
  • API access requires paid developer account with one-time setup fee plus per-call charges, limiting integration flexibility.
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 RealGreen by WorkWave 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

    RealGreen by WorkWave: Not publicly documented — access negotiated with WorkWave API Sales.

  • Data volume sensitivity

    B

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

Estimator

Estimate your RealGreen by WorkWave 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 RealGreen by WorkWave to Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most RealGreen to Twenty migrations complete in 5–10 days of clock time for datasets under 50,000 records with clean exports. The longest phase is planning the Twenty custom object schema (Work_Order, Payment_Record) and sequencing the import order correctly. Larger datasets with multi-year work order histories, or those relying on manual CSV export instead of the API, extend to 2–4 weeks. The delta-pickup window for in-flight work orders typically adds 24–48 hours beyond the initial load.

Adjacent paths

Related migrations to explore

Ready when you are

Move from RealGreen by WorkWave.
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