ERP migration guide

The Definitive Guide to Migrating to Acumatica

Acumatica is a cloud-true xRP-platform ERP whose migration model rewards teams that pre-build the chart of accounts, master Import Scenarios, and stage Generic Inquiries before a single GL period is opened.

23 min read 9 sections Updated May 27, 2026
Acumatica
Chart of Accounts
Customers
Vendors
Items
Transactions
Inventory

Inside this guide

What you'll learn, section by section

  1. 01

    Why teams migrate to Acumatica

    The four shapes an Acumatica migration takes, and what makes the platform easier — or harder — than the category average.

  2. 02

    The Acumatica data model you need to map into

    Objects, custom fields, master-detail relationships, and the keys you'll wire on every load — the destination schema decoded.

  3. 03

    Pre-migration prep — the work before you touch Acumatica

    What must be true on the source, on the destination tenant, and across the finance team before the first Import Scenario is run.

  4. 04

    Import mechanisms: Import Scenarios and staging tools

    The load paths in, each with different limits and shapes. Picking the wrong one is how mid-migrations stall at the inventory load.

  5. 05

    Mapping your data into Acumatica

    The longest section — because GL opening balances and inventory cutover are where almost every ERP migration that fails actually breaks.

  6. 06

    The pitfalls that derail Acumatica migrations

    Nine specific failure modes — ranked by impact, each tied to the exact Acumatica mechanism that breaks.

  7. 07

    Validation and cutover

    What to verify after the import job, in what order — and how to fail safely when something is wrong.

  8. 08

    Migration partners and tools

    Gold-certified partners, ETL vendors, specialist migration shops — what each is good for and how to choose.

  9. 09

    Frequently asked questions

    The eight questions every Acumatica migration team works through before they sign the implementation scope.

Section 01

Why teams migrate to Acumatica

The four shapes an Acumatica migration takes, and what makes the platform easier — or harder — than the category average.

Acumatica, Inc. provides cloud and browser-based enterprise resource planning software for small and mid-sized businesses, headquartered in Bellevue, Washington in the Seattle metropolitan area 1. The product is built on the xRP cloud platform and is sold as a consumption-based subscription rather than per-named-user, which materially changes the economics of who you pull into the system.

The typical Acumatica customer runs $5M to $500M of revenue and has outgrown QuickBooks, Sage 50, Dynamics GP or an older NetSuite footprint that no longer fits. Editions cover General Business, Manufacturing, Distribution, Construction, Field Service and Retail-Commerce — each shipping a tuned data model and a tuned Generic Inquiry library, but all sharing the same xRP core and the same Import Scenario engine.

The shapes of migration that actually land on Acumatica tend to fall into four patterns. First, legacy ERP exits — Dynamics GP, SAP Business One, Sage 100/300, Epicor — where the source schema is rigid but the GL discipline is strong, and the project is really about preserving period balances without dragging years of subledger detail into the new system 4.

Second, NetSuite exits, where teams move to control total cost of ownership on a consumption-based licence and recover from add-on price creep 3. Third, QuickBooks graduations, where a fast-growing distributor or manufacturer outgrows desktop or online accounting and finally needs real inventory, BOM and multi-entity. Fourth, M&A integration, where an acquirer standardises subsidiaries on a single Acumatica tenant and harmonises chart-of-accounts segmentation across the group.

What makes migrating *to* Acumatica easier than the category average is the Import Scenario framework — a no-code mapping engine that reads CSV or Excel through a configurable data provider, applies formulas and lookups, and writes records through the same business-logic graph that an interactive user would touch, validations and all 22.

What makes it harder than the average is the consumption-based licensing model, where transaction volume and resource tier — not user count — drive cost, and a stale data load can silently push you up a tier on the next renewal 32. Acumatica also does not allow you to override CreatedDateTime or LastModifiedDateTime on standard imports, so all historical timestamps must be captured in custom user-defined fields if reporting depends on them.

Generic Inquiries, dashboards, Customization Projects, Acuminator extensions and reports do not auto-migrate from any source — they are rebuilt against the destination schema. Teams that scope the rebuild work up front finish on time; teams that assume parity do not.

Teams that scope for the Generic Inquiry, dashboard and Customization Project rebuild up front finish on time; teams that assume parity do not.

Section 02

The Acumatica data model you need to map into

Objects, custom fields, master-detail relationships, and the keys you'll wire on every load — the destination schema decoded.

Acumatica platform Contacts Companies Deals Tickets Tasks Notes
Standard objects orbit the platform; every association can be many-to-many with optional labels.

