ERP migration

Migrate from metasfresh to Acumatica

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

metasfresh logo

metasfresh

Source

Acumatica

Destination

Acumatica logo

Compatibility

92%

11 of 12

objects map 1:1 between metasfresh and Acumatica.

Complexity

BStandard

Timeline

5–10 business days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

metasfresh stores ERP data in a PostgreSQL-backed Java application with a flat object model inherited from ADempiere — Business Partners carry both customer and vendor flags, Products use a single inventory schema, and Orders/Invoices link through document type and warehouse contexts. Acumatica separates Customers and Vendors into distinct entity classes, uses industry-specific InventoryID schemas, and ties Financial Management transactions to Branch and Sub-account structures that metasfresh does not expose natively. We extract metasfresh records via direct PostgreSQL query or REST API endpoints, transform Business Partner records into Acumatica Customers or Vendors based on the BP classification flag, map Product categories to Acumatica warehouse and inventory schemas, and load Orders and Invoices with proper TaxZone and PaymentTerm references. Workflow definitions, document printing layouts, and DATEV export configurations do not migrate — those are rebuilt using Acumatica's customization project editor and report designer after the data layer is live. The migration runs against Acumatica's REST API with batch commit and delta-pickup for in-flight documents created during the cutover window.

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

metasfresh logo

metasfresh

What's pushing teams away

  • Steep learning curve when configuring the system for industries outside its default food and beverage workflows, requiring significant consultant time.
  • Installation and build times can be slow, with users reporting the application sometimes hanging during Docker image builds.
  • Not a turnkey solution — companies without technical staff or ERP experience may struggle to configure and maintain metasfresh without external help.
  • Self-hosting responsibility means no vendor-managed updates, backups, or SLA, which some companies prefer to outsource to a SaaS provider.

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 metasfresh objects map to Acumatica

Each row shows how a metasfresh 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.

metasfresh

C_BPartner (Business Partner)

maps to

Acumatica

Customer (CR.303000) / Vendor (AP.202000)

1:many
Fully supported

metasfresh C_BPartner records are split into Acumatica Customer or Vendor records based on the IsCustomer and IsVendor boolean flags. Records where both flags are true generate both a Customer and a Vendor in Acumatica with separate entity IDs. The C_BPartner_Location addresses map to CustomerAddresses or VendorAddresses; C_BPartner_Contact entries map to Contact records linked by the entity's ContactID.

metasfresh

C_BPartner_Contact

maps to

Acumatica

Contact (CR.302000)

1:1
Fully supported

Contact records extracted from C_BPartner_Contact are loaded into Acumatica Contacts under the parent Customer or Vendor. The contact's IsPrimaryBilling and IsPrimaryShipping flags map to the corresponding Acumatica address default settings. Phone, email, and job title fields translate directly to the Contact fields with matching names.

metasfresh

M_Product

maps to

Acumatica

InventoryItem (IN.202000) / Non-Stock Item / Service Item

1:1
Fully supported

metasfresh M_Product records are classified by ProductType — 'Item' maps to Stock InventoryItem in Acumatica, 'Service' maps to ServiceItem, and 'Resource' maps to Non-Stock Item. The C_UOM reference from metasfresh translates to the Acumatica's default UOM class for the item type. Product categories (M_Product_Category) map to Acumatica Product Categories (IN.205000).

metasfresh

M_Product_PO

maps to

Acumatica

VendorInventoryItem (AP.202000 tab)

1:1
Fully supported

Vendor-specific product data stored in metasfresh's M_Product_PO (purchase orders from vendors) is mapped to the VendorInventoryItem sub-tab on the Acumatica Vendor screen. This preserves vendor-specific part numbers, lead times, and cost prices linked to the vendor relationship. Additionally, any vendor-specific pricing tiers or volume discounts present in the metasfresh M_Product_PO records are transferred to the VendorPriceScheme sub-tab in Acumatica, maintaining the original terms for each vendor-item combination.

metasfresh

M_Warehouse

maps to

Acumatica

Warehouse (IN.204000) + Site

1:1
Fully supported

metasfresh warehouses map 1:1 to Acumatica Warehouses. The warehouse's IsActive flag controls whether the Site is available for inventory transactions in Acumatica. Each metasfresh warehouse location (M_Locator) maps to a Bin within the corresponding Acumatica Warehouse. If the metasfresh warehouse is inactive, the Acumatica Site is disabled to block transactions. Bin-level mapping retains zone and aisle information from M_Locator, preserving precise stock placement.

