CRM migration
Field-level mapping, validation, and rollback between EZ Office and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
EZ Office
Source
Odoo CRM
Destination
Compatibility
10 of 11
objects map 1:1 between EZ Office and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
EZ Office (EZOfficeInventory) is fundamentally an asset management and CMMS platform that tracks physical assets, inventory stock, vendors, members, and locations with check-in/check-out workflows. Odoo CRM is a partner-centric sales management system built around res.partner records, crm.lead opportunities, and sales team structures. These data models diverge significantly: EZ Office treats every entity as a tracked asset or vendor; Odoo CRM treats most data as partner records with supplier/customer flags. The migration must decide whether EZ Office vendors map to Odoo supplier partners, members map to customer contacts, and whether physical assets map to Odoo product templates or stock.quants. FlitStack AI reads EZ Office's exportable CSV fields across all modules, builds a custom field mapping plan, and migrates via Odoo's XML-RPC API using the partner and lead objects. Workflows, automations, check-in/check-out rules, and custom field configurations in EZ Office do not migrate — they must be rebuilt in Odoo using its own automation framework. A delta-pickup window captures any changes made during the cutover window.
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 Odoo 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
Vendors
Odoo CRM
res.partner
1:1EZ Office vendors map to Odoo res.partner records with the supplier flag set to True. Company-type partners use partner_type='company'; individual vendors use partner_type='person'. Vendor-specific fields such as tax ID and payment terms from EZ Office migrate to custom fields on res.partner (x_vendor_payment_terms, x_vendor_rating). The email field on res.partner enables later linking to purchase orders via Odoo's purchase module.
EZ Office
Members
Odoo CRM
res.partner
1:1EZ Office members map to Odoo res.partner records with the customer flag set to True. Members with company associations link to a parent res.partner record for the company using parent_id. Member-specific properties such as membership tier and join date migrate as custom fields (x_membership_type, x_ezo_join_date) on res.partner. The customer_rank field is set to 1 to enable proper customer portal access in Odoo.
EZ Office
Assets
Odoo CRM
product.product / stock.quant
1:manyEZ Office assets split across two Odoo objects: product.product for the asset template (name, category, default_code) and stock.quant for the inventory instance tracking location_id, quantity, lot/serial number. Consumable vs. storable classification in EZ Office drives the product type in Odoo (product.type field). Serial numbers on assets create stock.production.lot records linked via lot_id on the quant.
EZ Office
Asset Stock
Odoo CRM
stock.quant
1:1EZ Office Asset Stock records map directly to Odoo stock.quant entries. The location_id in Odoo corresponds to the EZ Office location hierarchy, preserving the storage context for each item. Quantity on hand translates directly to the quant's quantity field. Lot/serial numbers from EZ Office map to stock.production.lot records, which then link to the appropriate quant via lot_id.
EZ Office
Locations
Odoo CRM
stock.location
1:1EZ Office locations migrate to Odoo stock.location records preserving the complete hierarchical structure. The full hierarchical path from EZ Office (available via the 'Show hierarchical location in item listings' company setting) maps to Odoo's parent_path field, which stores the ancestry chain for tree queries and filtering. Each location also receives its location_type designation (internal, inventory, production) matching EZ Office's location classification.
EZ Office
Users
Odoo CRM
res.users
1:1EZ Office users map to Odoo res.users by email match using the login field. Admin-level users in EZ Office may become Odoo group 'Sales / Administrator' or 'Inventory / Manager' based on their role flags and access levels. Standard users map to 'Sales / User' or 'Stock / User' groups. Unmatched users are flagged before migration for manual Odoo user creation.
EZ Office
Groups
Odoo CRM
crm.team
1:1EZ Office groups (departments or teams managing assets) map to Odoo crm.team records preserving the team structure. Team member assignment in EZ Office maps to crm.team member_user_ids in Odoo, linking the migrated res.users to their respective sales teams. Each team receives its own pipeline with stage configuration in Odoo CRM, with stages created during the pre-migration schema setup phase.
EZ Office
Documents
Odoo CRM
ir.attachment
1:1EZ Office documents linked to assets or members migrate as Odoo ir.attachment records with res_model and res_id pointing to the migrated product.product or res.partner record respectively. Binary file content is downloaded from EZ Office via the per-record export mechanism and pushed to Odoo's filestore through the ir.attachment datas field using base64 encoding.
EZ Office
Reports (data rows)
Odoo CRM
Custom migration report
1:1EZ Office canned reports contain data summaries that have no direct Odoo equivalent. We export the report data as CSV and attach it as an ir.attachment to the relevant Odoo record for reference. The reporting logic must be rebuilt in Odoo's pivot views and custom dashboards.
EZ Office
Inventory Items
Odoo CRM
product.product
1:1EZ Office inventory items map to Odoo product.product records maintaining item-level detail. Item categories in EZ Office map to product.category in Odoo preserving the categorization hierarchy. Quantity fields including on-hand, committed, and forecast quantities translate to stock.quant entries for current inventory positions and product-template virtual_available fields for planning visibility.
EZ Office
Custom Fields (EZ Office)
Odoo CRM
ir.model.fields (custom)
1:1EZ Office custom fields on any object require Odoo custom field creation using the x_ prefix on the target model before migration begins. We generate the field creation plan as part of the pre-migration schema setup. Field type mapping follows these translations: text fields map to char, numbers map to float, dates map to date, and dropdown selections map to selection fields in Odoo.
| EZ Office | Odoo CRM | Compatibility | |
|---|---|---|---|
| Vendors | res.partner1:1 | Fully supported | |
| Members | res.partner1:1 | Fully supported | |
| Assets | product.product / stock.quant1:many | Fully supported | |
| Asset Stock | stock.quant1:1 | Fully supported | |
| Locations | stock.location1:1 | Fully supported | |
| Users | res.users1:1 | Fully supported | |
| Groups | crm.team1:1 | Mapping required | |
| Documents | ir.attachment1:1 | Mapping required | |
| Reports (data rows) | Custom migration report1:1 | Fully supported | |
| Inventory Items | product.product1:1 | Fully supported | |
| Custom Fields (EZ Office) | ir.model.fields (custom)1: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)
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Export all EZ Office modules via CSV and audit the data model
FlitStack AI initiates CSV exports from every EZ Office module: Assets, Asset Stock, Inventory, Vendors, Members, Users, Locations, Groups, and Documents. We audit the export outputs for field completeness, identify custom fields per module, and flag any module with more than 50 custom fields for custom field creation in Odoo before migration. We also identify which EZ Office records imply a sales pipeline (asset assignments with monetary values, member records with contract amounts) that should become crm.lead records.
Pre-create Odoo schema: custom fields, product categories, stock locations, crm teams
Before any data moves, FlitStack AI creates the Odoo schema elements needed by the mapping plan. This includes: product.category records matching EZ Office asset and inventory categories; stock.location records built in parent-child order from the location hierarchy; res.partner custom fields (x_ezo_join_date, x_membership_type, x_asset_tag, etc.) on the relevant models; crm.team records for each EZ Office group; and crm.stage records for each implied pipeline stage identified in the discovery phase. We deliver a schema setup checklist so your Odoo admin can pre-create anything requiring Odoo UI access.
Resolve all cross-record references and build the ordered migration sequence
EZ Office data has cross-references: vendors linked to inventory items, members assigned to assets, assets stored in locations, documents attached to records. FlitStack AI resolves all foreign-key chains and determines the correct migration order: (1) stock.location records first, (2) res.partner records for vendors and members, (3) product.product records for assets and inventory, (4) stock.production.lot records for serial numbers, (5) stock.quant records, (6) crm.team and res.users assignments, (7) ir.attachment records. Unresolved references (missing parent locations, orphaned owners) are listed in a pre-flight report for your team to clean up before the migration window.
Run a sample migration with field-level diff on a representative slice
A sample migration runs against your Odoo instance using 100–300 representative records from each EZ Office module — covering vendors with tax IDs, members with company associations, assets with serial numbers, inventory items with vendor links, and documents attached to assets. FlitStack AI generates a field-level diff report comparing source values to destination field values, flagging any field where the Odoo value does not match the EZ Office source. You review the diff and approve the mapping before the full run commits.
Execute full migration with delta-pickup window and one-click rollback
The full migration runs in ordered batches per the sequence from Step 3. A delta-pickup window (typically 24–48 hours from migration start) captures any new or modified records created in EZ Office during the cutover. Every operation is logged in FlitStack AI's audit log with source record ID, destination record ID, and field-level before/after values. If reconciliation fails — record counts don't match, a required field is blank, or Odoo validation errors appear — one-click rollback reverts all destination records to pre-migration state so the team can investigate and re-run.
Platform deep dives
EZ Office
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Odoo CRM.
Object compatibility
1 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 Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your EZ Office to Odoo 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 Odoo 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.