ERP migration
Field-level mapping, validation, and rollback between Wiise and Odoo ERP. We move data and schema; workflows are rebuilt natively in Odoo ERP.
Wiise
Source
Odoo ERP
Destination
Compatibility
11 of 12
objects map 1:1 between Wiise and Odoo ERP.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Wiise to Odoo ERP is an architecture-shift migration: Wiise delivers a unified, pre-integrated platform on Microsoft Dynamics 365 Business Central, while Odoo ERP uses a composable app-store model where customers assemble modules from a library of over 40,000. Wiise organises data around a dimensional Chart of Accounts with cost-centre, department, and location tags on every posting; Odoo separates general ledger accounts from analytic accounts as distinct objects, which means dimensional tags require explicit mapping decisions during scoping. We extract master records (Customers, Vendors, Items, Employees, Fixed Assets), open AP/AR balances, and historical trial balances from Wiise via Business Central APIs, then map them to Odoo's res.partner, product.product, account.move, and stock.location models. Custom fields from Wiise transfer to Odoo custom fields, with a pre-flight flag for any decimal values exceeding Odoo's standard precision. Documents and binary attachments cannot migrate via API and require a manual export from Wiise before cutover. We do not migrate Wiise workflows or payroll automation as code; we deliver a written inventory of both for Odoo admin rebuild.
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 Wiise 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.
Wiise
Customer
Odoo ERP
res.partner
1:1Wiise Customer master records map to Odoo res.partner with partner_type set to 'contact' or 'invoiceaddr' depending on the address role. Customer name, address, contact details, payment terms, and credit limits migrate directly. Wiise custom fields on Customer map to Odoo ir.model.fields custom fields (char, selection, date, float) created in the destination database before import. Credit limit precision is preserved; any values exceeding Odoo's standard decimal precision are flagged in the pre-flight report.
Wiise
Vendor
Odoo ERP
res.partner
1:1Wiise Vendor cards map to Odoo res.partner with partner_type = 'supplier'. Purchase terms, currency settings, and vendor-specific dimensional tags migrate. Odoo vendors are in the same table as customers but filtered by supplier flag, so the import uses a partner_category split (Customer vs Vendor) rather than separate tables. Wiise vendor dimensional tags for cost-centre require mapping to Odoo analytic.account records, which are a separate object in Odoo's dimensional model.
Wiise
Item
Odoo ERP
product.product
1:1Wiise Items (stock items, non-stock items, and services) map to Odoo product.product. Item unit cost, inventory posting groups, and warehouse location assignments migrate. Stock vs non-stock vs service type is determined by the item's product type field in Wiise and sets product.type in Odoo (product, consumable, service). Wiise's 2 decimal-place limit on custom decimal fields means any Item-level custom fields storing exchange rates or precise unit costs are rounded before import; we flag each instance in the pre-flight mapping report.
Wiise
Chart of Accounts
Odoo ERP
account.account
1:1Wiise account codes and names migrate directly to Odoo account.account. The mapping is straightforward for standard balance sheet and P&L accounts. Wiise dimensional tags (cost-centre, department, location) attached to postings require a separate mapping to Odoo analytic.account, which is Odoo's equivalent of a cost-centre or project-level reporting dimension. We create the analytic accounts in Odoo during configuration and link them to account.move lines via analytic_distribution during the journal entry import.
Wiise
Open AP
Odoo ERP
account.move (vendor bills)
1:1Outstanding purchase invoices migrate as Odoo account.move records with move_type = 'in_invoice' and state = 'draft' for open items. We preserve invoice date, due date, remaining amount, and currency. Full invoice line history migrates on request but Odoo recommends importing open balances as opening journal entries for cleaner reconciliation at go-live. Wiise's vendor-specific dimensional tags on AP lines require mapping to Odoo analytic.account distribution on each move line.
Wiise
Open AR
Odoo ERP
account.move (customer invoices)
1:1Outstanding sales invoices migrate as Odoo account.move with move_type = 'out_invoice' and state = 'draft' for open items. Customer invoice date, due date, remaining amount, and currency are preserved. As with AP, Odoo recommends absorbing open AR as opening journal entries rather than full historical invoice line imports to avoid Odoo generating duplicate follow-up communications on already-sent invoices.
Wiise
Jobs / Projects
Odoo ERP
project.project
1:1Wiise Jobs (task-level work breakdown, resource assignments, and billing) map to Odoo project.project. Job tasks migrate to project.task. Wiise job-specific dimensions migrate as Odoo analytic.account records linked to the project, preserving cost-centre reporting within the project context. If the customer uses Wiise job billing, we map billing rules to Odoo project billing configurations, though time and material tracking requires Odoo's Timesheets app to be installed and configured.
Wiise
Fixed Assets
Odoo ERP
account.asset.asset
1:1Wiise Fixed Asset records (acquisition date, cost, depreciation method, book value, location) map to Odoo account.asset.asset. Depreciation schedules are preserved as account.asset.depreciation.line records in Odoo, maintaining the original straight-line or declining-balance method from Wiise. Assets still under depreciation at migration date are flagged with their remaining book value and next depreciation date so Odoo's scheduled action can pick up the correct posting amount at month-end.
Wiise
Employees
Odoo ERP
hr.employee
1:1Wiise Employee records (name, position, department, employment status, HR metadata) migrate to Odoo hr.employee. Both active and terminated employees transfer, with terminated employees marked as inactive in Odoo. Wiise custom fields on employee records map to Odoo custom fields on hr.employee. The mapping preserves employee department as an hr.department lookup, which Odoo uses for org-chart reporting.
Wiise
Warehouse / Inventory Locations
Odoo ERP
stock.location
1:1Wiise warehouse locations map to Odoo stock.location with location_type set according to the location role (internal, supplier, customer, inventory loss). Item-location quantity records migrate to stock.quant, preserving on-hand quantities per warehouse per item. Odoo's location hierarchy (parent_path) is rebuilt from Wiise's location structure during import to maintain the physical warehouse bin relationships.
Wiise
Multi-Company / Intercompany Entities
Odoo ERP
Separate database or company configuration
lossyWiise multi-company entities under one subscription are exported as separate company units. In Odoo, multi-company is handled by creating distinct company records within a single database (if Odoo Enterprise is used with the multi-company module) or by provisioning separate Odoo databases per legal entity. We scope which entities migrate during discovery and export each as an independent dataset, mapping entity names to Odoo res.company records. Intercompany balancing entries are included as journal entries in the relevant company.
Wiise
Custom Fields
Odoo ERP
ir.model.fields (custom)
1:1Wiise custom fields across 15 page types (Customer, Vendor, Item, Sales Header/Lines, Purchase Header/Lines, Job, Contact, Fixed Asset, Service Item) migrate to Odoo custom fields on the equivalent model. We pre-create the Odoo custom field definitions (field type, required/optional, default value) before importing any data. The 2 decimal-place precision limitation on Wiise custom decimal fields is flagged for each field so the customer can decide whether to store the value as a float or as a char field in Odoo to preserve full precision.
| Wiise | Odoo ERP | Compatibility | |
|---|---|---|---|
| Customer | res.partner1:1 | Fully supported | |
| Vendor | res.partner1:1 | Fully supported | |
| Item | product.product1:1 | Fully supported | |
| Chart of Accounts | account.account1:1 | Mapping required | |
| Open AP | account.move (vendor bills)1:1 | Fully supported | |
| Open AR | account.move (customer invoices)1:1 | Fully supported | |
| Jobs / Projects | project.project1:1 | Fully supported | |
| Fixed Assets | account.asset.asset1:1 | Fully supported | |
| Employees | hr.employee1:1 | Fully supported | |
| Warehouse / Inventory Locations | stock.location1:1 | Fully supported | |
| Multi-Company / Intercompany Entities | Separate database or company configurationlossy | Mapping required | |
| Custom Fields | ir.model.fields (custom)1:1 | Mapping required |
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.
Wiise gotchas
No public API for document attachments
Custom field decimal precision loss
Multi-company scoping must be declared upfront
Opening balance reconciliation requires manual sign-off
Payroll is a priced add-on with separate schema
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 data audit
We audit the source Wiise subscription across tier (Business or Premium), enabled modules, multi-company entity list, custom field definitions across all 15 supported page types, open AP and AR record counts, fixed asset register, employee headcount, and any active payroll data. We also request a sample trial balance export from Wiise to assess dimensional tag density and chart of accounts complexity. The discovery output is a written migration scope document specifying the entity list, record counts per object, custom field inventory, and a preliminary dimensional mapping assessment.
Odoo environment provisioning and schema design
We provision the destination Odoo environment (typically a Sandbox for validation first, then Production) and design the Odoo schema to receive Wiise data. This includes creating custom fields on res.partner, product.product, account.asset.asset, and hr.employee matching the Wiise custom field definitions; creating analytic.account records corresponding to Wiise dimensional tags (cost-centre, department, location); configuring the chart of accounts in Odoo account.account to match Wiise account codes; and setting up Odoo company records for each Wiise entity in scope. Multi-company configuration is documented separately if Odoo Enterprise multi-company module is used.
Sandbox migration and reconciliation
We run a full migration into the Odoo Sandbox using production-like data volume. The customer's finance lead and operations lead reconcile record counts per object, spot-check 25-50 random records against the Wiise source (Customers, Vendors, Items, open AP/AR lines), verify that analytic account distributions appear on a sample of journal entries, and validate fixed asset book values against the Wiise fixed asset register. Any mapping corrections are documented and applied before the production migration run begins. No production data moves until sandbox sign-off is received.
Manual document export coordination
We coordinate with the customer's Wiise admin to run the manual document export (invoices, purchase orders, scanned files, images) using Wiise's built-in export function. We provide a dated checklist of which document categories to export, which date range to cover, and how to package the output for import into Odoo's ir.attachment records. This step runs in parallel with schema design and must complete before the cutover date. We do not extract documents via API because no Wiise API endpoint exists for attachment retrieval.
Production migration in dependency order
We run production migration in record-dependency order: Odoo companies and analytic accounts first (configuration), then res.partner records (split into Customer and Vendor roles), then product.product, then account.asset.asset (with depreciation schedules), then hr.employee, then stock.location and stock.quant for inventory, then account.move for open AP and AR (as draft invoices or opening journal entries depending on Odoo configuration preference), then project.project and project.task, then custom field data on each object. Each phase emits a row-count reconciliation report. Documents are imported separately via Odoo's attachment API after structured data is validated.
Cutover, validation, and inventory handoff
We freeze Wiise writes during cutover, run a final delta migration of any records created or modified during the migration window, then enable Odoo as the system of record. We deliver the workflow and approval-chain inventory document to the customer's Odoo admin team, along with the payroll data export file (separate schema) for import into the destination HR or payroll system. We support a one-week hypercare window for reconciliation issues. We do not rebuild Wiise workflows as Odoo server actions or approval paths inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Wiise
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 Wiise 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
Wiise: Not publicly documented — governed by Business Central cloud throttling defaults.
Data volume sensitivity
Wiise exposes a bulk API — large-volume migrations stream efficiently.
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 Wiise to Odoo ERP migration scoping. Not seeing yours? Book a call.
Walk through your Wiise 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 Wiise
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.