Acumatica's data model is organised around Data Access Classes (DACs), each of which is exposed through a screen and a Generic Inquiry inside an industry-versioned package — Default, Manufacturing, Distribution, Construction or Field Service 1112. The set of objects you will touch in a migration depends on edition, but a core cluster shows up on every project.

Before you can map a field on the source side, you need to know which destination DAC the row belongs on, what fields are required by the underlying graph, and what the natural key is. The table below summarises the objects you will touch in a financials-plus-distribution migration.

Object Stores Required on import Tier
Chart of Accounts (Account) GL accounts segmented by Account Class, Type, Currency Account ID, Type, Class All editions
Subaccount Reporting dimensions concatenated as segmented value Segmented value, segment identifiers All editions
Branch Legal entity or reporting branch inside a tenant Branch ID, Company, ledger All editions (multi-branch requires Advanced Fin)
Customer (BAccount role) AR master record with terms, locations, contacts Customer ID, Class, Terms, Currency All editions
Vendor (BAccount role) AP master record with terms, 1099 settings Vendor ID, Class, Terms, Currency All editions
Stock Item / Non-Stock Item Inventory items with UoM, item class, lot/serial Inventory ID, Item Class, Base UoM, Posting Class Distribution / Manufacturing editions
Bill of Material / Production Order BOM revisions, operations, materials BOM ID, Revision, Inventory ID, Effective Date Manufacturing edition
AR Invoice / AP Bill Open and historical invoices and bills Doc Type, Reference Nbr, Date, Customer/Vendor All editions
Sales Order / Purchase Order Order documents with detail lines Order Type, Order Nbr, Customer/Vendor, Detail rows Distribution / SO+PO modules
Project (PM) Project header + Task hierarchy + budget Project ID, Template, Customer, Tasks Construction / Project Accounting

Most master DACs use a CD field (Customer ID, Vendor ID, Inventory ID, Account ID) as the human-readable key, paired with an internal integer ID that the framework uses for joins 53. For migration, the CD field is your upsert key — load with a stable, deterministic value (often the source primary key prefixed by a system marker) and let Acumatica generate the internal ID.

Transaction documents use a two-part natural key — (DocType, RefNbr) — and this is the single most-missed detail in beginner Import Scenarios. The Document Type is auto-defaulted on the form, so it does not visually appear in the field order, but it must be mapped as the *first* key field in the Import Scenario or the scenario will silently fail on the second invoice.

Custom field types in Acumatica are exposed through the Data Class Editor on a Customization Project and broadly cover the catalogue below. Picklists are declared via PXStringList with parallel arrays of internal codes and display values 64; the *code* is what the database stores and what every import path expects, while the *display* string is purely UI.

Field type Limits Notes
PXDBString Up to nvarchar(4000); default 60 Use SQL nvarchar; default mask 60 chars and will truncate silently
PXDBDecimal Precision/scale set on attribute Currency precision read from Acumatica preferences
PXDBDate / PXDBDateTime SQL datetime range DateTime is UTC; convert at the edge
PXStringList (picklist) 1024 chars per list; codes 2–4 chars typical Codes (e.g. C/E/T/R) — not display labels — are stored 64
MultiSelect = true Comma-separated codes Pack codes into a single field on the source export
Attributes (UDFs) Per item class / business account class Configured on Attributes form (CS205000); UDF-style
Custom field (DAC extension) Project-scoped; no per-DAC hard ceiling Created via Customization Project; persisted as Usr* columns
User-defined field (UDF) 1,000s per class, configurable Per-record key/value, surfaced as columns in screens
Note / File attachment 25 MB default per file (configurable) File Upload Preferences SM202550 controls cap 104

Relationships are modelled as master-detail — one DAC's primary key is referenced as a foreign key on a child DAC via a PXSelector attribute with a SubstituteKey clause 53. Acumatica does not auto-cascade deletes; the framework instead fires RowPersisting events with PXDBOperation.Delete so business logic can decide whether to cascade or block 131. There is no native junction-object pattern as in Salesforce — many-to-many relationships are built explicitly with a junction DAC and two PXSelector lookups.

Customization Projects (the no-code/low-code customisation framework) are the wrapper for every custom field, screen extension, workflow tweak and DAC modification you make on the destination side, and projects are what you publish from sandbox to production 41. Snapshots, captured from System Management → Snapshots, are the binary backup-and-restore unit — they bundle every schema, configuration and data row and can be re-imported into a fresh tenant for staging or rollback 123.

