ERP migration

Migrate from inoERP to Microsoft Dynamics 365 Business Central

Field-level mapping, validation, and rollback between inoERP and Microsoft Dynamics 365 Business Central. We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Business Central.

inoERP logo

inoERP

Source

Microsoft Dynamics 365 Business Central

Destination

Microsoft Dynamics 365 Business Central logo

Compatibility

100%

13 of 13

objects map 1:1 between inoERP and Microsoft Dynamics 365 Business Central.

Complexity

BStandard

Timeline

6-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Migrating from inoERP to Microsoft Dynamics 365 is a structural migration that moves organisations from a free, self-hosted ERP built around dynamic pull-based manufacturing logic to a cloud-native, subscription ERP backed by Azure infrastructure and deep Microsoft 365 integration. The source extraction requires identifying whether the inoERP instance runs on the legacy PHP codebase or the newer Go/Flutter OneApp, because the database schemas differ and the MRP logic diverges significantly. inoERP's dynamic pull system recalculates lot sizes at each supply trigger, meaning historical MRP-generated requisitions reflect conditions that no longer apply in the destination. We flag these records rather than import them, recommend customers re-run MRP post-migration, and preserve the full transactional history so that financial closes, inventory balances, and work order completions are audit-ready in Dynamics 365. Workflows, automations, and the inoERP project module do not migrate as code; we deliver a written inventory for the customer's Dynamics 365 partner to rebuild.

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

inoERP logo

inoERP

What's pushing teams away

  • The project management module is incomplete and underdeveloped, frustrating organisations that need integrated project tracking alongside operations.
  • Documentation is sparse and community support is limited, making troubleshooting configuration issues and customisation challenges time-consuming for self-hosted deployments.
  • The platform has undergone a major architecture migration from PHP to Go back-end with a Flutter front-end, creating confusion about which version to deploy and whether older PHP documentation still applies.
  • Hosting, maintaining, and securing a self-managed ERP falls on the customer's team, generating hidden labour costs that often exceed the savings from free licensing.

Choosing

Microsoft Dynamics 365 Business Central logo

Microsoft Dynamics 365 Business Central

What's pulling them in

  • Deep integration with Microsoft 365, Power BI, and Power Platform means organizations already on the Microsoft stack get identity, reporting, and workflow continuity out of the box.
  • Unified financials, sales, service, and operations replace multiple disconnected systems — users report that data entered once flows through purchase orders, invoicing, and approvals without manual re-entry.
  • Copilot AI features (predictive analytics, embedded business intelligence) are included in both Essentials and Premium tiers, addressing demand for AI without separate module purchases.
  • Named-user licensing with no concurrent model appeals to organizations that want predictable per-seat costs even if some users access the system infrequently.
  • Strong partner ecosystem with certified NAV-to-Business Central migration specialists gives mid-market companies confidence the cutover from legacy Navision can be executed reliably.

Object mapping

How inoERP objects map to Microsoft Dynamics 365 Business Central

Each row shows how a inoERP object lands in Microsoft Dynamics 365 Business Central, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

inoERP

Chart of Accounts

maps to

Microsoft Dynamics 365 Business Central

Ledger and Chart of Accounts Structure

1:1
Fully supported

inoERP GL accounts map directly to the Ledger and Chart of Accounts structure in Dynamics 365 Finance and Operations. The account code, description, type (Asset, Liability, Equity, Revenue, Expense), and currency assignments transfer. We extract the current period trial balance from inoERP and map it to the opening balance in the destination ledger. If the destination is Business Central, the chart of accounts maps to the Chart of Accounts page with Main Account type and dimension categories preserved. Account dimension structures in D365 F&O (Financial Dimensions) require a mapping design decision: inoERP's cost-centre-on-account approach may map to D365's Financial Dimension set framework, and we configure the dimension set during schema design.

inoERP

Journal Entries

maps to

Microsoft Dynamics 365 Business Central

General Journal / Subledger Journals

1:1
Mapping required

inoERP journal entries carry header data (journal batch name, date, description, source module) and line data (account, debit, credit, dimensions, reference). We extract all posted journal entries and map them to D365 F&O General journal lines or Business Central General Journal lines. Entries with non-posting status are flagged for customer review. Intercompany journal entries in inoERP require a dimension-based intercompany mapping design in D365 if multi-entity consolidation is in scope.

