ERP migration

Migrate from Access ERP to Odoo ERP

Field-level mapping, validation, and rollback between Access ERP and Odoo ERP. We move data and schema; workflows are rebuilt natively in Odoo ERP.

Access ERP logo

Access ERP

Source

Odoo ERP

Destination

Odoo ERP logo

Compatibility

92%

11 of 12

objects map 1:1 between Access ERP and Odoo ERP.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Access ERP to Odoo ERP is a structural migration that requires reconciling two fundamentally different ERP philosophies. Access ERP is a cloud-hosted mid-market platform from The Access Group built around a unified transactional database with quarterly automated upgrades and a highly configurable schema that routinely contains customer-specific custom fields invisible to standard exports. Odoo ERP is an open-source modular platform where the chart of accounts lives in account.account, customers and vendors are both res.partner records differentiated by customer_rank or supplier_rank, and every module extends the same relational model. We run a targeted discovery query against the live Access ERP database to enumerate every user-defined field and non-standard table before building the extraction spec, because standard database exports miss these additions entirely and risk silent data loss. We preserve the nominal ledger coding structure, resolve multi-currency account balances, map open purchase and sales invoices with their full line-item detail, and migrate document attachments as ir.attachment records linked to the corresponding Odoo model. Workflows, automations, approval chains, and custom Access-specific modules do not migrate; we deliver a written inventory of these for the customer's Odoo partner or admin to rebuild post-cutover.

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

Access ERP logo

Access ERP

What's pushing teams away

  • Transition from a legacy ERP involves significant user training and process change management — some teams find the steep learning curve disruptive to daily operations.
  • A subset of users experienced longer-than-expected support response times, especially for complex issues requiring escalation beyond first-line support.
  • Organizations with highly unique workflows report that the platform requires custom code modifications, adding implementation cost beyond the initial subscription.
  • Some customers desire more visibility into The Access Group's ERP product roadmap and enhancement priorities before committing to a long-term platform relationship.
  • Mid-market ERP customers sometimes outgrow Access ERP and migrate to NetSuite or SAP S/4HANA when they require the scale or global features of a Tier 1 system.

Choosing

Odoo ERP logo

Odoo ERP

What's pulling them in

  • Modular pay-as-you-grow model with 80+ apps under one database — teams start with CRM and add Accounting, Inventory, or Manufacturing without switching platforms.
  • Free Community edition lets businesses validate Odoo fit before committing to Enterprise licensing costs that scale with user count.
  • Lowest per-user pricing among mid-market ERPs, with a published free tier for one app and Standard plans starting around $24.90 per user per month.
  • Native integration between modules — a confirmed Sales Order automatically updates inventory, invoicing, and accounting without manual re-entry.
  • Strong Odoo Gold Partner ecosystem provides local implementation support, reducing risk for companies without in-house developers.

Object mapping

How Access ERP objects map to Odoo ERP

Each row shows how a Access ERP 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.

Access ERP

Chart of Accounts

maps to

Odoo ERP

account.account + account.group

1:1
Fully supported

Access ERP nominal ledgers with cost centre and department coding map to Odoo account.account with account.group defining the hierarchy. We preserve the nominal code as account.code and the description as name, and map cost centre and department dimensions to Odoo's analytic account model (account.analytic.account) which provides a secondary segmentation dimension not native to Access ERP. The customer configures the analytic plan in Odoo before migration runs.

Access ERP

Customer Master

maps to

Odoo ERP

res.partner (customer_rank)

1:1
Fully supported

Access ERP customer records map to Odoo res.partner with customer_rank set to indicate a customer role. Address books (street, city, state, country, zip) map to partner address fields; payment terms from Access map to Odoo property_payment_term_id; credit limits map to credit_limit on the partner. Multi-currency customers receive a property_account_position_id for tax mapping. The customer/commercial partner distinction in Odoo (is_company vs individual contacts) is resolved from the Access company flag.

Access ERP

Vendor Master

maps to

Odoo ERP

res.partner (supplier_rank)

1:1
Fully supported

Access ERP vendor records map to Odoo res.partner with supplier_rank set. Vendor payment terms, tax codes, and bank details migrate as supplier-specific fields on the partner record. Multi-currency vendor accounts receive a property_account_position_id for fiscal position mapping. The vendor's Accounts Payable nominal code from Access maps to property_account_payable_id on the Odoo partner.