Section 03

Pre-migration prep — the work before you touch Acumatica

What must be true on the source, on the destination tenant, and across the finance team before the first Import Scenario is run.

The single best predictor of a clean Acumatica migration is how much chart-of-accounts and Item Class work the finance team does on the source side before the destination tenant is even provisioned. Acumatica's own Open University F110 Data Migration course is built around that order of operations — master records first, then opening balances, then open documents, then reconciliation 97.

The single best predictor of a clean migration is how much chart-of-accounts and Item Class work happens before the destination tenant is provisioned.

Treat the source export as raw material that needs to be shaped to Acumatica's expected formats — segmented Account values normalised to the new segment definition, Inventory IDs uppercased to the chosen mask, currency rates expressed as Acumatica's effective-rate-on-date convention, dates rewritten to a format the CSV Data Provider can parse, owners resolved to Employee IDs.

Source-side prep

  • Audit and dedup the source master data — Customers, Vendors and Inventory IDs — before export. Acumatica's Validation of Records for Duplicates feature finds matches post-import, but it is far cheaper to dedup once on the source than to merge thousands of records inside Acumatica's duplicate-validation workflow 91.
  • Lock the chart-of-accounts segment structure — number of segments, segment lengths, allowed values — before the first Account row exports. Once you have posted a single GL transaction in Acumatica, restructuring segments is destructive and requires a re-implementation. Plan Branch, Account and Subaccount segmentation as a single design decision.
  • Normalise picklist codes to Acumatica's PXStringList internal codes for every enumeration field — Customer Class, Vendor Class, Item Class, Account Class. Acumatica stores the 2–4-character code, not the display label 64, and Import Scenarios that send labels are rejected silently or generate String or binary data would be truncated errors 82.
  • Stamp a stable external ID on every record — a UUID or the source platform's primary key — so re-runs and reconciliation are deterministic and so AP/AR open documents can be tied back to the historical source.
  • Decide what is in scope for historical transactions versus reference-only archive. Most teams migrate only open AR/AP plus 12–24 months of detail and surface older history through a side-by-side viewer or a reporting warehouse rather than pushing it through the GL 96.

Destination-side prep

  • Provision a sandbox tenant alongside the production tenant from the start. Acumatica supports multiple tenants in one application instance, and the sandbox is the dry-run target for every Import Scenario before it touches production 73.
  • Provision users and roles first — Acumatica ships predefined finance, distribution and CRM roles (AP Admin, AP Clerk, AR Admin, AR Clerk, CA Admin, GL Admin, IN Admin) that you assign to users via the User Roles form before importing owner-stamped records 7778. Imports that target a non-existent owner are rejected, not silently nulled.
  • Build the Customization Project shell for every custom field you intend to add — Usr-prefixed columns on Customer, Vendor, Inventory, Stock Item, Sales Order and AP Bill DACs. Publish the project to sandbox first; only after validation publish to production.
  • Configure financial settings — Companies, Branches, Ledgers, fiscal Year and Periods, currency list, exchange-rate types, posting classes, payment methods and Cash Accounts — before the first Account import. The Account import depends on Account Classes existing first.
  • Build Generic Inquiries for reconciliation queries before cutover — Trial Balance by source vs. destination, AR Aging vs. source, AP Aging vs. source, Inventory Quantity on Hand vs. source. Run these against sandbox during dry-runs so they are battle-tested before go-live.

People prep

Cutover only works if finance cooperates. Lock down a source-system freeze window — typically a weekend with the close already through period 12 on the source ledger — and communicate it to every department that touches AP, AR, billing or inventory. Train AP clerks, AR clerks and the controller on Acumatica's workflows, document types, and Cash Sale vs. Invoice semantics before go-live, not after.

A clean ledger-only migration runs one to two weekends; a multi-entity manufacturing migration with BOM, production orders and historical projects runs four to twelve weeks of elapsed time. Build the human runway accordingly.

Section 04

Import mechanisms: Import Scenarios and staging tools

The load paths in, each with different limits and shapes. Picking the wrong one is how mid-migrations stall at the inventory load.

Acumatica's primary load path is the Import Scenario engine, which covers most one-shot migrations and is the most-recommended option for finance-led teams 2250.

Import Scenarios (the recommended default)

Import Scenarios live under Integration → Process → Import Scenarios (screen SM206025) and they read from a configurable Data Provider — CSV, Excel, SQL or a custom provider 45. Each scenario maps source columns to target screen fields via the Mapping tab, applies formulas (PadLeft, CStr, LineNbr) for transformation 85, and runs the import row-by-row through the same PXGraph business logic that fires when a user types into the screen.

