CRM migration

Migrate from Novo Work Order to Twenty CRM

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

Novo Work Order logo

Novo Work Order

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

10 of 10

objects map 1:1 between Novo Work Order and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Novo Work Order is a work-order and asset-management platform built for field-service and maintenance teams; its data model centers on Work Orders, Assets, Requesters, and associated notes. Twenty CRM is a modern open-source CRM that structures data around People, Companies, Opportunities, Notes, and Tasks, with support for custom objects via the /metadata API. The migration translates Novo's work-order records into Twenty Opportunities, its requesters and contacts into People linked to Companies, and its asset records into a custom Asset object or structured notes. FlitStack sequences the import: Companies first (no dependencies), then People (linked by companyId), then Opportunities (linked by company and person), then custom objects last. Asset files and attachments re-upload to Twenty's file storage since CSV imports do not carry binary attachments. Workflows, scheduled maintenance rules, and notification templates are not migrated — those require manual rebuild in Twenty's workflow builder, and FlitStack exports the source workflow definitions as a rebuild reference. Owner and technician resolution happens by email match against Twenty workspace members before records land.

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

Novo Work Order logo

Novo Work Order

What's pushing teams away

  • Search engine across the platform is described in reviews as 'horrible' — locating older work orders or asset records can require multiple filter passes.
  • Some features are not intuitive and require training; reviewers note a documented learning curve.
  • Report writing is difficult to use according to reviewer feedback — operations needing rich custom reporting often supplement with external BI.
  • Public pricing is limited to the ShareNet Basic Edition at $25/user/month (annual, 3-user minimum); higher tiers are quoted by sales.
  • Vendor scale is small relative to FSM / CMMS leaders like Fiix, UpKeep, or ServiceChannel — partner ecosystem and community resources are thinner.

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 Novo Work Order objects map to Twenty CRM

Each row shows how a Novo Work Order 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.

Novo Work Order

Work Order

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Novo Work Orders map to Twenty Opportunities. The WO number becomes the Opportunity name or a reference field; work-order status (Open, In Progress, Completed, Closed) maps to a custom pick-list field on the Opportunity since Twenty does not have a native status enum. The original WO create date is preserved as a custom datetime field for audit continuity.

Novo Work Order

Requester / Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Novo requesters — the individuals who submitted or are associated with a work order — map directly to Twenty People records. Their name, email, phone, and address fields transfer as-is. A person may be linked to multiple work orders, which Twenty handles by linking the same Person record to multiple Opportunity records.

Novo Work Order

Customer / Account

maps to

Twenty CRM

Company

1:1
Fully supported

Novo customer accounts (the organization or property owning the asset) map to Twenty Companies. Company name, domain/website, industry, and address fields transfer directly. Multi-location customers with separate addresses per work order preserve each location address as a custom field on the Company or as a separate Company record per location.

Novo Work Order

Asset / Equipment

maps to

Twenty CRM

Custom Object: Asset

1:1
Fully supported

Novo assets (equipment, vehicles, facilities) have no native equivalent in Twenty's standard object set. FlitStack creates a custom Asset object in Twenty via the /metadata API and maps asset name, asset ID, location, make/model, and condition fields. Each Asset links to the related Company and Opportunity records using relation fields.

Novo Work Order

Work Order Note / Description

maps to

Twenty CRM

Note

1:1
Fully supported

Work order descriptions, internal notes, and resolution summaries map to Twenty Notes records. Each Note is linked to its parent Opportunity and Person records so the full work-order context surfaces in the Twenty timeline view. Original timestamps and note authors are preserved.

Novo Work Order

Work Order Attachment

maps to

Twenty CRM

Twenty File Storage

1:1
Fully supported

Novo file attachments on work orders (photos, PDFs, inspection reports) do not migrate via CSV import. FlitStack re-uploads each attachment to Twenty's file storage, linking the file to the corresponding Opportunity record. Inline images in notes are downloaded, re-hosted, and the links updated in the Note body.

