ERP migration
Field-level mapping, validation, and rollback between Tryton and Epicor Prophet 21. We move data and schema; workflows are rebuilt natively in Epicor Prophet 21.
Tryton
Source
Epicor Prophet 21
Destination
Compatibility
9 of 12
objects map 1:1 between Tryton and Epicor Prophet 21.
Complexity
BStandard
Timeline
8-12 weeks
Overview
Moving from Tryton to Epicor ERP is a structural migration from an open-source modular platform to a vendor-backed commercial ERP. Tryton stores Parties, Orders, Inventory, and Invoices in PostgreSQL under a strict ORM-enforced transactional model; Epicor uses its own relational schema with a Part master, UOM definitions, Site/Warehouse hierarchy, and DocType document management. We sequence the migration to preserve foreign-key integrity across modules, map multi-company Tryton configurations to Epicor Plants, and flag OHADA-compliant chart-of-accounts structures that have no native Epicor equivalent. Tryton Workflows, custom modules, and OHADA-specific account classifications do not migrate as code or configuration; we deliver a written inventory of these for the customer to rebuild in Epicor Kinetic. The migration covers master data and transactional records; Epicor configuration, BAQ dashboards, BPMs, and report rebuilds are outside standard migration scope.
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 Tryton object lands in Epicor Prophet 21, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Tryton
Party
Epicor Prophet 21
Customer + Supplier (split required)
1:manyTryton Parties are unified records for customers, suppliers, and employees. We split them at migration time using party.category and the party/account relationship. Customer-type parties map to Epicor Customer with Address, Contact, and PaymentMethod records created in dependency order. Supplier-type parties map to Epicor Supplier with the same address and contact structure. Party-specific fiscal data and tax identifiers migrate to the respective Customer or Supplier tax and payment fields. Multi-company party assignments in Tryton require mapping to Epicor's Plant-level customer and supplier hierarchies.
Tryton
Sale Quotation + Sale Order
Epicor Prophet 21
SalesOrder
1:1Tryton separates Sale Quotation from Sale Order; both map to Epicor SalesOrder with the OrderHed and OrderDtl records created sequentially. Tryton quotation states (quotation, confirmed, done, cancelled) map to Epicor OrderRel records with appropriate release status. Line-level pricing, taxes, and descriptions migrate to OrderDtl. Party links resolve via the Customer records created in the Party split pass. Tryton shipment states map to Epicor Shipment records attached to the SalesOrder.
Tryton
Purchase Order
Epicor Prophet 21
POHeader + PODetail
1:1Tryton Purchase Orders map to Epicor POHeader and PODetail with supplier party reference resolved to the Supplier record created from the Party split. Expected dates, quantities, and prices migrate directly. Order states including confirmed and cancelled transfer to Epicor POLine and PORel records with release status. Purchase invoicing linked to the PO migrates as separate AP invoices attached to the PO.
Tryton
Inventory Movement / Stock Move
Epicor Prophet 21
PartBin + PartTran
1:1Tryton Stock Moves track goods from receipt to delivery with shipment state, warehouse assignment, and quantity. We map warehouse to Epicor Warehse, and each Stock Move becomes a PartTran record linked to a PartBin snapshot. Lot and serial tracking migrates to Epicor PartLot. Inventory valuation amounts from Tryton migrate to PartCost records. We run a quantity reconciliation after PartTran load to confirm PartBin balances match Tryton.
Tryton
Account (Chart of Accounts)
Epicor Prophet 21
Account
1:1Tryton's account_chart model with account type, parent hierarchy, and tax applicability maps to Epicor's Account (COA) structure. Account codes and names migrate directly. Account type settings (expense, revenue, receivable, payable) map to Epicor NaturalAccount and Account Type. OHADA-specific accounts require a dedicated mapping pass since Epicor has no native OHADA module. We flag OHADA accounts during scoping and generate a separate OHADA account mapping spreadsheet for the customer's admin to configure in Epicor before GL posting data is loaded.
Tryton
Analytic Account
Epicor Prophet 21
Custom Cost Element or BAQ Structure
lossyTryton Analytic Accounts store a separate analytical axis against moves and invoices that Epicor does not replicate natively. Epicor uses Cost Elements or GL Analysis for similar purposes, but these require configuration per the customer's chart of accounts structure. We migrate analytic lines as dimension-tagged GLDetail records and recommend a BAQ-based lookup table in Epicor for reporting. The customer chooses the Epicor equivalent during scoping, and we document the mapping in the handoff spreadsheet.
Tryton
Invoice (Account Invoice)
Epicor Prophet 21
ARInvoice / APInvoice
1:1Tryton Invoices carry a state machine (draft, validated, posted, paid, cancelled) and tax computation caches. Posted and paid invoices migrate to Epicor ARInvoice (for customer invoices) or APInvoice (for supplier invoices) with full line-level detail, tax amounts, and payment terms. Invoice payment allocations migrate as Epicor CashReceipt records. We trigger a post-import recompute pass for any invoices where cached amounts deviate from computed totals by more than a currency rounding threshold, consistent with Tryton's own migration documentation requirements for pre-7.0 invoice records.
Tryton
Project + Work
Epicor Prophet 21
Project
1:1Tryton Project and Work entries support hierarchy, status tracking, and time recording. We map to Epicor Project with WBS (Work Breakdown Structure) phases as ProjectPhase records. Party assignments and durations migrate to ProjectPhase and ProjectTask records. Active versus closed status carries forward. Note that Epicor's project-centric model differs from Tryton's task-centric model: Epicor Projects are containers for revenue recognition, billing, and scheduling, and the customer's admin may need to restructure the Tryton work hierarchy to match Epicor's phase-and-task structure.
Tryton
Document / Attachment (ir_attachment)
Epicor Prophet 21
Doc2 + DocType
1:1Tryton stores file attachments as Binary fields with file_id references in ir_attachment. We run a pre-export pass that queries ir_attachment, extracts file content by file_id, and bundles attachments as a parallel export set. In Epicor, we create DocType records (one per attachment category identified during scoping) and load file content via Epicor's REST API with chunking for files exceeding 10 MB. Parent-record linkage is preserved by matching the original Tryton file_id to the newly created Epicor Doc2 record and linking it to the corresponding Order, Invoice, or Part record.
Tryton
User + Employee
Epicor Prophet 21
User + Employee
1:1Tryton Users and Employees are separate models with role-based access control. Active users migrate to Epicor User with login and license assignment. Employee records map to Epicor Employee with department and supervisor assignments. Group memberships from Tryton remap to Epicor's Role-based security groups. Inactive users are migrated as inactive Epicor users with a note flagging their original Tryton status. Owner assignments on transactional records resolve via the User email lookup after User provisioning.
Tryton
Bank Account + Cash Account
Epicor Prophet 21
BankAcct
1:1Financial accounts for payments and cash migrate to Epicor BankAcct with journal assignments and reconciliation settings. Open AP/AR balances from Tryton migrate as PartTran and GLJrnLine records linked to the correct party account. Payment methods associated with BankAcct records in Tryton map to Epicor PaymentMethod linked to the corresponding BankAcct.
Tryton
Custom Fields / Properties (ir.model.field)
Epicor Prophet 21
Custom Fields / UD Columns
lossyTryton supports dynamic field extension via ir.model.field and properties. Custom fields added by modules or administrators migrate as key-value pairs captured in a staging table during export. In Epicor, we pre-create UD columns (User Defined fields) on the target table (OrderHed, OrderDtl, Part, etc.) before transactional records are loaded, using Epicor's UD Column Map interface. Large multi-select or structured custom fields may require a custom BAQ-based lookup table rather than native UD columns, which we document in the mapping spreadsheet.
| Tryton | Epicor Prophet 21 | Compatibility | |
|---|---|---|---|
| Party | Customer + Supplier (split required)1:many | Fully supported | |
| Sale Quotation + Sale Order | SalesOrder1:1 | Fully supported | |
| Purchase Order | POHeader + PODetail1:1 | Fully supported | |
| Inventory Movement / Stock Move | PartBin + PartTran1:1 | Fully supported | |
| Account (Chart of Accounts) | Account1:1 | Fully supported | |
| Analytic Account | Custom Cost Element or BAQ Structurelossy | Fully supported | |
| Invoice (Account Invoice) | ARInvoice / APInvoice1:1 | Fully supported | |
| Project + Work | Project1:1 | Fully supported | |
| Document / Attachment (ir_attachment) | Doc2 + DocType1:1 | Fully supported | |
| User + Employee | User + Employee1:1 | Fully supported | |
| Bank Account + Cash Account | BankAcct1:1 | Fully supported | |
| Custom Fields / Properties (ir.model.field) | Custom Fields / UD Columnslossy | 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.
Tryton gotchas
PostgreSQL-only deployment with strict foreign-key constraints
Series-skip migration requires sequential manual steps
OHADA accounting context changes account schema
Invoice amount caches must be recomputed post-import
Binary attachment storage via file_id requires separate file export
Epicor Prophet 21 gotchas
Third-party bolt-on integrations complicate migration scope
Dirty data without standardized processes compounds migration risk
SDK customizations and BPMs may not survive platform upgrades
Report-based export only for non-technical users
Per-user pricing model requires accurate user count before migration planning
Pair-specific challenges
Migration approach
Discovery and scoping
We audit the Tryton database across installed modules, current series version, custom field extensions via ir.model.field, multi-company configuration, OHADA accounting flag, and active workflow triggers. We identify all object record counts, attachment file counts, and any OHADA-specific account structures. We pair this with an Epicor configuration audit of the target environment: existing COA structure, Part master completeness, Plant/Warehouse hierarchy, and UD column slots available for custom fields. The discovery output is a written migration scope, a multi-company mapping matrix, an OHADA account flag report, and a custom field inventory with recommended Epicor UD column assignments.
Epicor schema pre-configuration
We configure the Epicor destination schema before any data migration begins. This includes creating Part records (from Tryton product codes), setting up Warehse and Site records (from Tryton warehouse assignments), pre-creating UD columns on target tables (from Tryton custom fields), defining DocType records (for attachment categories), and mapping the Tryton account structure to Epicor NaturalAccount types. OHADA account types receive a separate configuration pass with the mapping spreadsheet completed by the customer's admin. We deploy this configuration into a non-production Epicor environment first for validation.
Sandbox migration and reconciliation
We run a full migration into a non-production Epicor environment using production-equivalent data volume. The customer's Epicor administrator reconciles record counts (Customers in, Suppliers in, Orders in, Invoices in, Inventory in), spot-checks 25-50 random records against the Tryton source, and verifies OHADA account mappings and multi-company Plant assignments. Sign-off on the sandbox migration is required before production migration begins. Any mapping corrections, missing UD columns, or Plant assignment errors are resolved here.
Master data migration in dependency order
We load master data in strict dependency order: Account chart (after OHADA mapping verified), Customer and Supplier records (from Party split), Part master (from Tryton product codes), Bank accounts, and User/Employee records. Each phase emits a row-count reconciliation report before the next phase begins. OHADA account types are loaded in the Account phase with a separate OHADA flag pass. Owner assignments on transactional records resolve via the User email lookup after User provisioning is confirmed.
Transactional record migration
We load transactional records in dependency order: Purchase Orders (with Supplier resolved), Sales Orders (with Customer and Part resolved), Inventory movements (with Warehse and PartBin resolved), Invoices (with Customer/Supplier and Account resolved), and Project/Work records (with party assignments resolved). We use Epicor's REST API with $skip and $top pagination for large datasets, implement retry logic for 429 and 503 transient errors, and chunk batches to stay within Epicor's rate limits. OHADA-specific invoice line accounts use the OHADA mapping pass applied during the Invoice phase.
Attachment file migration and post-migration handoff
We extract Tryton ir_attachment file content by file_id, bundle files by parent record type (Order, Invoice, Part), and load into Epicor Doc2 records linked to the corresponding DocType. Large files are chunked per Epicor's file size limits. We run a final reconciliation comparing Tryton attachment counts to Epicor Doc2 counts by parent record. We deliver the Workflow and custom module inventory document to the customer's admin team for BAQ and BPM rebuild. We support a one-week post-migration window for reconciliation issues. Epicor BAQ rebuilds, BPM recreation, and report migration are outside standard migration scope and are handled by the customer's Epicor administrator or a certified Epicor partner as a separate engagement.
Platform deep dives
Tryton
Source
Strengths
Weaknesses
Epicor Prophet 21
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Tryton and Epicor Prophet 21.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Tryton: Not publicly documented by the Tryton Foundation.
Data volume sensitivity
Tryton 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 Tryton to Epicor Prophet 21 migration scoping. Not seeing yours? Book a call.
Walk through your Tryton to Epicor Prophet 21 migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Tryton
Other ways to arrive at Epicor Prophet 21
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.