Two critical rules: key fields must be mapped first and in the order they appear on the target form, and the Document Type field must be explicitly mapped on transaction imports even though it auto-defaults visually. Scenarios can be triggered manually from Integration → Process → Import by Scenario, attached to an Automation Schedule to run unattended at 3 AM, or surfaced as menu items inside a workspace using the *Make Visible on UI* flag 48.

The right call: Import Scenario for any migration up to a few hundred thousand records on standard objects, any finance-led project where the controller needs to see and approve the mapping in the UI, and any load you want to re-run on a schedule. The same scenario can be used for cutover, delta-load and ongoing daily-feed.

Third-party staging tools

Tools like Skyvia, Workato, Celigo and Boomi sit between the source and Acumatica. They are commonly used for staging-and-transform — the source is loaded into a warehouse, normalised against the Acumatica chart-of-accounts and Item Class taxonomy, then pushed into Acumatica. Skyvia specifically supports CSV import directly into Acumatica with INSERT, UPDATE, DELETE and UPSERT semantics.

Rule

Under 50,000 records and finance-led → Import Scenarios. Larger volumes or custom DACs → stage via CSV and load through Import Scenarios. Cross-system continuous sync → an iPaaS like Workato or Celigo.

Section 05

Mapping your data into Acumatica

The longest section — because GL opening balances and inventory cutover are where almost every ERP migration that fails actually breaks.

SOURCE ACUMATICA FirstName, LastName firstname, lastname AccountName company AnnualRevenue annualrevenue Owner.Email hubspot_owner_id CreatedDate createdate
Field-mapping flow — every source field resolves to a destination property or an explicit drop.

Mapping is where every ERP migration earns its scars. The schema and sequencing decisions you make in your mapping spreadsheet determine whether the trial balance ties on day two, whether AR aging looks right on day five, and whether the warehouse believes the on-hand counts on day thirty.

Work top-to-bottom of the financial implementation order: Companies and Branches first, then the Chart of Accounts, then Subaccounts, then Customer and Vendor Classes, then Customers and Vendors, then Item Classes and Items, then opening trial balance, then open AR/AP documents, then inventory quantity-on-hand, then historical transactions if in scope 97.

Chart of Accounts and Subaccounts

Export the demo Chart of Accounts to Excel as a template, replace the demo rows with your own Account IDs, Types, Classes, Currency and Active flags, and import via the Chart of Accounts form's native upload. Subaccount segments — Department, Cost Center, Branch, Product Line — are defined first on the Segmented Keys form (CS202000) and then the combined values on the Subaccounts form.

Get the segment count and length right before the first GL post; restructuring later is destructive and effectively requires a re-implementation.

Common source → Acumatica GL master mapping

Source Destination
  • account_number
    Account

    The CD field; uppercased and stripped of spaces; primary key

  • account_name / description
    Description

    Free text; respect 60-char default mask or extend

  • account_type
    Type

    Map to Acumatica Account Types: Asset, Liability, Income, Expense — picklist codes only

  • account_class
    Account Class

    Required; must exist before account import

  • department / cost_center
    Subaccount segment value

    Pre-define segments on CS202000 before mapping

  • default_currency
    Currency

    ISO 4217 code; must exist in Currencies

GL opening balances and trial-balance cutover

The standard Acumatica technique is to post a single GL Journal Entry to the closing period of the prior year (e.g. period 12-2025) carrying every balance sheet account's closing balance, with the Income Statement accounts excluded — Acumatica auto-closes those to Retained Earnings when you roll into period 01-2026 and print the trial balance 154. Debits must match credits; if they do not, the batch will not release.

Run this entry against a dedicated Migration Branch if multi-entity, and use Migration Mode on the AR, AP and Fixed Asset forms when entering opening subledger balances so those documents post to the subledger only and do not double-up the GL 124. After all subledger opening balances are loaded, you turn Migration Mode off, reconcile each subledger to its control account in the trial balance, and only then open period 01 of the live year.

Customers, Vendors, and open AR/AP

Customer and Vendor masters import cleanly through Import Scenarios once Customer Classes and Vendor Classes are pre-created — Class drives the default GL accounts (AR Account, Discount Account, Cash Discount Sub), tax categories, and payment terms.

