SysPro → ERPNext Migration Playbook
A reusable methodology for migrating mid-market manufacturers and distributors from SYSPRO ERP to ERPNext — discovery, functional mapping, data migration, cutover, and the risks that bite.
Assumes ERPNext v15+ and a SysPro 7/8 source (SQL Server backend). Work it in order; every engagement starts at Assessment and produces a client-specific mapping workbook before any data moves.
01 · Discovery & Assessment
Understand the SysPro footprint, agree the migration shape, and set the reconciliation contract before any data moves. Migrations fail in scoping, not loading.
Scope the footprint
- Modules in use (not licensed) — GL, Cash Book, AP, AR, Inventory, Sales/Purchase Orders, Quotations, BOM, WIP/Manufacturing, MRP, Lot/Serial, Landed Cost, Fixed Assets.
- Customisations — VBScript/business-object customisations, custom SRS reports, e-sign flows. The usual scope-creep source; rarely 1:1.
- Integrations — bank feeds, EDI, CRM, e-commerce, POS, payroll, BI (each a cutover of its own).
- Data volumes — row counts per major table (drives tooling).
- Localisation — SA VAT (VAT201), multi-currency, multi-company, multi-warehouse, costing method.
Confirm data extraction path
SysPro stores everything in Microsoft SQL Server: (1) direct read-only SQL (best), (2) SysPro queries/SRS exports to CSV, (3) e.net business objects. Confirm access rights early — VAR-hosted / cloud instances may restrict raw SQL.
Choose the shape
Phased / modular is the default for mid-market clients — migrate and prove one module at a time. Big-bang only for small, clean datasets.
A clean migration runs ~6–10 weeks incl. data prep, parallel run & training; complex manufacturing/multi-company adds to that.
02 · Module & Data Mapping
Map the object, then its fields. Get chart of accounts, groups and tax right first — everything downstream depends on them.
SysPro table prefixes (verify per client version/instance)
| Prefix | Module | Typical tables |
|---|---|---|
Gen* | General Ledger | GenMaster, GenJournalDetail, GenBalances |
Ar* / Ap* | AR / AP | ArCustomer, ArTrnDetail / ApSupplier, ApTrnDetail |
Cb* | Cash Book | CbBank, CbTransaction |
Inv* | Inventory | InvMaster, InvWarehouse, InvMovements |
Sor* / Por* | Sales / Purchase Orders | SorMaster/SorDetail · PorMasterHdr/Detail |
Bom* / Wip* | BOM / WIP | BomStructure, BomOperations · WipMaster |
Functional mapping (selected)
| SysPro | ERPNext | Notes |
|---|---|---|
| GL accounts (structured/free) | Account (tree) | Roll-up segments → nested account groups |
| AR/AP open items | Sales/Purchase Invoice (or opening JE) | Open items only; closed → archive |
| SA VAT | Tax templates + VAT201 via csf_za | Map SysPro tax codes → ERPNext templates |
| Stock item / warehouses | Item / Warehouse (tree) | Opening qty+valuation via Stock Reconciliation |
| Sales/Purchase Orders | Sales/Purchase Order | Open only |
| BOM / operations | BOM / Operation+Workstation+Routing | Multi-level → nested; work centre → Workstation |
| WIP / MRP | Work Order+Job Card / Production Plan | Open jobs only; re-plan MRP, don't lift-and-shift |
Keep SysPro codes as ERPNext name where sensible. Groups before records. Record every decision in the mapping workbook.
03 · Data Migration — Extract, Transform, Load
ERPNext's Data Import handles master data well; larger or interlinked data needs scripted ETL or the API. The practical SysPro pattern: read SQL Server → stage to clean CSV → import; transactions/opening balances via scripted, reconciled loads.
Load sequence (dependency order — do not reorder)
- Company + fiscal years + currencies
- Chart of Accounts (tree) + Cost Centers
- Tax templates (+
csf_zaVAT) - Groups & dimensions — Customer/Supplier/Item Groups, UOMs, Warehouses, Price Lists
- Master data — Customers, Suppliers, Items, Item Prices, BOMs, Workstations/Routings
- Opening stock — Stock Reconciliation (qty + valuation per item/warehouse)
- Opening financial balances — opening JE (trial balance), open AR/AP
- Open transactions — open SOs, POs, Work Orders
- Current-year detail (only if in-system history is needed)
04 · Cutover & Go-Live
- Timing — month-end / low-activity window; freeze SysPro master-data during the final extract+load.
- Parallel run — ERPNext alongside SysPro ~2 weeks; enter new transactions in both, reconcile weekly.
- Reconciliation gate (go/no-go) — GL trial balance, AR/AP aging, stock qty+valuation, open SO/PO/WIP, bank balances must all tie, signed off by the client finance lead.
- SysPro → read-only post-cutover (history & audit, not edited).
- Rollback — define failure, the decision owner, and the way back, before go-live.
- Hypercare — 2–4 weeks intensive support + daily mini-reconciliation; decommission only after a clean period-end on ERPNext.
05 · Risks & Gotchas
- Customisations don't port — VBScript/business objects/SRS reports → re-implement or retire (#1 scope-creep source).
- WIP & costing differ — reconcile valuation; re-plan manufacturing rather than lift-and-shift. MRP is a different engine.
- Dirty masters — dedupe, fix UOMs, resolve blank/zero prices, drop obsolete records (cleanse in staging).
- CoA shape — structured/segmented → tree; get the roll-up right or every report is wrong.
- SA localisation — VAT201 via
csf_za(accountant sign-off); verify multi-currency rounding on a sample. - Data access — restricted SQL on hosted/cloud SysPro; confirm extraction rights + how long SysPro stays available.
- People/process — default to phased; never skip parallel run, training, or rollback plan; don't forget integration cutover.
Sources
SYSPRO: Manufacturing · Inventory · General Ledger · ERP Research overview
ERPNext migration: Solufy step-by-step · Infintrix (object/field mapping) · FOSS ERP · Frappe Data Migration Tool · ERPGulf migration-scripts · LST · Ksolves
Cutover / opening balances: rtCamp · TechCloudPro · Sigzen · KPC checklist · Threadgold