ERP migration
Field-level mapping, validation, and rollback between TechnologyOne and Odoo ERP. We move data and schema; workflows are rebuilt natively in Odoo ERP.
TechnologyOne
Source
Odoo ERP
Destination
Compatibility
10 of 12
objects map 1:1 between TechnologyOne and Odoo ERP.
Complexity
BStandard
Timeline
6-10 weeks
Overview
Migrating from TechnologyOne to Odoo ERP is a multi-phase project that begins with the structural reality of TechnologyOne's single-tenanted CiA architecture. Each customer environment runs an isolated dataset with no multi-tenant API covering all objects simultaneously; we negotiate direct dataset access or use the Business View API for financials and the ITP API for invoice operations, scoping each module's environment separately because many customers run both the legacy CI interface and CiA in parallel. We map the general ledger account hierarchy, preserve account codes and balance mappings, extract open AP and AR records with payment arrangements, transfer fixed-asset depreciation schedules with method reconciliation, migrate employee compensation history with effective-dated sequencing, and extract ECM documents and custom fields via EzeScan CMIS-compatible endpoints. Odoo's modular application model means we activate only the relevant apps (Accounting, Inventory, HR, Asset Management, Documents) during migration rather than forcing a bundled suite. Workflows, automations, XlOne reports, and CI-role configurations do not migrate; we deliver written inventories of each for the customer's admin to rebuild in Odoo's studio or via a system integrator.
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 TechnologyOne object lands in Odoo ERP, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
TechnologyOne
Chart of Accounts / General Ledger
Odoo ERP
Account (Accounting)
1:1TechnologyOne's GL account hierarchy with fund accounting and account codes maps to Odoo's Accounting > Chart of Accounts structure. We extract the full account tree via Business View API or direct dataset access, preserving parent-child relationships and account type classifications. Fund ledger splits in TechnologyOne map to separate Odoo account groups or analytic accounts depending on the customer's reporting requirements. Odoo's country-specific chart of accounts templates (AU, NZ) provide a baseline; the customer's custom account codes and fund structures are added during import.
TechnologyOne
Customers (Debtors)
Odoo ERP
Contact / Customer (Accounting)
1:1TechnologyOne customer master records including contact details, payment terms, credit limits, and custom fields map to Odoo Contact records with the Customer flag enabled. Payment terms (Net 30, EOM) migrate to Odoo's Payment Term lines. Credit limits and custom debtor fields transfer to custom fields on the Contact model. We deduplicate by customer code or ABN where applicable.
TechnologyOne
Suppliers (Creditors)
Odoo ERP
Contact / Vendor (Accounting)
1:1TechnologyOne supplier master records map to Odoo Contact records with the Vendor flag enabled. Payment terms, bank details, and custom fields migrate similarly to the customer mapping. Tax registration numbers (ABN for AU) transfer to the Contact's Tax ID field.
TechnologyOne
Open AP Records
Odoo ERP
Vendor Bill (Account Move)
1:1Open accounts payable records with payment arrangements, direct debit mandates, and prepayment schedules migrate as Odoo Vendor Bills (account.move records with move_type = 'in_invoice'). We sequence open items carefully to avoid triggering duplicate payment runs during import. Bulk transaction histories that span multiple fiscal periods are split into separate Vendor Bills by invoice date.
TechnologyOne
Open AR Records
Odoo ERP
Customer Invoice (Account Move)
1:1Open accounts receivable records migrate as Odoo Customer Invoices (account.move with move_type = 'out_invoice'). Payment arrangements and direct debit schedules transfer to Odoo's Account Payment model. Historical invoice aging reports are preserved as analytic line entries for reporting continuity.
TechnologyOne
Fixed Assets
Odoo ERP
Asset (Accounting > Assets)
1:1TechnologyOne asset registers with acquisition dates, depreciation schedules, and asset classifications map to Odoo Asset records. Depreciation methods (straight-line, reducing balance, units of production) require value-mapping reconciliation because Odoo's asset depreciation methods have specific configuration requirements. We extract the asset's NBV at the point of migration and set Odoo's asset value accordingly.
TechnologyOne
Employees
Odoo ERP
Employee (HR)
1:1TechnologyOne HR module employee records including job titles, department assignments, compensation history, and effective-dated changes migrate to Odoo HR Employee records. Effective-dated changes require sequencing to preserve history in Odoo's employee activity log. We do not migrate payroll processing data that sits in a separate payroll system unless it is part of the HR module dataset.
TechnologyOne
Procurement: Purchase Orders
Odoo ERP
Purchase Order (Purchase)
1:1TechnologyOne purchase orders and purchase requisitions with workflow states and approval histories map to Odoo Purchase Orders. Approval history migrates as internal notes or a custom activity log. Open Purchase Orders at cutover migrate with their current state; closed POs are documented for reporting continuity. Odoo requires the vendor Contact to exist before PO creation, so vendor import precedes PO import.
TechnologyOne
ECM Documents
Odoo ERP
Document (Documents) / Attachment
1:1TechnologyOne ECM stores documents, document sets, compound documents, and custom document fields accessible via EzeScan CMIS-compatible endpoints. We extract document metadata and relationships, preserving the document's folder path as Odoo Tags or a custom Folder model. Custom ECM fields require pre-migration field-level audit against the live ECM environment because there is no self-documenting schema endpoint for custom fields. Document binary files migrate as attachments to the related Odoo record (Contact, Asset, PO, Invoice) where a relationship is identifiable.
TechnologyOne
Property and Rating Assessments
Odoo ERP
Contact / Property Model (custom)
lossyTechnologyOne's Property and Rating module (specific to local government customers) stores assessments, charge runs, and fee schedules. The billing engine uses custom calculation rules that require transformation logic specific to each customer's rate schedule. We map ratepayer records to Odoo Contact, assessment balances to Account Move lines, and document the charge run structure for the customer's admin to configure in Odoo Accounting or a custom module.
TechnologyOne
Custom Properties
Odoo ERP
Custom Fields
lossyTechnologyOne custom fields added to any standard object are discovered during the discovery phase via dataset query or EzeScan field audit. Each custom field is mapped individually to an Odoo custom field (via Studio on Enterprise, or Python ir.model.fields definition on Community/Standard). Field type mapping must be explicit: TechnologyOne string fields map to Odoo char or text; date fields map to Odoo date; lookup fields map to Odoo many2one or selection depending on the target model.
TechnologyOne
Users and Roles
Odoo ERP
Internal User / Portal User
1:1TechnologyOne user accounts and role-based security profiles are tied to the internal CiA identity layer and CI-role UI configuration. These do not migrate because they must be recreated in Odoo with Odoo's own user management, access rights groups, and multi-company setup. We document the TechnologyOne role hierarchy during discovery so the customer's Odoo administrator can rebuild access groups in Odoo Studio or via system configuration.
| TechnologyOne | Odoo ERP | Compatibility | |
|---|---|---|---|
| Chart of Accounts / General Ledger | Account (Accounting)1:1 | Fully supported | |
| Customers (Debtors) | Contact / Customer (Accounting)1:1 | Fully supported | |
| Suppliers (Creditors) | Contact / Vendor (Accounting)1:1 | Fully supported | |
| Open AP Records | Vendor Bill (Account Move)1:1 | Fully supported | |
| Open AR Records | Customer Invoice (Account Move)1:1 | Fully supported | |
| Fixed Assets | Asset (Accounting > Assets)1:1 | Mapping required | |
| Employees | Employee (HR)1:1 | Mapping required | |
| Procurement: Purchase Orders | Purchase Order (Purchase)1:1 | Fully supported | |
| ECM Documents | Document (Documents) / Attachment1:1 | Fully supported | |
| Property and Rating Assessments | Contact / Property Model (custom)lossy | Mapping required | |
| Custom Properties | Custom Fieldslossy | Mapping required | |
| Users and Roles | Internal User / Portal User1:1 | Not 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.
TechnologyOne gotchas
CI-to-CiA hybrid environments complicate data scoping
Single-tenanted dataset requires direct database access
Custom document fields in ECM require manual discovery
XlOne and custom financial reports do not auto-migrate
Odoo ERP gotchas
No rollback for CSV imports
External ID conflicts on re-import
Many2many field encoding in CSV imports
Large export timeouts require batching
Version schema drift between Odoo releases
Pair-specific challenges
Migration approach
Discovery and TechnologyOne environment audit
We audit the source TechnologyOne environment across all deployed modules (Financials, HR, Procurement, Asset Management, ECM, Property and Rating) and confirm whether each module runs on CI or CiA. We negotiate dataset access or API credentials (Business View API for financials, ITP API for invoices, EzeScan for ECM) and establish rate limits and endpoint availability per module. The discovery output is a written extraction plan listing every object to be migrated, its source environment, its access method, and any known hybrid environment flags.
Odoo edition and app selection
We recommend Odoo edition (Community vs Enterprise) and which apps to activate based on the modules in scope. Odoo Enterprise unlocks Studio for custom field creation without Python development; Odoo Community requires a system integrator or in-house developer for custom fields. We design the Odoo chart of accounts using the AU or NZ country template as a baseline and overlay the customer's TechnologyOne account hierarchy, fund structures, and account codes. We configure tax rates and payment terms to match TechnologyOne's configuration.
Sandbox migration and data quality review
We run a full migration into an Odoo sandbox environment using production-like data volume. The customer's finance lead reviews migrated account balances, open AP/AR totals, asset valuations, and employee record counts against the TechnologyOne source. Data quality issues including duplicate supplier records, mismatched payment terms, and inconsistent GL coding are resolved before production migration. Odoo field-type incompatibilities (padded strings, date formats, selection values) are corrected in the transform layer at this stage.
Custom ECM field discovery and document mapping
We query the TechnologyOne ECM environment via EzeScan CMIS endpoints or direct dataset access to enumerate all custom document fields. Any missed custom fields result in blank values in migrated documents, so we cross-reference the full field list against the live ECM environment before building the Odoo document mapping. Document binary files are extracted, renamed to a consistent convention, and attached to the relevant Odoo records (Contact, Asset, Purchase Order, Invoice) based on the TechnologyOne document relationship model.
Production migration in dependency order
We run production migration in dependency order: Vendors and Customers (Contact records) first, then Chart of Accounts, then open Vendor Bills and Customer Invoices, then Fixed Assets, then Employees, then Purchase Orders, then ECM documents and attachments. Each phase emits a row-count reconciliation report and a balance-check report (where applicable) before the next phase begins. We use Odoo's XML-RPC API with batch chunking for imports and coordinate with the customer's Odoo administrator to temporarily disable validation rules that could block import during the migration window.
Cutover, validation, and reporting rebuild handoff
We freeze TechnologyOne writes during cutover, run a final delta migration of any records modified during the migration window, and enable Odoo as the system of record. We validate GL balance totals, open AP/AR aging reports, asset register counts, and employee headcount against TechnologyOne's closing reports. We deliver the XlOne and custom financial report inventory to the finance team with a remapping guide. We deliver the TechnologyOne role hierarchy document for the Odoo administrator to rebuild access groups in Odoo. We support a one-week hypercare window for reconciliation issues. We do not rebuild CI-role configurations or CI workflow chains as Odoo automated actions within the migration scope.
Platform deep dives
TechnologyOne
Source
Strengths
Weaknesses
Odoo ERP
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP 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 TechnologyOne and Odoo ERP.
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
TechnologyOne: Not publicly documented. Customers receive rate limit details from their TechnologyOne project manager during integration onboarding, and limits vary by module and by whether the customer is on SaaS+ or self-hosted..
Data volume sensitivity
TechnologyOne 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 TechnologyOne to Odoo ERP migration scoping. Not seeing yours? Book a call.
Walk through your TechnologyOne to Odoo ERP migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave TechnologyOne
Other ways to arrive at Odoo ERP
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.