Access ERP

Item / Stock Record

maps to

Odoo ERP

product.product + product.template

1:1
Fully supported

Access ERP items map to Odoo product.product (stockable product variants) with product.template holding shared product attributes. Item code becomes default_code; item description becomes name. Warehouse-specific quantities from Access become stock.quant records per stock.location after location setup in Odoo. Reorder levels migrate to Odoo's stock.route rules and mrp_repairquotation.product_service_type constraints.

Access ERP

Bill of Materials

maps to

Odoo ERP

mrp.bom

1:1
Fully supported

If the Access ERP database contains manufacturing data, BOM structures migrate to Odoo mrp.bom with bom_line entries referencing the migrated product.product records. Routing and work centre definitions from Access map to mrp.workcenter. We validate component availability and substitute part mappings before Odoo BOM import because mismatched component references are the most common BOM migration failure.

Access ERP

Purchase Order

maps to

Odoo ERP

purchase.order + purchase.order.line

1:1
Fully supported

Open purchase orders migrate to Odoo purchase.order with vendor references (res.partner supplier_rank), order dates, and line items including product, quantity ordered and received, pricing, and taxes. Closed and received purchase orders migrate as historical records with state='done' for audit continuity. We preserve the purchase order number from Access as name for reconciliation against incoming goods receipts.

Access ERP

Sales Invoice / Accounts Receivable

maps to

Odoo ERP

account.move (type=out_invoice)

1:1
Fully supported

Open AR invoices migrate to Odoo account.move with type='out_invoice', carrying customer references (res.partner), invoice dates, due dates, and amounts from Access. Line items (product, quantity, unit price, tax) migrate as account.move.line records. Historical paid invoices migrate as account.move with type='out_invoice' and state='posted' with payment registration in account.payment for full audit trail. The Access posting date becomes the Odoo invoice date.

Access ERP

AP Invoice and Payment

maps to

Odoo ERP

account.move (type=in_invoice) + account.payment

1:1
Fully supported

Open AP invoices migrate to Odoo account.move with type='in_invoice', carrying vendor references, invoice dates, due dates, and amounts. Historical paid invoices migrate with state='posted' and linked account.payment records. Bank statement lines from Access's reconciliation data map to Odoo account.bank.statement records so the customer can continue bank reconciliation from the cutover point.

Access ERP

Bank and Cash Accounts

maps to

Odoo ERP

account.journal

1:1
Fully supported

Access ERP bank account masters and cash book balances migrate to Odoo account.journal (type='bank' for bank accounts, type='cash' for cash). We preserve the bank account currency and set the default_account on the journal to the corresponding payable/receivable nominal code. Outstanding unreconciled transactions become Odoo account.move.line entries in the bank journal for the customer to reconcile post go-live.

Access ERP

Document Attachments

maps to

Odoo ERP

ir.attachment

1:1
Mapping required

Access ERP stores document attachments at the transaction and master-record level. We export attachments in their native format and create ir.attachment records in Odoo linked to the corresponding model (purchase.order, account.move, res.partner, product.product) and res_id pointing to the migrated record's ID. Attachment filenames and create dates are preserved. Verification confirms all attachments link to valid records after migration completes.

Access ERP

User-Defined Tables and Custom Fields

maps to

Odoo ERP

Custom fields (x_) and custom models

lossy
Fully supported

Access ERP's highly configurable schema routinely contains custom fields and user-defined tables not present in standard exports. We run a discovery query against the live Access database to enumerate every user-defined field and non-standard table before building the extraction spec. Custom Access fields map to Odoo x_ prefix fields created via ir.model.fields with state='manual'. Access user-defined tables with complex relationships may require a custom Python migration script and are scoped separately during discovery.

Access ERP

User Accounts and Role Assignments

maps to

Odoo ERP

res.users

1:1
Fully supported

Access ERP user accounts with role-based permissions and department assignments map to Odoo res.users. The Access access level and approval limits require manual configuration in Odoo's access control list (ACL) settings and multi-company rules post-migration. Inactive users from Access are created in Odoo as inactive records for historical activity attribution. We do not migrate user password hashes due to security; the customer's admin resets passwords at go-live.

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.

Access ERP logo