Missing class defaults are the single most common failure mode: a Vendor import will throw 'Cash Discount Account' cannot be empty. 'Cash Discount Sub.' cannot be empty. and stall until you either fix the Class or hard-code the discount account in the scenario value column 84.

Common source → Acumatica AR/AP mapping

Source Destination
  • customer_id / vendor_id
    Customer ID / Vendor ID (CD)

    Uppercased, stripped; the primary key — pick the format you can live with

  • name / company_name
    Account Name

    Required

  • terms_code
    Terms

    Must exist in Credit Terms (CS206500)

  • currency_id
    Currency ID

    Must exist in Currencies; multi-currency requires Advanced Fin

  • tax_zone
    Tax Zone

    Must exist in Tax Zones; defaulted from Customer Class if omitted

  • open_invoice_date
    AR Invoice → Doc Date

    Use Migration Mode; backdated dates allowed and posting suppressed

  • open_invoice_amount
    AR Invoice → Amount

    Currency precision driven by Acumatica preferences

Inventory items, BOM, and quantity-on-hand

Stock and Non-Stock items are imported through Import Scenarios against the Stock Items (IN202500) and Non-Stock Items (IN202000) forms. Item Class must exist first and drives default valuation method, posting class, base UoM, lot/serial settings and price/cost classes.

Inventory IDs are stored respecting the configured Item Code mask (often 20 unicode characters) and must conform to that mask — cascading 'the record couldn't be imported due to an error in the next record' errors usually trace back to an inventory code containing a forbidden special character that the Class mask rejects 83.

Opening quantity-on-hand is loaded after items are created, via the Inventory Receipts form (IN301000) or — historically — via the *Initialize Inventory* process. Recent Acumatica releases moved the canonical QoH-load path into Inventory Receipts with a special posting class that hits a clearing account rather than the COGS or Inventory account directly, so the GL entry stays neutral 159.

Bill of Material rows on the Manufacturing edition are imported through a separate scenario against the BOM form (AM208000) and reference Inventory IDs that must already exist as Stock Items with a Base UoM matching the BOM's operation UoM. Revision and effective-dating come along; production-order history is typically *not* migrated — only open work orders.

Multi-currency and historical exchange rates

Acumatica stores exchange rates by (CurrencyID, FromCurrency, RateType, EffectiveDate). Historical rates must be loaded for every (date, currency, rate-type) combination referenced by an opening document or the document will be revalued at the current spot rate and produce a translation gain/loss against the trial-balance reconciliation. Export the full historical rate table from the source and import it via the Currency Rates form (CM301000) before the AR/AP open-document load.

Period close and revaluation run on the fiscal calendar configured under Financial → Configuration → Fiscal Year — get the period count, period numbering and adjustment-period flag right before posting starts. Adjustments to closed periods require an explicit reopen by a user with the appropriate finance role.

Historical activities, notes, and attachments

Historical activities (calls, tasks, events, notes) associated with Customers, Vendors and Opportunities import through scenarios against the CRM screens, but they re-stamp the CreatedDateTime to import time on standard paths — the original timestamp must be captured in a UsrLegacyCreatedDateTime custom field if reporting relies on it 142.

File attachments are bound to records through the platform-wide attachment subsystem. The default File Upload Preferences (SM202550) cap is 25 MB per file; larger files require either the cap to be raised or external storage 104. Acumatica supports Azure Blob, AWS S3 and Google Cloud Storage as external file providers — Acumatica stores a pointer and the binary lives outside the database 103.

For large attachment estates (hundreds of GB) the pattern most teams adopt is external storage from day one, with a backfill script that bulk-uploads the binaries into the configured external store before Acumatica pointers are loaded.

Audit trail, ownership and original timestamps

Acumatica's Field-Level Audit feature (Configuration → Audit) tracks per-field before/after values *going forward* once enabled on a screen, but it does not retroactively reconstruct source-system history. The AuditHistory DAC stores ModifiedFields, user and timestamp, and is queryable through Generic Inquiries with the *Field-Level Audit* role assigned 132.

On bulk import, the standard CreatedDateTime, LastModifiedDateTime, CreatedByID and LastModifiedByID columns are stamped by the framework — they cannot be overridden through Import Scenarios on the standard screens. The mitigation is to add a pair of custom fields (UsrLegacyCreatedDateTime, UsrLegacyCreatedBy) on every DAC where the audit trail matters, populate them from the source export, and rewrite any historical-period reports to use the legacy fields rather than the system columns.

ERP-specific: Customization Projects, Generic Inquiries, Snapshots