inoERP

Accounts Receivable

maps to

Microsoft Dynamics 365 Business Central

Accounts Receivable / Customer Transactions

1:1
Fully supported

inoERP AR subledger contains customer records, open and closed invoices, credit memos, and payment history. Customer party records map to D365 F&O CustTable with address, contact, and payment terms. inoERP invoice headers and lines map to CustInvoiceJour and CustInvoiceTrans respectively. Open invoice status is preserved so that D365 displays correct aging. inoERP's party-based model requires mapping to D365's customer-account structure. Customer-specific price lists and discount groups transfer if configured in inoERP.

inoERP

Accounts Payable

maps to

Microsoft Dynamics 365 Business Central

Accounts Payable / Vendor Transactions

1:1
Fully supported

inoERP AP subledger includes vendor records, open and closed bills, debit memos, and payment history. Vendor records map to D365 F&O VendTable with the same address and payment terms mapping as the AR side. inoERP vendor invoices map to VendInvoiceJour and VendInvoiceTrans. We extract all posted AP transactions and preserve the invoice approval workflow status where inoERP stores it. Vendor-specific terms and charges require a line-by-line review because inoERP stores some terms as header-level while D365 supports both header and line-level terms.

inoERP

Items / Inventory

maps to

Microsoft Dynamics 365 Business Central

Released Products and Inventory Dimensions

1:1
Fully supported

inoERP item masters store UOM, cost layers (FIFO, Average, Standard), item category hierarchies, and on-hand balances by inventory location. We extract item definitions, on-hand quantities, cost layers, and location assignments. Items map to D365 F&O Released Products with the appropriate product type (Item or Service). Inventory dimension groups in D365 (Site, Warehouse, Location, Batch, Serial) require a mapping decision: inoERP multi-location setups map to D365 Warehouse dimension, and lot and serial number tracking settings transfer if enabled. Cost layer data in inoERP's inventory valuation table maps to D365's InventDim and InventValue tables for open item cost preservation.

inoERP

Sales Orders

maps to

Microsoft Dynamics 365 Business Central

Sales Orders

1:1
Fully supported

inoERP sales orders include header fields (order number, customer reference, dates, terms, warehouse) and line items (item, quantity, price, discount, warehouse). We extract open and closed sales orders by status. Open orders map to D365 F&O SalesTable and SalesLine records for continuation post-migration. Closed orders migrate as historical records with a status flag so they do not trigger fulfilment actions in D365. Header charges, freight, and miscellaneous items in inoERP map to SalesOrderHeaderCharge and SalesOrderLineCharge tables in D365 F&O.

inoERP

Purchase Orders

maps to

Microsoft Dynamics 365 Business Central

Purchase Orders

1:1
Fully supported

inoERP purchase orders contain vendor references, item lines, quantities, prices, delivery dates, and warehouse assignments. Open purchase orders map to D365 F&O PurchTable and PurchLine records. Closed purchase orders migrate as historical records. inoERP's approval workflow status transfers to D365's purchase order workflow state. Multi-line purchase orders with mixed delivery dates are preserved at line level, and any landed cost components in inoERP map to D365's cargo type and costing version structures.

inoERP

Work Orders / WIP

maps to

Microsoft Dynamics 365 Business Central

Production Orders / Kanban Jobs

1:1
Mapping required

inoERP work orders contain routing steps, material issues, resource transactions, and completion records. WIP ledger aggregates costs per work order. We extract the full work order history including start and end dates, material consumption, operation resource time, and completion quantities. Active and scheduled production orders map to D365 F&O ProdTable and ProdBOM. The inoERP WIP cost roll-forward maps to the InventValue table in D365 with a WIP dimension so that the customer's finance team can reconcile work-in-progress balances post-migration. Historical completed work orders migrate as closed production orders.

inoERP

Bills of Material / Routings

maps to

Microsoft Dynamics 365 Business Central

BOMs and Routes

1:1
Fully supported