Access ERP gotchas

High

No published pricing or online trial

High

Highly configurable schema creates hidden custom fields

Medium

Quarterly upgrade cadence can change field names mid-project

Medium

Bank reconciliation cut-off requires explicit stakeholder decision

Odoo ERP logo

Odoo ERP gotchas

High

No rollback for CSV imports

High

External ID conflicts on re-import

Medium

Many2many field encoding in CSV imports

Medium

Large export timeouts require batching

Medium

Version schema drift between Odoo releases

Pair-specific challenges

  • Access ERP custom fields are invisible to standard exports

    Access ERP is designed to be adapted to each customer's workflows, which means the live database routinely contains custom fields and user-defined tables that are not part of the standard installation. Standard database exports miss these additions entirely, risking silent data loss. We run a targeted discovery query against the live Access ERP database that enumerates every user-defined field and non-standard table before building the extraction spec. No migration begins without this schema map in hand. Custom Access fields map to Odoo x_ prefix fields via ir.model.fields, and complex user-defined tables require a separate Python migration script scoped during discovery.

  • Bank reconciliation cut-off requires explicit stakeholder decision

    Access ERP maintains live bank reconciliation data. When migrating out of the platform, the customer must decide whether to stop posting to the source system at a specific cut-off date and carry that date forward as Odoo's opening balance date, or to continue parallel running. We surface this decision explicitly during migration planning and document the agreed cut-off in the runbook, because failure to align the cut-off creates duplicate transactions and unreconciled items in Odoo. The cut-off date also determines whether closed bank statements are migrated as historical records or left in Access ERP as an archive.

  • Quarterly Access ERP upgrades can rename fields mid-project

    The Access Group pushes automated platform upgrades quarterly. A field name or workflow behaviour that exists in the source system at the start of a migration project may be renamed, moved, or deprecated by the time extraction runs. We freeze the source schema at discovery and re-validate field availability immediately before extraction. If a field has changed, we adjust the extraction query rather than writing empty values to Odoo. The customer should temporarily pause Access ERP upgrades during the active migration window to avoid schema drift.

  • Odoo requires modules to be installed before object migration

    Odoo's modular architecture means that tables like account_account or product_product do not exist until the corresponding module (account or product) is installed in the database. We install and configure the required Odoo apps (Accounting, Inventory, Purchase, Sales, Manufacturing) before any data import begins. If a customer attempts to import purchase.order records into a database without the Purchase app installed, the import fails silently or creates orphan records. We validate module availability as part of the pre-migration checklist and document the required app stack for each customer's configuration.

Migration approach

Six steps for a successful Access ERP to Odoo ERP data migration

  1. Discovery and Access ERP schema audit

    We audit the live Access ERP database to enumerate all standard and non-standard tables, custom fields, user-defined tables, and active module usage. We extract record counts across chart of accounts, customers, vendors, items, purchase orders, AR/AP invoices, and document attachments. We document the nominal ledger hierarchy, cost centre structure, and any multi-currency account configuration. The discovery output is a written migration scope, a schema delta report listing every Access custom field with its Odoo mapping, and a recommended Odoo module stack (Accounting, Inventory, Purchase, Sales, Manufacturing as required).

  2. Odoo environment setup and module installation

    We install and configure the required Odoo apps (Accounting, Inventory, Purchase, Sales, Manufacturing) in a clean Odoo database. We configure the chart of accounts structure using the Access nominal ledger codes mapped to account.account with account.group for hierarchy. We configure warehouse locations (stock.location), the purchase and sales journals (account.journal), and any required fiscal positions for multi-currency accounts. We create the x_ custom fields identified during discovery via ir.model.fields before any data import begins.

  3. Partner and product master migration

    We migrate the Access ERP customer and vendor masters to res.partner records with appropriate customer_rank and supplier_rank assignments. The customer/commercial partner distinction is resolved from Access company flags. We then migrate product.product records with default_code, name, and stockable attributes. BOM structures migrate to mrp.bom where manufacturing data is in scope. Each phase emits a row-count reconciliation report before the next phase begins.

  4. Transactional history migration in dependency order

    We migrate open purchase orders first (purchase.order), then open and historical AR invoices (account.move type=out_invoice), then open and historical AP invoices (account.move type=in_invoice), then bank and cash account balances (account.journal) with outstanding unreconciled items. Document attachments (ir.attachment) are migrated last, linked to their parent records by resolved res_id. The bank reconciliation cut-off date agreed during planning determines which historical statements are migrated versus left in Access ERP as an archive.

  5. Sandbox validation and reconciliation

    We run the full migration into a staging Odoo environment using production-like data volume. The customer's finance and operations leads reconcile record counts, spot-check 25-50 records across each object against the Access ERP source, and verify the chart of accounts mapping. Any field mapping corrections, custom field additions, or nominal ledger adjustments are made during this phase. Sign-off on the staging reconciliation is required before production migration begins.

  6. Production cutover and handoff

    We freeze Access ERP writes during the cutover window, run a final delta migration of any records modified during the staging-to-production interval, then enable Odoo as the system of record. We deliver the workflow and automation inventory document listing every Access approval chain, custom workflow, and scheduled task requiring rebuild in Odoo Studio or via custom Python modules. We provide a one-week hypercare window for reconciliation issues raised by the customer's team. Post-migration admin configuration, Odoo Studio workflow rebuild, and user training are outside standard migration scope and are handled separately.