Customization Projects do not import from any source — they are rebuilt against the destination DACs. Plan to spend the first sprint of the project enumerating every customisation on the source system (custom fields, screen extensions, automation steps, workflows, custom reports) and triaging them into Migrate / Replace-with-standard / Retire. Acuminator, Acumatica's Visual Studio analyser, is the recommended tool for any C# extension work 41.

Generic Inquiries (SM208000) — the platform's no-code data-view builder — are the foundation of dashboards, OData feeds and many ad-hoc reports. Plan to rebuild key GIs in sandbox during cutover prep so finance has a working trial balance, AR aging and inventory valuation report from day one. Snapshots (System Management → Snapshots) are the standard way to clone a sandbox tenant for training, parallel testing or rollback; deleted snapshots are gone permanently unless exported to a workstation first 123.

Section 06

The pitfalls that derail Acumatica migrations

Nine specific failure modes — ranked by impact, each tied to the exact Acumatica mechanism that breaks.

High impact

Document Type missing from Import Scenario key fields

Transaction documents in Acumatica — AR Invoice, AP Bill, Sales Order, Purchase Order — use a two-part key of (DocType, RefNbr). Document Type auto-defaults on the screen so it is invisible in the field tab order, but it must be mapped as the first key in the Import Scenario or the scenario will load the first invoice correctly and then either silently skip every subsequent row or fail validation. Always map both key fields explicitly, in screen-order, before any value fields.

High impact

Picklist display labels imported instead of internal codes

Acumatica picklists declared via PXStringList store a 2–4-character internal code (e.g. C, E, T, R) and surface a longer display label (Call, Email, Standard, At Risk). Import Scenarios that send the display label are rejected with String or binary data would be truncated because the destination column is sized for the code, not the label 6482. Build your transform against the database codes and never against what an admin sees on the screen. 64

High impact

GL opening-balance double-post via subledgers

If you post the trial balance via a GL Journal Entry *and* let AR/AP open documents post to GL, you double-up the balance sheet on the AR and AP control accounts. The fix is to use Migration Mode on AR, AP and Fixed Asset forms when entering opening subledger balances so those documents update the subledger only and do not hit GL 124154. Turn Migration Mode off only after every subledger control account ties to the trial balance. 154

High impact

CreatedDateTime cannot be overridden

The standard CreatedDateTime, LastModifiedDateTime, CreatedByID and LastModifiedByID columns are framework-managed and ignored if you try to set them via Import Scenario on standard screens. Teams discover this on day two when reports filtered by Created Date return every record stamped to cutover weekend 142. Mitigation: add UsrLegacyCreatedDateTime and UsrLegacyCreatedBy custom fields on every DAC where the trail matters, populate from source, and rewrite period-over-period reports to use the legacy fields. 142

Medium impact

Special characters in Inventory IDs cascade silently

Acumatica's Inventory Code mask permits a configured set of characters, typically alphanumeric plus a couple of separators. Codes containing an unexpected special character (en-dash, smart quote, non-breaking space) fail validation, and the scenario emits a misleading 'the record couldn't be imported due to an error in the next record' message that cascades through every subsequent row until the next clean ID. Pre-validate every Inventory ID against the configured mask before running the scenario 83. 83

Medium impact

Consumption-based licence tier drift mid-migration

Acumatica's SaaS licence is consumption-based — Resource Levels scale by transactions-per-hour, commercial transactions per month, and concurrent users, not by named seats 32. A migration that loads several years of historical detail can push your monthly commercial-transaction count above the next tier ceiling and trigger a tier upgrade at renewal with no clean undo. Cap historical migration to 12–24 months of detail, and quote the tier-impact assumption explicitly with Acumatica at contract signature. 32

Medium impact

Custom DACs require a Customization Project plus a Screen or GI

Importing data into a custom table created by a Customization Project requires creating the DAC and building either a Screen or a Generic Inquiry over it 31. Teams who skip the screen-or-GI step discover they cannot read or write the table from outside Acumatica at all. Bake this multi-step extension work into the schedule before any custom-table import is committed. 31

Low impact

Snapshot deletion is permanent without export

Acumatica's Snapshot subsystem captures full-tenant point-in-time backups used for sandbox refresh and rollback. If you delete a snapshot from inside the tenant without first exporting it to a local workstation, it is gone — there is no platform-side recycle bin 123. Before any cutover, export the pre-import snapshot to a workstation or external storage, and only then run the import; rollback otherwise depends on Acumatica Support, which carries an SLA, not a guarantee. 123

Section 07

