ERP migration

Migrate from ERPnext Enterprise - Bespoke to Acumatica

Field-level mapping, validation, and rollback between ERPnext Enterprise - Bespoke and Acumatica. We move data and schema; workflows are rebuilt natively in Acumatica.

ERPnext Enterprise - Bespoke logo

ERPnext Enterprise - Bespoke

Source

Acumatica

Destination

Acumatica logo

Compatibility

100%

13 of 13

objects map 1:1 between ERPnext Enterprise - Bespoke and Acumatica.

Complexity

BStandard

Timeline

3–6 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

ERPNext Enterprise Bespoke stores all business data as MariaDB-backed DocTypes — flat document records where custom fields are serialized JSON payloads inside each record row. Acumatica uses a fully relational schema: standard DAC (Data Access Class) tables for Customers, Vendors, Stock Items, GL Accounts, and Projects, with User-Defined Fields (UDFs) held as separate extended-property rows keyed by RecordID. The structural mismatch is the central migration challenge: ERPNext's JSON custom fields must be extracted field-by-field and recreated as Acumatica UDF records per DAC, while standard fields map cleanly by name. FlitStack AI sequences the migration so parent entities (Items, Customers, Suppliers) land before child transactions (Sales Orders, Purchase Orders), resolves ERPNext owner and warehouse references to Acumatica Branch and Warehouse entities, and rebuilds Acumatica's UDF schema before any data loads. Workflows, approval chains, and ERPNext Custom Scripts have no Acumatica equivalent and must be rebuilt using Acumatica's Generic Inquiry, Automation Schedule, and ISV ecosystem. We export workflow definitions as a reference document for your Acumatica admin. The migration runs against Acumatica's REST/SOAP API with paginated batch commits, and a 24–48 hour delta window captures in-flight changes during 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

ERPnext Enterprise - Bespoke logo

ERPnext Enterprise - Bespoke

What's pushing teams away

  • Implementation and partner costs often exceed initial expectations, with quotes ranging from $10,000 to $100,000 for customisation and data migration — customers feel misled by 'free software' messaging.
  • Performance degrades significantly at scale: large transaction volumes across many warehouses can cause 20-second delays on simple POS operations, pushing high-volume retailers to alternative platforms.
  • Customisations written in the Frappe Framework frequently break when upgrading to a new major version, forcing organisations to choose between staying on an unsupported release or rewriting custom code.
  • The out-of-the-box UX and navigation require meaningful training investment; user adoption rates drop when organisations skip formal onboarding with a certified partner.
  • Long-term support contracts and managed hosting fees accumulate, narrowing the cost advantage over proprietary ERP alternatives over a 3–5 year horizon.

Choosing

Acumatica logo

Acumatica

What's pulling them in

  • Unlimited user licensing lets companies add staff without per-seat billing shocks, making Acumatica cost-predictable at scale.
  • Flexibility and scalability earn consistent praise — users value a platform that adapts to vertical workflows without forcing a redesign.
  • Real-time visibility across financials, inventory, and projects gives mid-market businesses a consolidated operational view previously available only in enterprise-tier ERPs.
  • Cloud-native architecture with automatic updates removes infrastructure management burden from in-house IT teams.
  • Modular licensing lets companies start with one or two suites (Financials, Distribution) and expand into Manufacturing or CRM incrementally.

Object mapping

How ERPnext Enterprise - Bespoke objects map to Acumatica

Each row shows how a ERPnext Enterprise - Bespoke object lands in Acumatica, including any object-level transformations, lookup resolution, or schema-design dependencies.

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

ERPnext Enterprise - Bespoke

Customer

maps to

Acumatica

Customer

1:1
Fully supported

ERPNext Customer DocType maps directly to Acumatica Customer DAC. Primary contact details merge into the Customer record's Contact sub-tab. ERPNext custom fields embedded as JSON within the Customer row extract to Acumatica UDF rows keyed by CustomerID. Multi-company ERPNext setups split by Company field into separate Acumatica customer sub-sets or branches.

ERPnext Enterprise - Bespoke

Supplier

maps to

Acumatica

Vendor

1:1
Fully supported