metasfresh

C_Order (Sales Order)

maps to

Acumatica

SalesOrder (SO.301000)

1:1
Fully supported

metasfresh C_Order records become Acumatica Sales Orders. The document's DocStatus maps to Acumatica's order status (On Hold, Pending, Completed, Cancelled). The C_BPartner reference resolves to the CustomerID; order lines map to SOLine with InventoryID, UOM, quantity, and site references. Payment terms from C_Order are looked up by PaymentTermCD.

metasfresh

C_Invoice (AR Invoice)

maps to

Acumatica

ARInvoice (AR.301000)

1:1
Fully supported

metasfresh AR Invoices (C_Invoice with IsSoTrx='Y') load as Acumatica AR Invoices. The DocumentDate, DueDate, and TaxDate preserve the original metasfresh values. Line items carry the InventoryID, quantity, and tax category references. The C_BPartner reference maps to CustomerID. Credit card and cash payments link via the Payments tab.

metasfresh

C_Invoice (AP Invoice)

maps to

Acumatica

APInvoice (AP.301000)

1:1
Fully supported

metasfresh AP Invoices (C_Invoice with IsSoTrx='N') load as Acumatica AP Invoices. Vendor references resolve to the VendorID in Acumatica. Tax amounts from metasfresh's tax calculations are reproduced using Acumatica's TaxZone configuration. GL Account lines are populated from metasfresh's posting configuration but require Acumatica branch and sub-account mapping.

metasfresh

C_Payment

maps to

Acumatica

Payment (AR.302000 / AP.302000)

1:1
Fully supported

metasfresh payments are split by payment direction — customer payments load as Acumatica Customer Payments (AR.302000) applied to the corresponding AR Invoice; vendor payments load as Acumatica Payments (AP.302000). The PayAccountID is mapped from metasfresh's C_BankAccount. Cash discount and write-off amounts are preserved on the payment document.

metasfresh

C_BankStatement

maps to

Acumatica

CashFlow (CA.301000)

1:1
Fully supported

metasfresh bank statement lines map to Acumatica Cash Flow entries under the CA.301000 screen. The statement date and statement balance map to the cash account's balance date. Matched payments and invoices are linked by their original metasfresh DocumentNo as a reference string.

metasfresh

C_Project

maps to

Acumatica

Project (PM.301000)

1:1
Fully supported

metasfresh project records (C_Project) map to Acumatica Projects with ProjectID, Description, and status fields preserved. The DefaultProjectAccountID maps to the default Revenue and Cost GL accounts. Project tasks from metasfresh map to PMTask records within the parent Project. Custom fields from C_Project are copied to the Acumatica Project custom fields, preserving data linked by SourceSystem_ID__c. Task budgets and allocations map to PMTask cost codes.

metasfresh

AD_Attachment

maps to

Acumatica

Files (SM.202010)

1:1
Fully supported

metasfresh document attachments stored in the database are exported as binary files and re-uploaded to Acumatica Files. The file is linked to the corresponding entity (Customer, Vendor, Invoice, Order) using the NoteID reference. File size limits of Acumatica's attachment storage are enforced during the upload phase.

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.

metasfresh logo

metasfresh gotchas

High

No well-documented public REST API for data migration

High

Attachment and archived document extraction is unreliable

Medium

BOM and manufacturing data requires deep schema knowledge

Medium