Platform deep dives

Context on both ends of the pair

Access ERP logo

Access ERP

Source

Strengths

  • Cloud-hosted ERP with integrated financials, inventory, purchasing, and CRM modules under a single vendor
  • Modular deployment lets mid-market manufacturers add capability incrementally without a full system replacement
  • Quarterly automated upgrades keep the platform current without requiring manual patching or project overhead
  • Competitive mid-market positioning relative to Tier 1 systems like SAP and Oracle
  • Established UK-based vendor with 150,000+ customer organizations and a broad ecosystem of implementation partners

Weaknesses

  • No public pricing — sales-led quote process makes cost comparison with competitors difficult before engagement
  • Steep learning curve reported during transition from legacy systems, requiring significant change management investment
  • Customizations for unique workflows may incur additional developer costs beyond standard subscription
  • Support responsiveness concerns flagged by a subset of users, particularly for escalated or complex issues
  • Roadmap transparency is limited, making it hard for customers to plan their own system roadmap around Access Group priorities
Odoo ERP logo

Odoo ERP

Destination

Strengths

  • Modular architecture with 80+ apps sharing one database — add Sales, Accounting, Inventory, and Manufacturing incrementally.
  • Free Community edition for self-hosting with no per-user license cost, backed by an active open-source community.
  • Per-user pricing starting around $24.90/month on Standard, significantly lower than comparable ERPs like NetSuite or SAP.
  • Automatic workflow propagation across modules — a confirmed sales order updates inventory, triggers invoicing, and posts accounting entries without manual steps.
  • Odoo.sh provides a managed cloud hosting environment with CI/CD for custom module deployment and staging databases.

Weaknesses

  • Performance suffers under heavy customization — large implementations with many active modules require dedicated optimization.
  • No single-click migration between Odoo major versions; each release introduces ORM changes, deprecated API calls, and schema revisions requiring manual adaptation.
  • Per-user and per-module licensing costs can escalate unpredictably for growing teams adding multiple apps.
  • Steep learning curve with hundreds of configuration options across dozens of modules creates adoption friction and training requirements.
  • Support tiers on Enterprise have inconsistent response times, pushing some customers toward alternatives with more reliable SLAs.

Complexity grading

How hard is this migration?

Standard ERP migration. 1 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 Access ERP and Odoo ERP.

  • Object compatibility

    B

    1 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

    Access ERP: Not publicly documented.

  • Data volume sensitivity

    B

    Access ERP doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Access ERP to Odoo ERP 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 Access ERP to Odoo ERP data migrations

Answers to the questions buyers ask most during Access ERP to Odoo ERP migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Access ERP to Odoo ERP migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between three and five weeks for companies under 10,000 customer/vendor records, 5,000 stock items, and 50,000 historical invoice lines using a hybrid approach (master data plus open transactions only). Full historical transfers with 100,000+ invoice lines, multi-currency account structures, BOM data, or multiple custom Access tables requiring manual field-by-field mapping move to eight to twelve weeks because of data cleansing, schema reconciliation, and extended reconciliation testing.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Access ERP.
Land in Odoo ERP, 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