ERPNext Supplier DocType maps to Acumatica Vendor DAC. Supplier type (Local, International, Raw Material) maps to Vendor Class. Primary contact and address merge into Vendor record sub-tabs. Supplier-wise pricing rules from ERPNext become Vendor price lists in Acumatica's VendorPrices table.

ERPnext Enterprise - Bespoke

Item

maps to

Acumatica

InventoryItem

1:1
Fully supported

ERPNext Item DocType maps to Acumatica InventoryItem DAC with item type set to Stock Item. ERPNext's JSON-stored barcodes, lot sizes, and reorder levels extract to Acumatica UDFs. Valuation method (FIFO, Moving Average, Standard) maps directly to Valuation Method field. Multiple UOMs in ERPNext map to Acumatica's UOM class with conversion factors.

ERPnext Enterprise - Bespoke

Account

maps to

Acumatica

Account

1:1
Fully supported

ERPNext Account DocType maps to Acumatica GLAccount with AccountCD as the key. Account Type (Asset, Liability, Expense, Income) maps to Account Type pick-list. ERPNext's root accounts (Balance Sheet, Income) translate to Account Group assignments in Acumatica's Chart of Accounts tree structure.

ERPnext Enterprise - Bespoke

Sales Order

maps to

Acumatica

SalesOrder

1:1
Fully supported

ERPNext Sales Order DocType maps to Acumatica SalesOrder DAC. ERPNext's per-row Item against the Item DocType resolves to InventoryItemCD on SalesOrderDetail. ERPNext dimensions (Cost Center, Department) map to Acumatica's generic Activated dimension classes (such as Department or Project). Set status and workflow state in ERPNext determine the order Hold/Released status in Acumatica.

ERPnext Enterprise - Bespoke

Purchase Order

maps to

Acumatica

PurchaseOrder

1:1
Fully supported

ERPNext Purchase Order DocType maps to Acumatica PurchaseOrder DAC. Vendor link resolves to VendorID. ERPNext terms of delivery and import/export flags store as UDF text fields. Line-level item references convert to InventoryItemCD on POLine. Purchase Order status workflow maps to Acumatica's Hold/Released state machine.

ERPnext Enterprise - Bespoke

Delivery Note

maps to

Acumatica

Shipment

1:1
Fully supported

ERPNext Delivery Note maps to Acumatica Shipment (SO Shipment) DAC. ERPNext packed-items against a linked Sales Order translate to Shipment lines with OrderNbr reference. ERPNext batch numbers on Delivery Note rows become Lot/Serial numbers in Acumatica's InventoryAllocations sub-grid. Source of transfer (Warehouse, Customer) resolves to WarehouseID in Acumatica.

ERPnext Enterprise - Bespoke

Purchase Receipt

maps to

Acumatica

Receipt

1:1
Fully supported

ERPNext Purchase Receipt DocType maps to Acumatica Receipt (PO Receipt) DAC. The Receipt is linked to the Purchase Order via POLineNbr. ERPNext received-qty and accepted-qty per item row translate to the Quantity field on RCBill of Lading Detail. Warehouse receipt location from ERPNext maps to InventoryID + WarehouseID in Acumatica.

ERPnext Enterprise - Bespoke

Payment Entry

maps to

Acumatica

Payment

1:1
Fully supported

ERPNext Payment Entry DocType maps to Acumatica Payment DAC. ERPNext Payment Type (Receive, Pay) splits into CashSale or CashPurchase DACs respectively in Acumatica. Party link (Customer or Supplier) maps to Acumatica's CustomerID or VendorID. ERPNext references to Sales Invoice or Purchase Invoice become InvoiceNbr on the Acumatica payment record.

ERPnext Enterprise - Bespoke

Stock Reconciliation

maps to

Acumatica

InvcStk

1:1
Fully supported

ERPNext Stock Reconciliation DocType maps to Acumatica Inventory Adjustment (InvcStk) DAC. ERPNext's qty_after_transaction per item-warehouse pair becomes the adjustment quantity. ERPNext batch numbers and serial numbers on reconciliation rows map to LotSerialNbr in Acumatica's sub-grid. Reconciliation reason maps to Reason Code field in Acumatica's adjustment reason maintenance screen.