Validation and cutover

What to verify after the import job, in what order — and how to fail safely when something is wrong.

1 Read-only Source goes write-frozen 2 Final delta Export incremental changes 3 Import Load into Acumatica 4 Validate Reconcile + spot-check 5 Cut over Users on new system
Cutover sequencing — five gated phases between source read-only and full user access.

Validation is the bridge between Import Scenarios completing and finance being allowed to post into the live ledger. Acumatica's own F110 Data Migration course recommends three validation stages: a sandbox dry-run with 10 percent of records and stakeholder spot-checks, the full load with real-time reconciliation against source counts and balances, and a 30-day post-go-live data-quality audit including the first month-end close 97.

Build a reconciliation pack using Generic Inquiries — one per object — that compares source totals against destination totals on each of these dimensions. Anything outside a tolerance you agreed with the controller in advance (typically zero for cash, $1 for AR/AP balances, $50 for inventory valuation) gets investigated before users get login access.

  • Trial balance by account by period vs. source — debits and credits must tie to the cent on every Branch and every Currency.
  • AR aging by customer by bucket vs. source — opening AR balance per customer per aging bucket, summed and compared.
  • AP aging by vendor by bucket vs. source — opening AP balance per vendor per aging bucket, summed and compared.
  • Inventory quantity on hand by warehouse by item vs. source — units and valuation must reconcile, with cost layers (FIFO, average, standard) explained.
  • Customer and Vendor master record count vs. source — minus deliberately excluded rows (inactive accounts older than retention threshold, dedup merges).
  • Open Sales Orders and Purchase Orders with header totals and line counts — by status, owner and date bucket.
  • Currency rates per (CurrencyID, RateType, EffectiveDate) present for every date referenced by an open document — missing rates cause silent revaluation at spot.

On top of GI-driven reconciliation, run a manual spot-check protocol: pick 30 random records across Customers, Vendors and Items, and verify each field against the source UI. Pick five high-value AR invoices and five high-value AP bills and trace the full document — header, lines, taxes, applications. If a non-trivial discrepancy shows up in three or more of the 30, halt the cutover, fix the root cause in the Import Scenario, restore the snapshot, and re-run.

Acumatica's native rollback is the Snapshot subsystem. The standard pattern: take a Snapshot of the empty configured tenant before any data load, run the full import, validate, and if catastrophe strikes restore the Snapshot and re-run 123. Export the Snapshot to a workstation before deleting it.

There is no native row-level undo for an Import Scenario — you either restore the Snapshot or build a delete Import Scenario keyed on an UsrImportBatchID custom field stamped on every loaded row.

Cutover sequencing: (1) source goes read-only at end-of-business on Friday; (2) source closes its final period; (3) final delta export captures everything that changed during the dry-run window; (4) configured Acumatica tenant snapshot is taken; (5) Import Scenarios run in the documented order — Accounts → Subaccounts → Classes → Customers → Vendors → Items → opening trial balance → open AR → open AP → on-hand inventory → optional historical detail.

Then: (6) reconciliation GIs run; (7) Migration Mode flags flipped off; (8) controller signs off; (9) users get login access Monday morning with a 48-hour hyper-care window; (10) source system kept in read-only mode for 90 days, then decommissioned.

Section 08

Migration partners and tools

Gold-certified partners, ETL vendors, specialist migration shops — what each is good for and how to choose.

Acumatica is sold and implemented exclusively through a channel of VARs, ISVs and consultancies — there is no direct-sales motion. Partners are tiered Gold, Silver and Bronze by certification and revenue, with edition specialisations (Manufacturing, Distribution, Construction, Field Service). For finance-heavy migrations specifically, partners with a published Sage 300 → Acumatica, Dynamics GP → Acumatica or NetSuite → Acumatica practice tend to ship cleaner than generalist implementers because they have already met the specific subledger mapping gotchas.

Named Gold-certified partners visible in the public partner directory include Blytheco, NexTec Group, Cortekx HGL, PC Bennett Solutions, Cloud 9 ERP Solutions, Prometheus Technology Services and Revive ERP — each offers fixed-scope migration packages alongside ongoing managed services and edition-specific add-ons. ISV partners on the Acumatica Marketplace add depth in narrow verticals (process manufacturing, e-commerce connectors, payroll, document management) that often get woven into the migration scope.

On the ETL and iPaaS side, Skyvia, Workato, Celigo, Boomi, MuleSoft, Fivetran and Airbyte all have Acumatica connectors. Their role in a migration is rarely the migration itself — it is the staging layer that lands source data into a warehouse, the transformation layer that converts picklist codes and resolves Customer Classes, and the ongoing-sync layer that takes over post-migration.

