ERP migration
Field-level mapping, validation, and rollback between Opto and Acumatica. We move data and schema; workflows are rebuilt natively in Acumatica.
Opto
Source
Acumatica
Destination
Compatibility
11 of 11
objects map 1:1 between Opto and Acumatica.
Complexity
BStandard
Timeline
24–72 hours
Overview
Opto Enterprise uses a flat-file-oriented inventory and order management structure where inventory items, customers, and vendors are stored as standalone records without a formal branch or legal-entity container. Acumatica Cloud ERP organizes every record under a Company and Branch structure — Branches serve as the legal-entity and warehouse container for inventory, customer, and GL postings. This structural difference is the primary migration design constraint: Acumatica enforces referential integrity on master data (inventory items must exist before purchase orders can reference them; customers must exist before sales orders can post), so FlitStack AI sequences all Opto master data imports — inventory items, customer classes, customers, vendor classes, vendors — before loading any transactional documents. We map Opto item codes to Acumatica InventoryItem.InventoryCD, Opto customer names to Acumatica Customer.BAccountID with a Contact subrecord, and Opto PO/SO headers to Acumatica POOrder and SOOrder respectively. Opto custom fields and extended attributes migrate as Acumatica USR-prefixed user-defined fields (UDFs). Workflows, screen-level automations, and notification rules do not transfer and must be rebuilt in Acumatica's Action / Business Events framework. Our migration engine uses Acumatica's REST API for record creation and validation, running a sample pass with field-level diff before committing the full dataset.
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 Opto 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.
Opto
Inventory Item
Acumatica
InventoryItem
1:1Opto item records map directly to Acumatica's InventoryItem DAC. InventoryCD serves as the keyed identifier equivalent to Opto's item code. ItemClass must be selected in Acumatica — FlitStack creates a default class during schema setup if none exists, so the item can save without blocking PO/SO lines.
Opto
Customer
Acumatica
Customer + Contact
1:1Opto customer records split into two Acumatica records: a Customer (BAccountID-based) and a Contact subrecord. The primary contact name, email, and phone migrate to the Contact DAC linked by ContactID. Acumatica requires a CustomerClass on the Customer record — FlitStack maps Opto's customer type to the nearest Acumatica class or creates a default.
Opto
Vendor
Acumatica
Vendor + Contact
1:1Mirrors the customer pattern: Opto vendors become Acumatica Vendor records (BAccountID-based) with an associated Contact for the primary AP contact. VendorClass is mandatory in Acumatica and is derived from Opto's vendor type or created as a default. AP workflows in Acumatica use VendorClass to route approvals.
Opto
Purchase Order
Acumatica
POOrder + POLine
1:1Opto PO headers map to POOrder; PO lines map to POLine. The POOrder.VendorID references the migrated Vendor record — all vendors must be committed before PO records can land. POLine.InventoryID references the migrated InventoryItem; all inventory items must be present before PO lines validate.
Opto
Sales Order
Acumatica
SOOrder + SOLine
1:1Opto SO headers map to SOOrder; lines map to SOLine. SOOrder.CustomerID requires the Customer record to exist first. SOLine.InventoryID requires the InventoryItem to exist. UOM on each SOLine must be specified — FlitStack derives the item's default selling UOM from Opto's UOM field.
Opto
Item Warehouse / Bin Location
Acumatica
Warehouse + ItemWarehouse
1:1Opto's warehouse or bin-location assignment per item maps to Acumatica Warehouse records and ItemWarehouse (availability) rows. Each ItemWarehouse record is scoped by Branch. If Opto tracks multiple stocking locations, FlitStack creates corresponding Warehouse records in Acumatica and populates on-hand quantities per location.
Opto
GL Account
Acumatica
Account
1:1Opto general ledger accounts migrate as Acumatica Account records with the same account code. Account type (Asset, Liability, Revenue, Expense) maps to the Acumatica Account type pick-list. Active flag and posting settings are preserved. Branches are assigned to accounts during Acumatica's chart-of-accounts setup.
Opto
Unit of Measure
Acumatica
UOM
1:1Opto UOM definitions (each, box, case, etc.) map to Acumatica's UOM table. Conversion factors between UOMs are preserved if Opto stores them. When Acumatica's POLine or SOLine references a UOM, the UOM must exist in the UOM table first — FlitStack loads UOMs as a first-stage entity before any line records.
Opto
Custom Fields / Extended Attributes
Acumatica
User-Defined Fields (UDF)
1:1Opto custom fields and extended attributes that have no native Acumatica equivalent are migrated as user-defined fields prefixed USR. These require a published Acumatica customization project before data loads — FlitStack generates the customization project XML as part of the migration plan so your Acumatica admin can deploy it before the data run.
Opto
Purchase Receipt
Acumatica
APReceipt
1:1Opto receipt-of-goods records map to Acumatica APReceipt (AP bill or receipt) with lines linked to POLine and InventoryItem. APReceipt.VendorID and APReceipt.POOrderNbr are populated from the migrated PO and vendor records. Receipt date and quantity are preserved as the original Opto transaction date and received quantity.
Opto
Invoice
Acumatica
ARInvoice
1:1Opto AR invoices map to Acumatica ARInvoice (or ARInvoice with SO invoice reference). CustomerID references the migrated Customer. Line items link to InventoryItem where applicable. Payment terms and due dates are preserved from Opto's invoice date and terms field. Original invoice number is stored in ARInvoice.ExtRefNbr for traceability.
| Opto | Acumatica | Compatibility | |
|---|---|---|---|
| Inventory Item | InventoryItem1:1 | Fully supported | |
| Customer | Customer + Contact1:1 | Fully supported | |
| Vendor | Vendor + Contact1:1 | Fully supported | |
| Purchase Order | POOrder + POLine1:1 | Fully supported | |
| Sales Order | SOOrder + SOLine1:1 | Fully supported | |
| Item Warehouse / Bin Location | Warehouse + ItemWarehouse1:1 | Fully supported | |
| GL Account | Account1:1 | Fully supported | |
| Unit of Measure | UOM1:1 | Fully supported | |
| Custom Fields / Extended Attributes | User-Defined Fields (UDF)1:1 | Fully supported | |
| Purchase Receipt | APReceipt1:1 | Fully supported | |
| Invoice | ARInvoice1:1 | 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.
Opto gotchas
No documented export API for programmatic data pull
Reorder Rules are configuration data, not records
Custom field schema varies per account
Acumatica gotchas
API user licenses cap concurrent sessions and request throughput
Multi-tenant filtering requires CompanyID awareness
Custom fields require separate discovery before field mapping
Notes and attachments use a separate linked table structure
Implementation timelines frequently run 3–9 months end-to-end
Pair-specific challenges
Migration approach
Discover Opto schema and map to Acumatica DAC structure
FlitStack AI inventories every Opto entity — standard inventory items, customers, vendors, purchase orders, sales orders, GL accounts, UOM definitions, and any custom fields or extended attributes. We identify orphaned records (items referenced in orders but missing from the item master; customers with no contact email), flag them for cleanup, and produce a complete entity-to-DAC mapping matrix that names every Acumatica table and field involved in the migration. This matrix is the source of truth for all subsequent import batches.
Design Acumatica Company/Branch architecture and UDF schema
Before any data moves, your Acumatica admin (or FlitStack's implementation team) configures the Branch structure to match Opto's multi-entity or multi-warehouse scope. We deliver a Branch design plan: one Branch per Opto entity or warehouse, with GL accounts assigned per Branch. Custom fields from Opto are translated into USR-prefixed user-defined fields and packaged as an Acumatica customization project. The admin publishes the customization (Customization > Publish) so UDFs are available on the target DACs before the data run.
Stage master data in dependency order: UOM, Warehouse, Inventory, Customers, Vendors
Acumatica's referential-integrity constraints mean import order matters. FlitStack stages the migration in ordered batches: (1) UOM definitions, (2) Warehouse records, (3) InventoryItem records with ItemClass assignments, (4) Customer and Vendor records with class assignments and Contact subrecords. Each batch is validated in Acumatica before the next begins — if a batch fails validation, the root cause (typically a missing foreign key or UDF schema issue) is corrected before the next batch starts. Owner and user resolution by email match is applied to Customer and Vendor records at this stage.
Run a sample migration with field-level diff across a representative record slice
A sample pass migrates 100–300 records spanning inventory items, customers, vendors, and at least one open PO and one open SO. FlitStack generates a field-level diff comparing source values to the Acumatica destination record, surfacing discrepancies in UOM mappings, customer-class assignments, or custom-field values. You review the diff and approve the mapping before the full run commits. This step typically takes one to two business days.
Execute full migration with delta-pickup and audit log
All remaining Opto records load into Acumatica in the staged batch sequence. A delta-pickup window (24–48 hours after the initial load) captures any Opto records created or modified during the cutover window — open POs, new sales orders, updated inventory quantities. FlitStack maintains a full audit log of every record inserted or updated in Acumatica, including the source Opto ID for traceability. One-click rollback reverts the Acumatica environment to its pre-migration state if reconciliation reveals data integrity issues.
Platform deep dives
Opto
Source
Strengths
Weaknesses
Acumatica
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. 1 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 Opto and Acumatica.
Object compatibility
1 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
Opto: Not publicly documented — typical SaaS limits assumed and confirmed during scoping.
Data volume sensitivity
Opto exposes a bulk API — large-volume migrations stream efficiently.
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 Opto to Acumatica migration scoping. Not seeing yours? Book a call.
Walk through your Opto to Acumatica migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Opto
Other ways to arrive at Acumatica
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.