ERPnext Enterprise - Bespoke

Project

maps to

Acumatica

PMProject

1:1
Fully supported

ERPNext Project DocType maps to Acumatica PMProject DAC. ERPNext project template status maps to Acumatica Project Status (Planned, Active, Completed). ERPNext's task hierarchy is a flat task list in Acumatica PMTask — task parent-child relationships require manual reassignment or Generic Inquiry reconstruction. Budget lines from ERPNext map to PMBudget in Acumatica Project Accounting.

ERPnext Enterprise - Bespoke

BOM

maps to

Acumatica

BOM

1:1
Fully supported

ERPNext BOM DocType maps to Acumatica BOM (Bill of Materials) DAC. ERPNext item-warehouse BOM rows translate to BOMMaterialDetail lines with ScrapFactor and BOM Operations translate to BOMOperationDetail. ERPNext's BOM routing (workstation types, operating costs) becomes OperationID references in Acumatica's routing tab. Multiple active BOM versions in ERPNext require version-number mapping in Acumatica's BOM revision model.

ERPnext Enterprise - Bespoke

Custom Field (ERPNext DocType JSON)

maps to

Acumatica

User-Defined Field (UDF)

1:1
Fully supported

ERPNext stores custom fields as JSON within each DocType row — there is no separate custom field entity. For Acumatica, each ERPNext custom field must be created individually as a UDF through the UDF editor, specifying the DAC (such as Customer or InventoryItem), field type, and label. The Acumatica UDF schema must be established before any data migration runs so that UDF values are loaded as extended-property rows after the parent record exists.

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.

ERPnext Enterprise - Bespoke logo

ERPnext Enterprise - Bespoke gotchas

High

Open-source licence does not cover implementation or hosting costs

Medium

Rate limiting is site-configured and returns HTTP 429

Medium

No documented bulk-read API for large DocTypes

High

Major version upgrades break custom DocType scripts

Medium

CSV Data Export does not include file attachments

Acumatica logo

Acumatica gotchas

High

API user licenses cap concurrent sessions and request throughput

High

Multi-tenant filtering requires CompanyID awareness

Medium

Custom fields require separate discovery before field mapping

Medium

Notes and attachments use a separate linked table structure

Low

Implementation timelines frequently run 3–9 months end-to-end

Pair-specific challenges

  • ERPNext DocType JSON custom fields require UDF extraction before Acumatica loads

    ERPNext stores all custom field data as a JSON object inside each DocType record row — there is no separate custom field registry. Acumatica holds UDFs as distinct rows in a dedicated extended-property table keyed by RecordID and FieldName. FlitStack AI must first parse every ERPNext DocType row, extract each named custom field, create the corresponding Acumatica UDF definition through the UDF editor for the relevant DAC (Customer, Vendor, InventoryItem), activate it, and then insert UDF values as a second-pass operation after the parent record is committed. Failure to sequence this correctly results in parent record creation without UDF values, requiring a correction pass. The JSON parsing step is unavoidable for any ERPNext installation that uses the Customize Form feature.

  • Multi-company ERPNext setups require branch-level splitting before Acumatica ingestion

    ERPNext handles multiple companies within a single MariaDB instance — each company is a row in the Company DocType, and all transactions carry a company reference. Acumatica enforces data isolation at the branch level: each branch is a separate data partition. A single ERPNext multi-company database must be split into separate data partitions in Acumatica — either as distinct tenants in a multi-tenant Acumatica deployment or as separate branches within one tenant. Each company requires its own branch mapping, and any cross-company transactions (inter-company sales or transfers) have no native equivalent in Acumatica's single-entity GL and must be reconstructed as separate vendor/customer relationships or eliminated.

  • ERPNext file attachments must be re-hosted and re-linked in Acumatica

    ERPNext stores file attachments in its file store (a local or S3-backed repository), with each attachment referenced by a FileUrl field on the DocType record. Acumatica stores attachments as NotesAttachments — files are uploaded directly into Acumatica's attachment management and linked to a specific DAC record (such as SO.Shipment or AR.Invoice) with a ClassID. The FileUrl references in ERPNext records carry no Acumatica-native attachment ID. FlitStack AI extracts all files from ERPNext's file store, re-uploads them into Acumatica's attachment system, and writes the new NotesAttachments record IDs back to a custom SourceFileID__c UDF on the parent record for traceability. The file re-hosting step adds time proportional to total attachment volume.

  • ERPNext fiscal year data requires Acumatica period setup before historical GL loads

    ERPNext's Fiscal Year DocType defines the year structure and controls period locks — all historical data (GL entries, P&L, trial balance) is accessible in ERPNext regardless of year status. Acumatica's Financial Year Configuration screen enforces period locks at the database level, and the system will reject GL transactions posted to a closed financial period without explicit override. If ERPNext contains open-year transactions, the Acumatica financial admin must configure the open financial year in Acumatica's Fiscal Year screen before the GL migration batch runs. Closed historical years in ERPNext can be migrated as a trial balance snapshot into Acumatica's Financial Year summary but require the year and period to already exist in the Acumatica configuration.

  • ERPNext workflow and automation definitions have no Acumatica migration path

    ERPNext Workflow DocType, Energy Point Rule, Assignment Rule, and Auto Email Report definitions are stored as metadata records tied to the Frappe framework's event subscription model. Acumatica has no equivalent workflow engine for ERPNext-style approval chains — it uses Automation Schedules for batch processing and Generic Inquiries for conditional routing, which operate on a different execution model. FlitStack AI migrates data and schema only. We export all ERPNext workflow definitions, assignment rules, and auto-email configurations as a JSON reference package your Acumatica admin can use to rebuild equivalent automation in Acumatica's Automation Schedule and SM204000 screens.