Custom fields discovered at runtime, not import time

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

  • Branch and Sub-account dimensional accounting has no metasfresh equivalent

    Acumatica's Financial Management module requires every transaction to carry a BranchID and sub-account (SegmentValue) combination — this is how Acumatica produces dimensional P&L and balance sheet reports across legal entities or cost centers. metasfresh stores GL postings without a branch dimension; the C_AcctSchema defines posting combinations but no branch context. When migrating invoices and payments, every record requires a BranchID assignment. If metasfresh has a single-company setup, we assign a default branch from the Acumatica configuration. If the metasfresh deployment uses multiple org units (AD_Org records), we map each org to a separate Acumatica Branch and validate that all GL accounts have sub-account combinations active in each branch. Without this mapping, Acumatica rejects the documents at posting time with an 'Account Sub combination not found' error. The sub-account chart of accounts must be designed in Acumatica before data migration begins, and the metasfresh account structure must be audited to identify which accounts map to which sub-segments.

  • TaxZone configuration does not carry over — tax amounts must be recalculated

    metasfresh calculates tax on invoices using C_Tax and C_TaxCategory definitions embedded in the product and partner records. The tax jurisdiction mapping (which tax applies to which state or country) is stored in metasfresh as part of the tax configuration. Acumatica calculates tax using TaxZone and TaxID combinations tied to the customer address and the tax category of the line item. The tax amounts from metasfresh cannot be directly transferred as line-level amounts in Acumatica because Acumatica will recalculate them during document release. Instead, we preserve the metasfresh tax amounts in custom fields on the invoice lines and advise the Acumatica administrator to configure TaxZone rules that produce equivalent tax amounts before the document is released. If exact tax amount preservation is a regulatory requirement (for example, for VAT audit trails), the invoice lines can be entered with Tax Included pricing and the original tax amount held as a reference note — but this requires explicit sign-off from the finance team and may not be compatible with standard Acumatica tax reporting.

  • DATEV-specific accounting data requires German localization reconfiguration

    metasfresh includes a DATEV export interface for posting records and master data to German tax advisors in the DATEV format (exported via the DATEV accounting interface). This export captures account numbers, posting dates, and amounts in the specific DATEV CSV/ASCII format. Acumatica does not include a native DATEV export module — German localization is handled through Acumatica's localization framework or third-party add-ons. The metasfresh DATEV postings represent the accounting output of the ERP, not the source documents themselves. When migrating, we bring the source documents (invoices, payments, bank statements) into Acumatica. After migration, the Acumatica finance team must configure the German localization (Chart of Accounts mapping to DATEV account numbers, tax jurisdiction settings, and posting rules) to reproduce DATEV-compatible output. We export the metasfresh DATEV postings as a reference file that the tax advisor or Acumatica partner can use to validate the new system's accounting output.

  • metasfresh custom extension tables need manual schema mapping

    metasfresh is built on an open-source Java/PostgreSQL stack that allows developers to add custom columns directly to standard tables (AD_Column + AD_Table configuration) or create entirely new tables via the metasfresh metadata framework. These custom fields and tables are often used by DACH-region clients to handle industry-specific data (lot tracking for food/beverage, catch weight for fresh produce, multilingual product descriptions). Acumatica handles custom fields through its Customization Project editor (Customization > Customization Projects) and extension tables via the Acumatica Framework. There is no automated translation between metasfresh custom column definitions and Acumatica custom fields. We inventory all metasfresh custom columns during the discovery phase and produce a mapping plan that identifies which custom fields map to standard Acumatica fields, which require Acumatica custom fields (created by an Acumatica developer), and which metasfresh custom fields have no equivalent in Acumatica (flagged for manual data re-entry or custom development). This phase is scoped separately because it may require Acumatica developer involvement.

  • Inventory valuation methods differ — Average Cost vs. Standard Cost mapping

    metasfresh supports multiple inventory valuation methods per product (Average Cost, Standard Cost, LIFO, FIFO) configured through the costing method field on the product. Acumatica's inventory valuation uses the Valuation Method field on the InventoryItem screen (IN.202000) with options including Average, Standard, and FIFO. The challenge is that metasfresh may store per-warehouse costing configurations that Acumatica consolidates at the item class or site level. If the metasfresh setup uses different costing methods per warehouse for the same product, Acumatica cannot replicate this split — the item will use a single valuation method at the company or item-class level. We inventory the costing method assignments in metasfresh before migration and surface any conflicts where one product has multiple costing methods. The resolution requires the finance team to decide on a primary costing method for Acumatica, with the alternative method's cost data preserved as a custom reference field.

Migration approach