Novo Work Order

Technician / Assigned User

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Novo technicians and work-order assignees resolve by email match against Twenty Workspace Members. Unmatched users are flagged before migration — the team either invites them to Twenty first or assigns their records to a fallback Workspace Member. Technicians without Twenty accounts cannot be linked automatically.

Novo Work Order

Work Order Custom Fields

maps to

Twenty CRM

Custom Fields on Opportunity

1:1
Fully supported

Novo custom fields on work orders (e.g., service type, priority level, permit number, damage category) map to custom fields on the Twenty Opportunity object. Each custom field is created in Twenty's schema via the settings UI or API before migration validation runs. Field types (text, number, date, pick-list) are matched to Twenty's supported field types.

Novo Work Order

Preventive Maintenance Schedule

maps to

Twenty CRM

Custom Object: MaintenanceSchedule

1:1
Fully supported

Novo preventive maintenance schedules and recurring work-order templates have no native equivalent in Twenty. These are documented as a rebuild reference export and can be recreated in Twenty using custom objects, date fields, and workflow triggers. FlitStack does not migrate the scheduling logic — it is a manual-rebuild item.

Novo Work Order

Service Task / Line Item

maps to

Twenty CRM

Custom Field on Opportunity

1:1
Fully supported

Novo work-order line items or service tasks (labor hours, parts used, service codes) typically map to a custom text area or JSON-formatted custom field on the Twenty Opportunity, since Twenty's standard Opportunity object does not have a native line-item sub-object. Complex multi-line structures may require a custom OpportunityLineItem object.

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.

Novo Work Order logo

Novo Work Order gotchas

High

No public API forces migration via built-in exports

Medium

Pricing opacity complicates budget planning

Medium

Municipal-specific custom fields need careful schema mapping

Low

Preventative maintenance recurrence rules vary by configuration

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

  • Work-order status has no native equivalent in Twenty's Opportunity object

    Novo Work Order uses a multi-state status field (Open, In Progress, On Hold, Completed, Closed) that governs the lifecycle of each job ticket. Twenty CRM's standard Opportunity object uses a StageName pick-list tied to a sales pipeline, which does not map cleanly to maintenance-job statuses. FlitStack creates a custom workOrderStatus__c pick-list field on the Opportunity object and preserves the full set of Novo status values. If your team uses more than 10 distinct statuses, confirm that the custom field accommodates all values before migration runs.

  • File attachments on work orders do not migrate via CSV import

    Twenty's CSV import function does not carry binary attachments — photos, inspection reports, signed forms, and parts diagrams attached to Novo work orders must be handled separately. FlitStack's standard migration includes re-uploading each file to Twenty's file storage and linking it to the corresponding Opportunity record. If your team has hundreds of large files, file re-hosting can add a scope line item because it requires individual download-upload cycles and a link-update step for inline images embedded in work-order notes.

  • Preventive maintenance schedules and recurring work-order templates require manual rebuild

    Novo Work Order includes preventive maintenance scheduling — the ability to generate recurring work orders based on time intervals or meter readings. Twenty has no native equivalent for scheduled maintenance generation; those rules must be rebuilt in Twenty's workflow builder or handled by an external scheduling integration. FlitStack exports the Novo maintenance schedule definitions as a structured JSON reference so the Twenty admin has a rebuild blueprint. This is not a migration step — it is a post-migration configuration task that typically requires a day or two of setup.

  • Twenty's import order constraint requires companies to migrate before people

    Twenty's documentation is explicit: companies must be imported before people, and people before opportunities, because foreign-key relationships resolve during the import. Novo's work orders may contain requesters without an associated customer account, and some assets may not link to any customer. FlitStack handles orphaned records by attaching unlinked people to a default 'Unassigned' Company record and flagging assets without a customer link. The migration plan must resolve these cases before the full import runs to avoid relationship gaps in Twenty.

  • Technician email matching to Twenty Workspace Members can leave orphaned assignments

    Novo technicians and work-order assignees do not map to any Twenty object by default — FlitStack resolves them by matching the technician's email address against Twenty Workspace Members. If a technician has no Twenty account, or if their email in Novo differs from their Twenty invite email, that assignment lands unmapped and the Opportunity shows no assignee. The migration pre-flight report flags every unmatched technician before the run commits, giving the team 48 hours to invite or reassign before cutover.