inoERP BOMs and routings define product structures and manufacturing steps with multi-level BOM support and super BOM capability. We export the full BOM hierarchy and routing sequence including phantom BOMs and co-products. Phantom BOMs and configurable BOMs in inoERP map to D365 F&O BOM versions with the appropriate BOM type (Phantom or Static). Routing operations, work centre assignments, and process times transfer to D365 route versions with the same operation sequence. BOM explosion in D365 during production order creation will recalculate based on D365's lot sizing rules, which may differ from inoERP's dynamic pull calculations, and we document this divergence during scoping.

inoERP

Employees / HR

maps to

Microsoft Dynamics 365 Business Central

Workers (HR Core)

1:1
Mapping required

inoERP HR module contains employee profiles, job definitions, position assignments, compensation records, and leave balances. We extract employee records and position assignments. Compensation history (salary, bonuses, deductions) migrates to D365 HR Core Worker compensation structures. inoERP leave balances map to D365 HR Core leave plans, though leave plan template configuration is required post-migration because leave types and accrual rules differ between platforms. inoERP role-based access control maps to D365 Security roles, though the role permission model differs and we document the mapping rather than apply it automatically.

inoERP

Asset Accounting

maps to

Microsoft Dynamics 365 Business Central

Fixed Assets

1:1
Mapping required

inoERP asset registers include acquisition details, depreciation schedules, and asset categories. We export the full asset record including acquisition cost, book value, accumulated depreciation, and the depreciation method. Asset records map to D365 F&O Fixed Assets with the same acquisition date, acquisition cost, and depreciation convention. Depreciation methods (straight-line, declining balance, units of production) transfer with the same parameters, and the customer's fixed asset register opening balance posts to the general ledger through D365 Fixed Asset posting profiles.

inoERP

Users / Roles

maps to

Microsoft Dynamics 365 Business Central

Users and Security Roles

1:1
Mapping required

inoERP users and role-based access control records export as user accounts with role assignments. We map inoERP roles to D365 F&O Security roles and duty/privilege sets. Because the permission models differ significantly between platforms, we provide a role-mapping matrix rather than a direct permission transfer. The customer's D365 admin reviews and assigns security roles post-migration based on the mapping matrix we deliver.

inoERP

Payroll / Bank Files

maps to

Microsoft Dynamics 365 Business Central

Payroll Bank Transfers

1:1
Mapping required

inoERP payroll generates electronic bank files for direct deposit via its customisable JavaScript REST API. We export payroll registers, leave balances, and compensation history. Bank file formats are inoERP-instance-specific and require a custom transformation to match the customer's payroll processor format. D365 HR Core payroll integration is typically handled through a payroll add-on (such as ADP, Blue-badge, or another certified payroll provider), and we document the payroll data export format so the customer's payroll partner can configure the integration.

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.

inoERP logo

inoERP gotchas

High

Architecture version split between PHP and Go/Flutter

Medium

OneApp API has no publicly documented rate limits

Medium

Closed-order and historical transaction volume drives migration scope

Low

Dynamic pull system recalculates lot sizes at runtime

Low

Self-hosting creates data export dependency on the customer

Microsoft Dynamics 365 Business Central logo

Microsoft Dynamics 365 Business Central gotchas

High

Named-user licensing has no concurrent-use relief

High

API rate limits throttle large-volume migrations

Medium

Historical posted transactions require selective migration scoping

Medium

NAV-to-Business Central cloud migration requires partner coordination

Low

Custom fields and AL extensions require separate migration handling