Skyvia is the most commonly cited tool for direct CSV-into-Acumatica loads with full INSERT, UPDATE, DELETE and UPSERT semantics.

Managed-migration cost ranges vary widely. Acumatica's own consulting rate ranges from $150 to $300 per hour, with integrations costing $1,000 to $15,000 depending on complexity and number of source systems. A clean QuickBooks-to-Acumatica financials-only migration of under 25,000 records often lands in the $10,000–$25,000 range with a fixed setup fee plus per-object pricing.

A Dynamics GP-to-Acumatica project with multi-entity GL, open AR/AP, inventory cutover and three years of historical drilldown typically runs $40,000–$200,000, with the upper end driven by record count, custom-field complexity, historical-data depth and the number of integrations rebuilt rather than re-pointed.

For teams that want to outsource the migration end-to-end, FlitStack specialises in Acumatica migrations and handles the chart-of-accounts mapping, GL opening-balance design, Import Scenario authoring, picklist code conversion, multi-currency rate-history load, and reconciliation work described in Sections 5 and 7 of this guide. Pricing is fixed-fee, based on record count, source platform and edition, with separate line items for Custom DAC extensions, Generic Inquiry rebuilds and historical-data depth so the scope is transparent before signature.

This is one of several legitimate paths — the right choice for any given team depends on whether they want a Gold-certified partner with edition specialisation, an iPaaS-first approach, an ISV bundled with the implementation, or a specialist migration vendor. Explore FlitStack →

Section 09

Frequently asked questions

The eight questions every Acumatica migration team works through before they sign the implementation scope.

References

Sources

  1. 1 Acumatica — Wikipedia
  2. 3 NetSuite to Acumatica migration via SKYVIA — r/Netsuite
  3. 4 Best manufacturing ERP systems in 2026 — r/ManufacturingStack
  4. 11 Acumatica Web Services and Integration Best Practices
  5. 12 I330 Data Manipulation with Web Services — Acumatica Open University
  6. 22 How to do bulk array upload — Acumatica Community
  7. 30 Develop Integrations with Web Services — Acumatica Community
  8. 31 Exposing a Custom table to integrations — Acumatica Community
  9. 32 Acumatica Licensing Guide Supplement
  10. 41 No-Code Customizations Guide — Acumatica Blog
  11. 45 To Create a CSV Data Provider — Acumatica Help
  12. 48 How to add Import Scenario to menu — Acumatica Community
  13. 50 I100 Integration Scenarios — Acumatica Open University
  14. 53 T210 Customized Forms and Master-Detail Relationship — Acumatica Open University
  15. 64 Custom Field combo box list creation — Acumatica Community
  16. 73 Acumatica Upgrades — Sandbox and Post-Upgrade Support — Acumatica Community
  17. 77 User Roles: Predefined Roles — Acumatica Help
  18. 78 User Roles: Predefined Roles (finance roles) — Acumatica Help
  19. 82 SQL Server String or binary data would be truncated — Stack Overflow
  20. 83 Special Characters in Codes — Acumatica Community
  21. 84 Error processing Import Scenario on Vendors — Acumatica Community
  22. 85 Integration Scenarios Training — Acumatica Open University (formulas)
  23. 91 Validation of Records for Duplicates in Acumatica ERP
  24. 96 Seeking Advice on Transferring Historical Data from Sage 300 to Acumatica — Acumatica Community
  25. 97 F110 Data Migration 2025 R2 — Acumatica Open University
  26. 103 External File Storage — Acumatica Community
  27. 104 The file exceeds the maximum allowed size (25000 KB) — Acumatica Community
  28. 123 FAQ (Snapshots) — Acumatica Cloud ERP
  29. 124 How to migrate unreleased AR retention — Acumatica Community
  30. 131 What is the best practice for doing cascading deletes? — Acumatica Community
  31. 132 Audit Trail Reports and GIs — Acumatica Community
  32. 142 Import and Export Scenarios (timestamps) — Acumatica Community
  33. 154 Migration of Financial legacy Data into Acumatica — Acumatica Community
  34. 159 Is Inventory Migration after 2021R1 be different? — Acumatica Community

Need help running this migration?

FlitStack AI runs Acumatica migrations end-to-end.

Fixed-fee pricing, a hands-on migration engineer, full field mapping and validation. The work described in this guide — done for you.