Migration approach

Six steps for a successful Novo Work Order to Twenty CRM data migration

  1. Audit Novo Work Order data and plan Twenty schema

    FlitStack pulls a full data export from Novo — all work orders, requesters, customers, assets, and custom fields. We audit record counts, identify orphaned relationships (requesters without accounts, assets without customers), and document every custom field on work orders and assets. From this audit we deliver a Twenty schema setup plan: which custom fields to create, what types they need, whether a custom Asset object is required, and which custom pick-list values need to be pre-loaded. Your Twenty admin creates the schema before FlitStack validation runs.

  2. Resolve technicians and requesters against Twenty workspace members

    FlitStack retrieves the list of Twenty Workspace Members via the Twenty API and compares each Novo technician and requester email address against those accounts. Any email that does not match a Twenty member appears in a pre-flight report, giving the team the choice to invite the user to Twenty or map the record to a designated fallback workspace member. Opportunities are only created once every assignee resolves to an existing member; unresolved cases are logged and scheduled for post-migration cleanup.

  3. Migrate companies first, then people, then opportunities, then custom objects

    Following Twenty's import-order constraint, FlitStack sequences the migration: Companies (no dependencies), People linked by companyId, Opportunities linked to companies and people, and finally the custom Asset object with its relation fields. Each batch validates before the next begins. Relationship errors (e.g., a person with a non-existent companyId) are corrected in the CSV and re-imported before the next object type runs.

  4. Re-host work-order attachments and link files to opportunities

    Novo file attachments on work orders are downloaded, uploaded to Twenty's file storage, and linked back to the corresponding Opportunity record. Inline images embedded in work-order notes are extracted, re-hosted, and their URLs updated in the Note body. This step runs in parallel with the data migration and is included in the base scope — large volumes of high-resolution photos may require a scope add-on.

  5. Run sample migration with field-level diff and execute full cutover with delta pickup

    A representative slice — typically 100–500 records spanning all object types — migrates first. FlitStack generates a field-level diff showing every source field value and its destination counterpart, so you can verify that status mapping, asset linking, and assignee resolution are correct. After your sign-off, the full migration runs and a 24–48 hour delta-pickup window captures any work orders created or modified in Novo during the cutover. The audit log records every operation, and one-click rollback is available if reconciliation fails.

Platform deep dives

Context on both ends of the pair

Novo Work Order logo

Novo Work Order

Source

Strengths

  • Links work orders directly to physical assets and equipment for full maintenance history
  • Multi-department routing handles municipal organizational structures out of the box
  • Preventative maintenance scheduling reduces reactive repairs on infrastructure
  • Custom fields, forms, and workflows adapt to municipal compliance and reporting requirements
  • Mobile app allows field technicians to update work order status and log labor from the job site

Weaknesses

  • No public API documented — migration depends on built-in export functions and support coordination
  • Pricing is opaque — no self-service quotes, free tier, or published per-seat cost
  • Designed for municipal government use cases — lacks commercial field service contract and SLA features
  • Limited third-party integrations compared to modern FSM platforms
  • Reporting and analytics are built-in dashboards rather than a queryable data warehouse
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 Novo Work Order 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

    Novo Work Order: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Novo Work Order 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 Novo Work Order to Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Small migrations under 25,000 records typically complete in 48–72 hours of clock time once the Twenty schema is ready. Larger setups with 100,000+ records or complex asset and custom-object structures extend to 5–10 days. The longest single step is creating and validating the custom Asset object schema and its relation fields before data lands. FlitStack provides a timeline estimate after the initial data audit.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Novo Work Order.
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