Pair-specific challenges

  • PHP versus Go codebase schema mismatch

    inoERP ships two distinct codebases: the legacy PHP version and the newer Go/Flutter OneApp. The database schemas differ in table naming, column structures, and module availability. The PHP version uses a different foreign key relationship model from OneApp. We confirm which version the source system runs during scoping and extract from the correct schema. Migrations that mix table references across versions produce orphan records, particularly in the inventory valuation and work order modules. Customers running OneApp on a self-hosted Go instance may also have a different database driver (MySQL versus MariaDB) with minor SQL dialect differences that affect our extraction queries.

  • Dynamic pull MRP output is not valid as-is in Dynamics 365

    inoERP's dynamic pull-based MRP recalculates Kanban bucket sizes and supply requisitions at runtime before each trigger. Historical MRP-generated records therefore reflect the demand conditions and lot size calculations from the moment they were generated, which may not be valid under current demand patterns or in a destination system running different lot sizing rules. We flag all plan-generated MRP records during extraction and recommend customers re-run master planning post-migration rather than importing historical supply requisitions verbatim. This is a fundamental difference in manufacturing logic that affects inventory replenishment planning in the destination.

  • No documented OneApp API rate limits means adaptive throttling only

    The api.inoerp.com OneApp JavaScript REST API endpoints have no publicly documented rate limit. For self-hosted inoERP instances on localhost, there may be no rate limiting at all, but cloud-hosted variants or instances behind load balancers may enforce per-instance caps we discover only during initial test passes. We run migration jobs with adaptive throttling using exponential backoff and 429-response detection. Customers should anticipate that large historical data extractions may require VPN access or on-premises migration agent deployment if the database server is on an isolated internal network without external connectivity.

  • Closed-order volume drives migration scope materially

    inoERP does not enforce record-retention limits natively. Organisations that have run inoERP for several years often accumulate thousands of closed sales orders, purchase orders, and work orders across multiple fiscal periods. We scope all transactional history explicitly during discovery and offer date-range filtering so customers can choose whether historical closed orders are migrated or re-created manually in the destination. A full multi-year closed-order import materially increases migration time and can affect the destination ledger's opening balances if closed-order totals feed into year-end financials. The customer and their finance team must decide the historical scope before extraction begins.

Migration approach

Six steps for a successful inoERP to Microsoft Dynamics 365 Business Central data migration

  1. Discovery and version identification

    We audit the source inoERP instance to identify the codebase version (PHP or Go/Flutter OneApp), the database type (MySQL, MariaDB, or Oracle 12c), the list of active modules, the count of transactional records per module, the number of active users, and the fiscal period calendar. We review the chart of accounts structure, any multi-site inventory configuration, the BOM hierarchy depth, and whether any custom fields have been added to standard inoERP tables. We also confirm whether the instance is self-hosted on-premises or cloud-hosted, and we establish database read access or arrange for a database dump export. The discovery output is a written scope document with record counts, a migration target recommendation (D365 Finance and Operations or Business Central), and a date-range filter proposal for historical transactions.

  2. Schema design and ledger configuration

    We design the destination Dynamics 365 schema before any data extraction begins. For Finance and Operations, this includes the Chart of Accounts structure and Financial Dimension framework, the fiscal period calendar, the ledger setup, and the posting profile definitions for AR, AP, and inventory. For Business Central, this includes the Chart of Accounts page configuration, the dimension setup, and the posting group definitions. We map inoERP's account types and cost-centre-on-account approach to D365's dimension set model. If multi-entity or multi-site inventory is in scope, we design the operating unit structure and the inventory dimension group assignments for each site and warehouse.

  3. Sandbox migration and reconciliation

    We run a full migration into a Dynamics 365 sandbox environment using production-like data volume sourced from the discovery phase. The customer's finance lead and operations lead reconcile record counts against the inoERP source (Accounts in, Journal Entries in, Customers in, Vendors in, Items in, Orders in, Work Orders in), spot-check 25-50 records at random for field-level accuracy, and verify that inventory on-hand balances match between inoERP and the destination. Any mapping corrections, dimension assignment errors, or currency rounding issues surface here before production migration begins.

  4. Owner reconciliation and User provisioning

    We extract every distinct inoERP user referenced on transactional records and map them to D365 Worker or User records. The customer's D365 admin provisions any missing workers and assigns security roles using the role-mapping matrix we deliver. Migration cannot proceed to production record imports until all OwnerId references in the destination are satisfied, because D365's posting workflows require a responsible worker on journal and order records.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Ledger and Chart of Accounts first, followed by journal entries, then customers and vendors, then items with inventory dimensions and on-hand balances, then open sales and purchase orders, then production orders with BOM and routing assignments, then employee records, and finally fixed assets. BOM explosion and work order cost roll-forward happen against the item and routing data already migrated. MRP-generated plan records are extracted separately, flagged for post-migration re-run, and excluded from the production import. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and MRP re-run handoff

    We freeze inoERP writes during the cutover window, run a final delta migration of any records created or modified during the migration window, then make Dynamics 365 the system of record. We deliver the MRP re-run recommendation document listing all flagged plan-generated records and the suggested lot-sizing parameters to apply in D365. We do not rebuild inoERP automations, project configurations, or workflow rules as D365 equivalents; we deliver a written inventory of these for the customer's Dynamics 365 partner to rebuild. We support a one-week post-cutover hypercare window for reconciliation issues raised by the customer's team.