Six steps for a successful metasfresh to Acumatica data migration

  1. Discovery and schema audit

    We connect to the metasfresh PostgreSQL database and the target Acumatica tenant to inventory record counts, custom column definitions, and current posting configurations. The metasfresh discovery extracts the full AD_Table and AD_Column metadata to identify any custom extensions. We produce an Entity Inventory Report listing every C_BPartner, M_Product, C_Order, C_Invoice, and C_Payment record, plus any C_Project, M_Warehouse, or custom table records. Simultaneously, we review the Acumatica configuration: Branch list, Sub-account chart, TaxZone setup, UOM classes, and Customer and Vendor account classes. The combined report drives the field mapping specification and identifies any pre-migration Acumatica configuration work (Branch creation, Sub-account segments, TaxZone rules) that must be completed before the data load.

  2. Build and validate the Acumatica configuration

    Before any data is loaded, the Acumatica administrator (or our team with partner credentials) configures Branches, Sub-account segments, TaxZones, PaymentTerms, Customer and Vendor account classes, and Inventory item classes. We deliver a Configuration Checklist based on the discovery output — for example, listing every metasfresh AD_Org that needs a corresponding Acumatica Branch, or every metasfresh tax jurisdiction that needs an Acumatica TaxZone entry. This step runs in parallel with the mapping specification build. Configuration is signed off by the finance and IT stakeholders before the migration scripts are written, ensuring that the target schema is ready to accept the data without constraint violations at load time.

  3. Sample migration with field-level diff

    A representative slice of records — typically 200–500 Business Partners, 500–1,000 Products, and 100–300 documents — is extracted from metasfresh and loaded into the Acumatica sandbox environment. We generate a field-level diff comparing the source metasfresh record values against the destination Acumatica field values, with every field mismatch annotated by mapping rule. The diff is reviewed with the client to verify that Branch assignments are correct, TaxZone mappings produce expected tax amounts, and document numbering sequences align with the Acumatica numbering setup. Approval of the sample diff is the gate for the full migration run. Any field mapping corrections are applied to the migration scripts before the full load begins.

  4. Full data migration with delta-pickup

    The full extraction and load runs against the production Acumatica environment. Business Partners are loaded first (as Customers and Vendors), followed by Products, then Orders and Invoices. Payments and bank statements are loaded after the related invoices to preserve application references. A delta-pickup window — typically 24–48 hours after the initial load — captures any records created or modified in metasfresh during the cutover period. Each record is tagged with the original metasfresh ID (SourceSystem_ID__c) for reconciliation traceability. The audit log captures every create, update, and link operation. If a batch fails validation (for example, due to a missing Branch combination), the batch is held and the client is notified with the specific constraint violation before the next batch begins.

  5. Reconciliation and rollback validation

    After the delta-pickup window closes, we run a reconciliation report comparing metasfresh record counts and aggregate totals (e.g., total AR balance, total AP balance, open order count) against the Acumatica data. The report is delivered to the finance team for sign-off. If the reconciliation reveals discrepancies beyond an agreed tolerance (typically ±0.1% on monetary totals), the one-click rollback reverts the Acumatica environment to its pre-migration snapshot, the root cause is identified, the migration scripts are corrected, and the run is repeated. After sign-off, the metasfresh system is placed in read-only mode and the Acumatica environment is promoted to production. We provide the DATEV reference export and the custom field data file as post-migration deliverables for the Acumatica partner to use during localization configuration and workflow rebuild.

Platform deep dives

Context on both ends of the pair

metasfresh logo

metasfresh

Source

Strengths

  • Completely free and open-source under GPLv2/GPLv3 with no per-user or per-company license fees.
  • Docker and Kubernetes deployment flexibility gives full infrastructure control and data sovereignty.
  • DATEV accounting export built in serves the DACH region's tax advisor workflow natively.
  • 60,000+ commits and active development since 2004 indicate long-term project stability.
  • Source code access enables deep customization that commercial ERPs charge premium tiers for.

Weaknesses

  • No vendor-managed cloud hosting option with SLA — self-hosting and maintenance are entirely the customer's responsibility.
  • Public REST API is not well-documented; migrations rely on flat-file exports, SQL access, or metasfresh's internal migration tooling.
  • Installation and build processes can be slow and unreliable, especially in Docker environments without pre-configured resources.
  • Default workflows favor food and beverage industry, requiring significant reconfiguration for other verticals.
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 metasfresh 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

    metasfresh: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your metasfresh 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 metasfresh to Acumatica data migrations

Answers to the questions buyers ask most during metasfresh to Acumatica migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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

Book a free 30 minute consultation

Most metasfresh-to-Acumatica migrations complete in 5–10 business days for under 100,000 records across Business Partners, Products, Orders, and Invoices. Complex setups with 500,000+ records, multiple warehouses, or metasfresh custom extension tables extend to 3–6 weeks. The longest single step is the discovery and Acumatica configuration phase — configuring Branches, Sub-account segments, and TaxZone rules before data is loaded typically takes 1–2 weeks of calendar time. The actual data movement runs within 48–72 hours once the configuration is validated.

Adjacent paths

Related migrations to explore

Ready when you are

Move from metasfresh.
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