Migration approach

Six steps for a successful ERPnext Enterprise - Bespoke to Acumatica data migration

  1. Schema discovery and Acumatica tenant audit

    FlitStack AI inventories every active ERPNext DocType via the Data Export tool and API, categorizing them by record volume and dependency depth. We identify JSON-embedded custom fields per DocType, list ERPNext's company settings and branch equivalents, audit the Chart of Accounts structure, and inventory all ERPNext file attachments in the file store. This produces a Migration Scope Document: a ranked list of DocTypes, custom field extraction requirements, branch mapping plan, and UDF schema blueprint for Acumatica. Your Acumatica admin reviews the UDF blueprint and creates UDF definitions in Acumatica before data loading begins.

  2. Acumatica UDF schema creation and branch configuration

    FlitStack AI delivers a UDF creation guide specifying for each Acumatica DAC (Customer, Vendor, InventoryItem, etc.): the UDF label, field type, and pick-list values derived from ERPNext JSON field data. We also deliver a branch and organization mapping plan: each ERPNext company becomes one Acumatica branch (or separate tenant), and ERPNext cost centers and departments map to Acumatica activated dimension classes. The Acumatica admin creates the UDF schema in the UDF editor (SM205030) and configures branches in the Organization Structure (GL102000) before any data loads run.

  3. DocType data extraction and Acumatica DAC transformation

    FlitStack AI pulls every ERPNext DocType via the Data Export tool and API. For each record, we parse the JSON custom-field payload field by field, resolve ERPNext foreign-key references (Customer link in Sales Order resolves to CustomerID; Warehouse link resolves to BranchID + WarehouseID in Acumatica), apply value mappings for pick-list fields (ERPNext territory name to Acumatica TaxZoneID), and write the transformed records in Acumatica's REST API batch format. Records are loaded in dependency order: Items and Accounts first, then Customers and Suppliers, then transactions. For each DocType, FlitStack runs a validation pass against Acumatica's required-field constraints before committing.

  4. Sample migration with field-level diff and UDF coverage check

    A representative sample of 200–500 records per major DocType (Customer, Supplier, Item, Sales Order) migrates first. FlitStack generates a field-level diff comparing source ERPNext values against destination Acumatica field values, including UDF rows. You verify that all ERPNext custom fields appear as Acumatica UDF records with the correct values. Any missing UDF definitions, pick-list value gaps, or constraint violations are flagged and resolved before the full migration runs. This sample pass validates the entire transformation pipeline end-to-end and establishes the de-duplication logic for the delta run.

  5. Full migration with delta pickup and post-migration audit log

    FlitStack AI runs the full migration in dependency order across all DocTypes. A delta pickup window of 24–48 hours captures any ERPNext records created or modified during the cutover period. Every operation is recorded in an audit log showing source record ID, destination record ID, UDF values loaded, and owner/branch assignment. If reconciliation fails, a one-click rollback reverts all Acumatica inserts. You receive the audit log with record counts per DocType, UDF coverage percentage, and unmatched owner/branch flags. Workflow and automation definitions are exported as a JSON reference package for Acumatica rebuild.