Platform deep dives

Context on both ends of the pair

inoERP logo

inoERP

Source

Strengths

  • 100% free and open source with no per-user or per-module licensing fees.
  • Full ERP stack covering Finance, SCM, Manufacturing, and HR in a single integrated system.
  • Dynamic pull-based MRP adapts lot sizes to real-time demand changes rather than using fixed Kanban quantities.
  • Multi-database support including Oracle 12c, MySQL, and MariaDB on Windows, macOS, and Linux.
  • Mobile clients available for Android, iOS, macOS, Windows, and web browsers.

Weaknesses

  • Sparse official documentation and limited community support make self-hosting challenging.
  • Project Management module is under development and not yet production-ready.
  • Major architecture shift from PHP to Go/Flutter has created documentation fragmentation.
  • Self-hosting model shifts infrastructure labour costs to the customer, often negating free-licensing savings.
  • Very limited third-party review coverage and few public case studies demonstrating real-world deployments.
Microsoft Dynamics 365 Business Central logo

Microsoft Dynamics 365 Business Central

Destination

Strengths

  • Tight integration with Microsoft 365 (Outlook, Teams, SharePoint) for users already in the Microsoft ecosystem.
  • Includes Copilot AI, predictive analytics, and embedded Power BI dashboards at no additional cost in both license tiers.
  • Supports multiple companies within a single tenant for holding-company or multi-entity organizational structures.
  • Open REST API v2.0 with OAuth 2.0 authentication and data entity abstraction layer for developer-friendly integrations.
  • Strong partner ecosystem specializing in NAV-to-Business Central migrations provides implementation confidence for legacy upgrades.

Weaknesses

  • Named-user licensing model means every active user account requires a paid license — no concurrent access model to reduce costs for occasional users.
  • SaaS-only deployment means no on-premises option; organizations requiring full data residency control may not have viable alternatives within Microsoft's stack.
  • Manufacturing module (Production Orders, routing, work centers) is only available on Premium tier, pushing cost-sensitive manufacturers to higher-priced plans.
  • Customization and extension development requires AL language knowledge and developer licenses, limiting what power users can do without a partner engagement.
  • Global pricing increases effective October 2024 and again October 2025 after five years of stable pricing, creating budget uncertainty for existing customers.

Complexity grading

How hard is this migration?

Standard ERP migration. All 8 core objects map 1:1 between inoERP and Microsoft Dynamics 365 Business Central.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across inoERP and Microsoft Dynamics 365 Business Central.

  • Object compatibility

    A

    All 8 core objects map 1:1 between inoERP and Microsoft Dynamics 365 Business Central.

  • 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

    inoERP: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your inoERP to Microsoft Dynamics 365 Business Central 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 inoERP to Microsoft Dynamics 365 Business Central data migrations

Answers to the questions buyers ask most during inoERP to Microsoft Dynamics 365 Business Central migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your inoERP to Microsoft Dynamics 365 Business Central migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between six and eight weeks for organisations with under 50,000 transactional records, clean chart of accounts, and no multi-level BOM structures. Migrations with multi-site inventory, complex BOM hierarchies, large closed-order histories spanning multiple fiscal periods, active WIP work orders, or multi-entity ledger requirements move to fourteen to twenty weeks because of BOM explosion mapping, work order cost roll-forward, and journal entry sequencing across fiscal periods. The Dynamics 365 Finance and Operations implementation alone (without migration) typically spans three to nine months per industry estimates from Abacus Technologies, DataToBiz, and STAEDEAN, so the FlitStack AI data migration runs as one workstream within that broader implementation.

Adjacent paths

Related migrations to explore

Ready when you are

Move from inoERP.
Land in Microsoft Dynamics 365 Business Central, 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