CRM migration
Field-level mapping, validation, and rollback between EZ Office and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
EZ Office
Source
Twenty CRM
Destination
Compatibility
9 of 10
objects map 1:1 between EZ Office and Twenty CRM.
Complexity
BStandard
Timeline
3–7 days
Overview
EZO and Twenty CRM occupy fundamentally different positions in the business software stack. EZO is an asset-intelligence and inventory-tracking platform built around physical assets, stock quantities, vendor relationships, and location-aware assignment workflows. Its core objects—Assets, Vendors, Locations, Members, and Inventory—track who owns what equipment and where it lives. Twenty CRM is a modern open-source CRM built on TypeScript and PostgreSQL that organizes data around People (contacts), Companies (accounts), and Opportunities (deals) with a relational model designed for sales and customer relationship workflows. The migration from EZO to Twenty CRM is therefore not a like-for-like platform swap but a data-model restructuring: asset records with assigned contacts become Twenty People linked to Companies; vendor records map to Company records with a vendor-type tag; stock quantities and locations require custom fields or Opportunity records depending on whether you're tracking product deals or service engagements. FlitStack AI extracts EZO data via its CSV export function for Assets, Vendors, Locations, Members, and custom reports, then transforms and loads that data into Twenty via the REST and GraphQL API (100 requests per minute on Pro, 200 per minute on Organization). The migration carries all standard fields, custom fields, and historical assignment data. It does not carry EZO workflows, maintenance schedules, or barcode-scanning logic—those require manual rebuild inside Twenty's workflow builder. Delta-pickup captures any records modified during cutover, and rollback is available if reconciliation reveals mapping gaps.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a EZ Office 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.
EZ Office
Member
Twenty CRM
People
1:1EZO Members are the people who check out, use, and maintain assets. Each Member maps directly to a Twenty People record. Email, phone, and job-title fields translate 1:1. The Member's ID from EZO is stored as Source_System_ID__c on the Twenty People record for traceability. Members without email addresses are imported with a placeholder identifier and flagged for manual review.
EZ Office
Member (with active asset assignments)
Twenty CRM
People + Custom Junction Object
1:1EZO allows a Member to be assigned multiple assets simultaneously. Twenty People records support a primary Company link via companyId but don't natively support multi-asset assignment lists. We create a custom 'AssetAssignment' junction object in Twenty linking People to the imported Asset records, preserving which assets a Member currently holds and historically held.
EZ Office
Vendor
Twenty CRM
Company
1:1EZO Vendors are organizations that supply equipment, parts, or services. They map directly to Twenty Companies records. The vendor's name, website, contact information, and address fields map to the corresponding Twenty Company fields. We tag each vendor record with a custom 'Company_Type__c' field set to 'Vendor' so teams can filter vendor companies separately from customer accounts.
EZ Office
Location
Twenty CRM
Company
1:1EZO Locations represent physical sites, rooms, or storage areas where assets are stored or deployed. In Twenty, which lacks a native Location object, we map Locations to Company records with a custom 'Location__c' boolean flag. The full hierarchical path (e.g., Building A → Floor 2 → Room 204) is preserved in a custom text field if EZO's 'Show hierarchical location in item listings' setting was enabled.
EZ Office
Asset
Twenty CRM
Custom Object (Asset) + Company Link
1:1EZO Assets are the core data entity—serialized equipment, fleet items, or tracked inventory with lifecycle states (Available, Checked Out, In Maintenance, Retired). Twenty has no native Asset object. We create a custom 'Asset__c' object in Twenty with fields for name, serial number, asset tag, status, and purchase date. Each Asset links to a Company (the owning organization or the member who checked it out) via a relation field.
EZ Office
Asset Stock / Inventory
Twenty CRM
Custom Object (Inventory) + Opportunity
1:manyEZO inventory tracks stock quantities of consumable or serialized items. When inventory represents items for sale or service deals, we create Opportunity records in Twenty with the item name, quantity, and expected close date. For purely operational stock tracking (spare parts, supplies), we create a custom 'Inventory__c' object with quantity_on_hand and reorder_point fields. The split is determined by the inventory category set in EZO.
EZ Office
Asset Event / Custody History
Twenty CRM
Task
1:1EZO records check-in/check-out events, custody transfers, and maintenance activities with timestamps and assigned user. Each event maps to a Twenty Task record linked to the relevant Asset__c and People records. The task subject captures the event type (e.g., 'Checked Out to John Smith'), and the task due date captures the event timestamp. This preserves the full operational audit trail on the asset record.
EZ Office
Document
Twenty CRM
Note + File Attachment
1:1EZO documents attached to assets, vendors, or locations export via the 'export documents data' function. In Twenty, documents attach to the corresponding record (Asset__c, Company, or People) as Notes with a link to the file URL. If EZO documents are stored in Dropbox (a supported integration), we re-upload them to Twenty's file storage or a linked cloud location.
EZ Office
Custom Field (EZO)
Twenty CRM
Custom Field (Twenty)
1:1EZO custom fields on Assets, Members, Vendors, and Locations are extracted during the CSV export. In Twenty, each custom field must be pre-created in Settings → Data Model with the matching field type (text, number, select, date, etc.). We deliver a custom field creation plan before migration runs so the Twenty schema is ready to receive the imported data without type-mismatch errors.
EZ Office
Report
Twenty CRM
Not Migrated
1:1EZO Reports are pre-built or custom report definitions with filtering and grouping logic. Twenty has no equivalent report builder that preserves EZO's report structure. The underlying data (Assets, Vendors, Members) migrates, but EZO report definitions must be rebuilt in Twenty's views and filtering system. We provide a report-rebuild reference document mapping each EZO report to the corresponding Twenty view configuration.
| EZ Office | Twenty CRM | Compatibility | |
|---|---|---|---|
| Member | People1:1 | Fully supported | |
| Member (with active asset assignments) | People + Custom Junction Object1:1 | Fully supported | |
| Vendor | Company1:1 | Fully supported | |
| Location | Company1:1 | Fully supported | |
| Asset | Custom Object (Asset) + Company Link1:1 | Fully supported | |
| Asset Stock / Inventory | Custom Object (Inventory) + Opportunity1:many | Fully supported | |
| Asset Event / Custody History | Task1:1 | Fully supported | |
| Document | Note + File Attachment1:1 | Fully supported | |
| Custom Field (EZO) | Custom Field (Twenty)1:1 | Fully supported | |
| Report | Not Migrated1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
EZ Office gotchas
No public API — migrations use CSV export only
Document blob extraction is separate from asset records
Hierarchical location display requires a company setting to be enabled
Custom fields vary per account and require manual mapping
EZO is a distinct product from Trimble EZ-Office (agriculture)
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
Audit EZO data and design Twenty schema
FlitStack AI exports EZO's full data set via CSV—Assets, Vendors, Locations, Members, Inventory, and Asset Events—while simultaneously auditing custom field definitions from EZO's More → Customize → Custom Fields panel. We then design the Twenty data model: creating the Asset__c and Inventory__c custom objects, adding all custom fields to the standard People and Company objects, and configuring the AssetAssignment junction object with the relationshipType pick-list. The schema setup plan is delivered before any data moves so your Twenty workspace is field-ready at import time.
Resolve foreign key relationships and sequence the load order
EZO's flat CSV files contain foreign key references (vendor_id, location_id, assigned_to) that must resolve to Twenty record IDs before loading. FlitStack AI first loads Companies from both the Vendor and Location CSV exports, tagging each with its source type (Vendor or Location) and a Source_System_ID__c for traceability. Members are loaded next as People records. Finally, Assets are transformed by resolving vendor_id and location_id to the newly created Twenty Company records, and assigned_to to the matching Twenty People record by email. The import sequence is: Locations → Vendors → Members → Assets → Inventory → Asset Events.
Migrate activity history and custody events as Tasks
EZO's check-in/check-out events, custody verifications, and maintenance activities are exported as a chronological event log. FlitStack AI transforms each event into a Twenty Task record linked to the corresponding Asset__c and People records, preserving the original event timestamp, event type as the task subject, and the performing member as the task assignee. This creates a searchable audit trail inside Twenty that shows the full custody history of every asset.
Run sample migration with field-level verification
A representative slice of 100–500 records migrates first: a subset of Members, Companies, Assets, and events. We generate a field-level diff between the source CSV and the Twenty records, verifying that custom field values rendered correctly, foreign keys resolved to the right records, and asset status values mapped through the value-mapping table. You review the diff before the full run commits.
Cut over with delta-pickup and rollback verification
The full migration loads all remaining records into Twenty via the REST and GraphQL API, using batched CSV imports where record counts exceed API rate limits. A 24–48 hour delta-pickup window captures any EZO records created or modified during the cutover window—new check-outs, status changes, or added assets. FlitStack AI's audit log records every operation (insert, update, skip) for reconciliation. One-click rollback is available if field-level verification reveals mapping gaps that require schema adjustment before re-running.
Platform deep dives
EZ Office
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across EZ Office and Twenty CRM.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
EZ Office: Not publicly documented.
Data volume sensitivity
EZ Office doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during EZ Office to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your EZ Office to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave EZ Office
Other ways to arrive at Twenty CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.