ERP migration
Field-level mapping, validation, and rollback between inoERP and Epicor Prophet 21. We move data and schema; workflows are rebuilt natively in Epicor Prophet 21.
inoERP
Source
Epicor Prophet 21
Destination
Compatibility
12 of 13
objects map 1:1 between inoERP and Epicor Prophet 21.
Complexity
BStandard
Timeline
6-10 weeks
Overview
Moving from inoERP to Epicor ERP is a structural migration for manufacturing organisations that have outgrown open-source licensing and need a Tier 2 ERP with shop-floor depth, multi-site inventory, and a partner ecosystem. inoERP stores its core ERP data in MySQL or MariaDB with OneApp REST APIs; Epicor Kinetic uses SQL Server or Oracle with a Kinetic UI, built-in MES, and Data Migration Tool (DMT) for bulk imports. We extract directly from the inoERP database, clean and transform records according to the mapping matrix, then load into Epicor via DMT CSV templates or REST API. MRP-generated planning records in inoERP are runtime calculations tied to historical demand conditions and do not map verbatim to Epicor MRP tables; we flag these and recommend a post-migration MRP regeneration rather than importing stale supply recommendations. Workflows, automations, and custom PHP/Go scripts in inoERP do not migrate as code; we deliver a written inventory of these for the customer's Epicor partner to rebuild in Kinetic.
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 inoERP object lands in Epicor Prophet 21, 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
Epicor Prophet 21
GL Account
1:1inoERP GL account codes, types, and currency assignments map to Epicor ERP GL Account codes. inoERP account type (Asset, Liability, Equity, Revenue, Expense) maps to Epicor GL Account Type. Account balances are imported as opening balances in Epicor GL through the Account Balance import template rather than as live transactions. We validate that inoERP account codes use characters compatible with Epicor's GL segment structure before import.
inoERP
Journal Entries
Epicor Prophet 21
GL Journal Entry
1:1Posted journal entries in inoERP carry header data (journal name, date, description, reference) and line data (account, debit, credit, description). We import journal entries into Epicor ERP GL through the Journal Entry import template. Entries with non-standard currency or complex intercompany dimensions are flagged as requiring Epicor admin review before import. We recommend importing only open-period entries; closed historical periods are imported as opening balance adjustments rather than re-posted journal entries.
inoERP
Accounts Receivable
Epicor Prophet 21
AR Invoice and Customer
1:1Open AR invoices in inoERP (invoice headers with line items, customer references, amounts, due dates) map to Epicor ERP AR Invoice. inoERP party structures map to Epicor ERP Customer records. Open invoices are imported as posted AR transactions; closed invoices are imported as historical records or excluded based on customer preference. Epicor DMT AR template supports header-level and line-level import.
inoERP
Accounts Payable
Epicor Prophet 21
AP Invoice and Vendor
1:1Open AP invoices in inoERP map to Epicor ERP AP Invoice. inoERP supplier records map to Epicor ERP Vendor. We preserve invoice number, vendor reference, terms, and line-item amounts. Prepayments and credit memos migrate as separate AP transaction types. Historical closed AP invoices migrate as reference records if the customer chooses full history scope.
inoERP
Items / Inventory
Epicor Prophet 21
Part and PartWhse
1:1inoERP item definitions with UOM, cost layers, category hierarchy, and on-hand quantities across locations map to Epicor ERP Part and PartWhse records. Lot and serial number traces migrate if inoERP tracks them. On-hand balances per warehouse map to Epicor PartWhse OnHandQty. Stock locations in inoERP map to Epicor Warehse and Bin records. We flag any inoERP item with negative on-hand as a data anomaly for cleansing before import.
inoERP
Sales Orders
Epicor Prophet 21
Sales Order
1:1Open sales orders in inoERP (header fields including order number, dates, customer reference, terms, and line items with item, quantity, price, warehouse) map to Epicor ERP Sales Order. Closed orders can be migrated as historical records or excluded based on date-range filtering agreed during scoping. We resolve inoERP customer references to Epicor Customer IDs before import so that OrderHed.Company and OrderHed.CustNum are populated correctly. Order-level discounts and freight charges migrate as OrderMsc records.
inoERP
Purchase Orders
Epicor Prophet 21
PO Header and PO Release
1:1Open purchase orders in inoERP map to Epicor ERP PO Header with PO Release lines. inoERP supplier references resolve to Epicor ERP Vendor records. Line items (item, quantity, price, due date) migrate as PORel records. Closed POs migrate as reference records if historical scope is agreed. We flag inoERP POs with mismatched line quantities and prices that may indicate data-quality issues.
inoERP
Work Orders
Epicor Prophet 21
Job Entry (JobHead / JobMtl / JobOper)
1:1inoERP work orders with routing steps, material issues, resource transactions, and completion records map to Epicor ERP JobHead, JobMtl, and JobOper tables. The WIP ledger aggregate cost per work order in inoERP does not map directly to Epicor job costing because Epicor calculates WIP from JobMtl and JobOper actuals at runtime. We import JobMtl and JobOper from inoERP's material and operation records, but Epicor recomputes WIP on the first transaction post-migration. Open work orders migrate fully; closed work orders migrate as job history for audit trail purposes.
inoERP
Bills of Material
Epicor Prophet 21
ECC / BOM and Revision
1:1inoERP BOMs and routings with multi-level structures and super BOMs map to Epicor ERP Engineering Control Center (ECC) BOM and Job BOM records. We export the full BOM hierarchy and routing sequence. Phantom BOMs in inoERP map to Epicor ECC Phase records with the Phantom flag. Co-products and by-products require manual mapping review because the co-product cost allocation model differs between platforms. We recommend validating BOM costs in Epicor after import because inoERP cost calculations may use different labour and overhead rates.
inoERP
Employees / HR
Epicor Prophet 21
Employee (HR module)
1:1inoERP employee profiles, job definitions, positions, and compensation records map to Epicor ERP Employee. Compensation history is sensitive data that requires explicit customer consent during scoping and is imported as EmployeePay records. Leave balances migrate as leave transaction records. Approval hierarchies in inoERP do not map to Epicor's workflow system and are documented separately for rebuild. We flag compensation records with non-standard pay components (piece rates, shift premiums) that require Epicor HR admin review before import.
inoERP
Payroll / Bank Files
Epicor Prophet 21
Payroll Register (manual rebuild recommended)
1:1inoERP payroll registers and compensation history map to Epicor ERP payroll data structures, but electronic bank file formats are customisable via JavaScript REST APIs in inoERP and have no direct Epicor equivalent. We export payroll registers, leave balances, and compensation history as reference data. Direct deposit bank file generation should be reconfigured in Epicor ERP post-migration by the customer's Epicor HR partner rather than imported from inoERP's custom file formats.
inoERP
Asset Accounting
Epicor Prophet 21
Asset Register
1:1inoERP asset registers with acquisition details, depreciation schedules, and asset categories map to Epicor ERP Asset Register. Book values and accumulated depreciation import as opening asset balances. Depreciation methods (straight-line, declining balance, units of production) migrate to Epicor Asset Book records. Assets under construction in inoERP require review for appropriate Epicor capitalisation treatment. Asset locations map to Epicor Warehse and site records.
inoERP
Custom Objects / Custom Fields
Epicor Prophet 21
User-Defined Fields (UDFs) and UD Tables
lossyinoERP's flexible schema allows organisations to add custom fields and tables without formal schema management. These map to Epicor Kinetic User-Defined Fields (UDCs) on standard tables or UD Tables for standalone custom records. We pre-create the Epicor UDF schema before production migration so that custom inoERP data has a landing destination. Custom PHP/Go code that computes field values in inoERP does not migrate; these calculations are documented for Epicor BPM rebuild.
| inoERP | Epicor Prophet 21 | Compatibility | |
|---|---|---|---|
| Chart of Accounts | GL Account1:1 | Fully supported | |
| Journal Entries | GL Journal Entry1:1 | Mapping required | |
| Accounts Receivable | AR Invoice and Customer1:1 | Fully supported | |
| Accounts Payable | AP Invoice and Vendor1:1 | Fully supported | |
| Items / Inventory | Part and PartWhse1:1 | Fully supported | |
| Sales Orders | Sales Order1:1 | Fully supported | |
| Purchase Orders | PO Header and PO Release1:1 | Fully supported | |
| Work Orders | Job Entry (JobHead / JobMtl / JobOper)1:1 | Fully supported | |
| Bills of Material | ECC / BOM and Revision1:1 | Fully supported | |
| Employees / HR | Employee (HR module)1:1 | Mapping required | |
| Payroll / Bank Files | Payroll Register (manual rebuild recommended)1:1 | Mapping required | |
| Asset Accounting | Asset Register1:1 | Fully supported | |
| Custom Objects / Custom Fields | User-Defined Fields (UDFs) and UD Tableslossy | 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.
inoERP gotchas
Architecture version split between PHP and Go/Flutter
OneApp API has no publicly documented rate limits
Closed-order and historical transaction volume drives migration scope
Dynamic pull system recalculates lot sizes at runtime
Self-hosting creates data export dependency on the customer
Epicor Prophet 21 gotchas
Third-party bolt-on integrations complicate migration scope
Dirty data without standardized processes compounds migration risk
SDK customizations and BPMs may not survive platform upgrades
Report-based export only for non-technical users
Per-user pricing model requires accurate user count before migration planning
Pair-specific challenges
Migration approach
Discovery and inoERP version confirmation
We audit the inoERP source environment by querying the database directly to confirm the codebase version (PHP or Go/Flutter), database engine (MySQL, MariaDB, or Oracle), and schema version. We inventory record counts across GL accounts, journal entries, open AR/AP invoices, inventory items, BOMs, work orders, sales orders, purchase orders, employee records, and asset registers. We identify any custom fields and custom tables in the inoERP schema. We agree on a date-range filter for historical transactions and document whether closed orders, closed work orders, and historical journal entries are in scope. The discovery output is a written migration scope with record counts per object and a data cleanse checklist.
Epicor DMT template design and schema pre-build
We design the Epicor Kinetic target schema in a staging environment. For each migrating object we build a custom DMT CSV template: Part (with PartCost and PartWhse), SalesOrder, PO, JobHead/JobMtl/JobOper, BOM/Job BOM, Customer, Vendor, Employee, Asset, and GL account. We configure Epicor Warehse and Bin records to match inoERP inventory locations, and create GL account segments that accommodate inoERP account code structures. For any inoERP custom fields we pre-create Epicor UDF columns and UD Tables. We coordinate with the customer's Epicor VAR to ensure the DMT user has the required security permissions and that GL period locks are open for the migration window.
Data extraction and cleansing
We run extract queries against the inoERP MySQL/MariaDB database or call the OneApp REST API endpoints, producing staged CSV files per object. We apply cleansing rules identified during discovery: duplicate record deduplication, negative on-hand corrections, inactive item flagging, date-range filtering for closed historical transactions, and account code normalisation. We flag and escalate any records with referential integrity issues (orders referencing non-existent customers, BOM lines referencing non-existent parts) to the customer's inoERP admin for resolution before we proceed to load. We produce a source-data validation report showing record counts, null fields, and cross-object reference integrity before loading into Epicor.
Epicor staging import and reconciliation
We run DMT imports into the Epicor staging environment in dependency order: GL accounts, inventory sites and bins, customers, vendors, employees, parts, BOMs, open AR/AP, sales orders, purchase orders, work orders, assets, and GL opening balances. Each phase emits a DMT summary report showing records accepted, rejected, and in error. We reconcile record counts, account balances, on-hand quantities, and order totals back to the inoERP source data and resolve any discrepancies before moving to production. Epicor DMT errors (validation failures, missing required fields, type mismatches) are corrected in the staging CSV and the import re-run.
Production migration in dependency order
We migrate to the Epicor production environment during an agreed freeze window. GL accounts and opening balances load first to ensure the chart of accounts is in place before any transactional data. Inventory sites, bins, and part records load next. Customers, vendors, and employees load before orders. Sales orders and purchase orders follow, then open AR/AP invoices. Work orders load with JobMtl and JobOper in a dependent sequence so that material and operation links are satisfied. BOMs and job BOMs load last. We run a reconciliation report after each phase comparing Epicor aggregate totals to inoERP source totals for that object class.
Cutover, validation, and MRP rebuild handoff
We freeze inoERP writes during cutover and run a final delta migration of any records modified during the migration window. We deliver a migration summary report with record counts, balance reconciliations, and a list of any exceptions that were not resolved. We provide a written inventory of inoERP workflows, custom fields, and any PHP/Go scripts that require rebuild in Epicor Kinetic as BPMs or Kinetic customisations. We do not rebuild inoERP custom code as Epicor BPMs inside the migration scope. We recommend customers configure Epicor MRP parameters (safety stock, reorder points, lead times, order policies) post-migration rather than importing historical inoERP MRP-generated supply recommendations.
Platform deep dives
inoERP
Source
Strengths
Weaknesses
Epicor Prophet 21
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. 2 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 inoERP and Epicor Prophet 21.
Object compatibility
2 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
inoERP: Not publicly documented.
Data volume sensitivity
inoERP 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 inoERP to Epicor Prophet 21 migration scoping. Not seeing yours? Book a call.
Walk through your inoERP to Epicor Prophet 21 migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave inoERP
Other ways to arrive at Epicor Prophet 21
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.