Platform deep dives

Context on both ends of the pair

ERPnext Enterprise - Bespoke logo

ERPnext Enterprise - Bespoke

Source

Strengths

  • GPL-3.0 open-source licence with zero software cost eliminates per-user or per-module vendor lock-in.
  • Three-tier architecture (MariaDB, Python app server, JavaScript frontend) runs on commodity cloud infrastructure.
  • Broad module coverage — accounting, CRM, inventory, manufacturing, HR, projects, POS — ships as standard rather than paid add-ons.
  • Frappe Framework enables programmatic DocType creation, Custom Field injection, and workflow scripting without modifying core source.
  • Active GitHub community (11k forks, 33k stars) surfaces bugs and workarounds publicly and continuously.

Weaknesses

  • Zero licence cost obscures the real total cost of ownership: hosting, implementation, partner fees, and support contracts are substantial and often under-estimated.
  • Performance degrades under high transaction throughput — documented cases show POS operations slowing to 20+ seconds at scale, requiring hardware upgrades or partitioning work.
  • Custom Frappe scripts and DocType modifications are not automatically forward-compatible with new major versions, creating upgrade risk for heavily customised instances.
  • No formal bulk-read API; large-volume migrations rely on CSV Data Export, which requires careful sequencing to avoid timeout on large result sets.
  • Documentation for advanced programmatic tasks — custom API endpoints, background job handling, long-term data archiving — is fragmented across forum posts and is not centrally maintained.
Acumatica logo

Acumatica

Destination

Strengths

  • Unlimited named-user licensing eliminates per-seat cost scaling as teams grow.
  • Modular architecture lets companies deploy Financials first and add Distribution, Manufacturing, or CRM incrementally.
  • Cloud-native with automatic updates removes infrastructure patching and version management from IT responsibilities.
  • Flexible customization framework (UDFs, extensions) supports vertical-specific workflows without forking core code.
  • Multi-tenant architecture with CompanyID isolation enables safe data segregation across subsidiaries.

Weaknesses

  • Steep learning curve and complex initial setup create significant onboarding friction.
  • Report Designer is widely cited as unintuitive and difficult to use for non-developers.
  • Feature gaps require customizations or third-party add-ons, adding implementation cost and complexity.
  • Implementation timelines frequently exceed initial estimates, especially for multi-module deployments.
  • API rate limits and concurrent session caps are tied to license tier, creating throughput constraints for bulk data operations.

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 ERPnext Enterprise - Bespoke and Acumatica.

  • 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

    ERPnext Enterprise - Bespoke: Configurable per-site via site_config.json (default 600 seconds of request time per hour); defaults to HTTP 429 on exceedance with Retry-After header.

  • Data volume sensitivity

    B

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

Estimator

Estimate your ERPnext Enterprise - Bespoke to Acumatica 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 ERPnext Enterprise - Bespoke to Acumatica data migrations

Answers to the questions buyers ask most during ERPnext Enterprise - Bespoke to Acumatica migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your ERPnext Enterprise - Bespoke to Acumatica migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most ERPNext-to-Aumatica migrations complete in 3–6 days of execution time for under 50,000 records after schema discovery is done. Larger setups with 500k+ records, multi-company ERPNext configurations, or more than 15 active DocTypes extend to 14–21 days. The longest planning step is the UDF extraction mapping — ERPNext stores custom fields as JSON inside each DocType row, so every custom field must be identified, named, typed, and created as an Acumatica UDF before data loads begin.

Adjacent paths

Related migrations to explore

Ready when you are

Move from ERPnext Enterprise - Bespoke.
Land in Acumatica, 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