What an ERP migration involves
An ERP data migration moves a business's master data and balances from an old system to a new one at a chosen cut-over date, so that the new system starts exactly where the old one stopped. It matters because every report the new system produces, from the first VAT return to the first audited balance sheet, inherits the quality of what was migrated.
Most migration problems are not technical. They come from moving too much history, choosing a cut-over date in the middle of a busy month, or going live without proving that the new opening trial balance equals the old closing one. This guide sets out the decisions in the order they should be made, then shows the import tools, opening-balance screens and checks in Skyline Nexus ERP, and ends with a timeline a finance manager can follow.
Decide what to migrate: balances, open items and master data
Migrate balances and open items, not the full history. A new ledger needs the balance of every account at the cut-over date, the individual open items behind the control accounts (unpaid customer invoices, unpaid supplier bills, uncleared cheques), and the master data that future transactions need: customers, suppliers, products, prices, employees and fixed assets. Closed invoices from past years add volume, import errors and no value to the new ledger.
History still has to be kept. Export the old system's reports for every open year, at least the trial balance, general ledger, sales and purchase listings, VAT returns and ageing, and archive them read-only with the same retention period as the books. Auditors need them for comparatives and tax authorities for inspections, but they belong in the archive, not in the new system's ledger.
- Migrate: chart of accounts, account balances, open receivables and payables, stock on hand
- Migrate: customers, suppliers, products, prices, employees, fixed assets, budgets
- Archive, do not migrate: closed invoices, paid bills, prior-year journals
- Keep access to the old system, read-only, until the first audit on the new system is signed
Choose the cut-over date
The cleanest cut-over date is the first day of a financial year: the old system produces the final year-end accounts, the new one starts with a balance sheet only, and no year is split across two systems. The next best is the first day of a quarter or a month after a VAT period ends, so each VAT return is prepared from one system. Avoid cutting over mid-month or in the busiest trading weeks.
Whatever the date, the old year or period must be closed before the final balances can be entered, and closing takes time. A common pattern is to go live on the cut-over date with master data and open items, keep trading in the new system, and enter the final general ledger balances two or three weeks later, once the old period is closed. In Skyline Nexus ERP the fiscal year for the cut-over date must exist before anything posts: set the Financial year start month in Business Settings and create the fiscal year with monthly periods under Fiscal Authority, Fiscal Periods.
Map the chart of accounts
Mapping is where the migration's accounting decisions are made. Skyline Nexus ERP starts with a chart template chosen at installation, Saudi, UAE or Generic, with bilingual default account types for assets, liabilities, equity, revenue and expenses. You can keep the template's structure and add your own accounts, or import a chart from a CSV, XLSX or XLS file of up to 5 MB using the import template, whose columns are gl_code, name, name_ar, account_type, parent_gl_code, account_nature (posting or heading) and opening_balance.
Leave opening_balance at zero in the import: the chart-of-accounts import and the Add Account screen refuse non-zero opening balances, which are entered on the Opening Balances screen instead. Build a mapping table from every old account to one new account, and use the migration to simplify. Twenty revenue accounts that exist only to report by branch or product are better replaced by business locations and product-category mappings; our guide on designing a chart of accounts explains why.
- Old 4010 Sales Toronto and 4020 Sales Ottawa: new 4000 Sales, with two business locations
- Old 1200 Debtors: new Accounts Receivable control account (Is Control Account, Control Type A/R)
- Old 2100 GST/HST Payable: the account set as VAT Output Account in General Settings
- Old 1500 Vehicles and 1510 Vehicles Depreciation: fixed-asset cost and accumulated depreciation accounts
Import master data
Skyline Nexus ERP has import screens with downloadable templates for most master data. Files are read with a spreadsheet reader, so XLS, XLSX and CSV are accepted where the template is a spreadsheet. Import in dependency order: products before opening stock, contacts before open items, the chart of accounts before anything that posts.
Two imports can be undone, which makes them safe to rehearse. Import Sales and Import Purchase show a preview and allow a revert of an import batch, so a test load can be removed cleanly. For the others, rehearse in a test business first.
- Import Products, then Import Opening Stock, each from its template
- Import Contacts: contact type, names, Contact ID, Tax number, Opening Balance, Pay term, Credit Limit, address
- Chart of Accounts import (CSV, XLSX, XLS) and Budget import
- Import Assets for the fixed-asset register
- HCM Import Employees for staff and salary data
- Import Sales and Import Purchase for transactions, with preview and batch revert
- Bank statement import (CSV, TXT, XLSX, XLS) once Treasury bank accounts exist
Worked example: building the opening trial balance
A Canadian distributor cuts over on 1 January. The old system's closing trial balance shows: bank CAD 85,000, trade receivables 62,000, inventory 140,000, vehicles at cost 150,000 and accumulated depreciation 55,000; trade payables 48,000, GST/HST payable 9,000, bank loan 70,000, share capital 50,000 and retained earnings 205,000. Debits are 85,000 plus 62,000 plus 140,000 plus 150,000, CAD 437,000; credits are 55,000 plus 48,000 plus 9,000 plus 70,000 plus 50,000 plus 205,000, also CAD 437,000.
The Opening Balances screen under Fiscal Authority refuses amounts on any account flagged Is Control Account, typically receivables and payables, so check the flags before preparing the set. Receivables and payables are built from the individual customer and supplier balances entered per contact through the Opening Balance column of Import Contacts. The general ledger set must still balance on its own, so the net of receivables and payables, 62,000 less 48,000, CAD 14,000, is held on a migration clearing account. Agree the clearing treatment with your implementation contact, and treat the inventory line the same way: confirm whether your opening stock import posts to the ledger before entering the inventory balance, so stock value is not counted twice.
- Opening Balances debits: bank 85,000, inventory 140,000, vehicles 150,000, migration clearing 14,000 = 389,000
- Opening Balances credits: accumulated depreciation 55,000, GST/HST 9,000, loan 70,000, share capital 50,000, retained earnings 205,000 = 389,000
- Per contact: customer openings totalling 62,000; supplier openings totalling 48,000
- Check: 62,000 - 48,000 = 14,000, the clearing balance
- Target at go-live: every other trial balance line equals the old closing figure, and the AR and AP Aging Reports total 62,000 and 48,000
Opening balances: rules that protect you
The Opening Balances screen shows GL Code, Account Name, Type, Normal, Debit and Credit for each account, with Total Debits, Total Credits and the Difference, and Save Balances refuses a set that does not balance. Opening balances are dated at the start of the first fiscal period, so they appear in every report for the year. They can be changed until the first fiscal period is locked, which is the point to lock it: after the old closing figures are final and the new opening trial balance has been agreed to them.
Opening balances are held at company level, so a branch-filtered trial balance shows movements since go-live rather than a branch opening position. If branch balance sheets matter to you, keep the old system's branch closing figures in the migration file for comparison.
Reconcile before you switch off the old system
A migration is finished when it is proved, not when the imports succeed. Reconcile each migrated population to the old system, record the evidence and have someone other than the person who ran the import sign it. Auditors will ask for this file in the first year, because opening balances are an audit area in their own right when the system changes.
- Trial balance: every account agrees to the old closing trial balance, with receivables and payables agreed through the ageing reports and the clearing account
- Receivables: AR Aging Report total and customer count agree to the old aged debtors
- Payables: AP Aging Report total and supplier count agree to the old aged creditors
- Stock: Opening and Closing Stock Report quantities and value agree to the final count
- Fixed assets: cost and accumulated depreciation per category agree to the old register
- Bank: book balance in Treasury agrees to the reconciled bank balance at cut-over
- Payroll: employee count, salaries and year-to-date figures agree for each employee
A cut-over timeline
The timeline below suits a small or mid-sized business moving at a year end. Compress it for a simpler business, but keep the rehearsal: a full dry run with real data is the single step that most reduces go-live problems.
- Eight weeks before: agree scope, cut-over date, chart mapping and owners for each data set
- Six weeks before: configure locations, invoice schemes, tax rates, fiscal year and account mapping
- Four weeks before: rehearsal import in a test business; reconcile and fix templates
- One week before: freeze master-data changes in the old system; final stock count planned
- Cut-over day: import products, stock, contacts and open items; switch on auto-post toggles
- Two to three weeks after: old year closed; enter and agree general ledger opening balances
- First month-end: full reconciliation file signed; lock the first fiscal period
Common migration mistakes
The same errors recur across migrations. Most are avoided by deciding them explicitly in the plan rather than discovering them in the first month-end.
- Importing gross customer balances instead of open invoices, which breaks ageing
- Entering receivables or payables on the ledger and again per contact, doubling them
- Forgetting to create the next fiscal year, so postings after the year end are refused
- Leaving auto-post toggles off, so documents are saved but the ledger is empty
- Migrating the old chart as it is, including dozens of unused accounts
- Skipping the stock count at cut-over and importing book quantities
- Switching off the old system before the first audit has used its archive
Common questions
What data should be migrated to a new ERP?
An ERP data migration should move the chart of accounts, account balances at the cut-over date, open customer and supplier items, stock on hand, and master data such as customers, suppliers, products, prices, employees and fixed assets. Closed historical transactions are usually archived from the old system rather than migrated, which keeps the new ledger clean and the migration shorter.
When is the best time to cut over to a new ERP?
The best time to cut over to a new ERP is the first day of a financial year, because the old system produces the final year-end accounts and the new one starts with a balance sheet only. If that is not possible, cut over at the start of a quarter or month after a VAT period ends, avoiding peak trading weeks.
How are opening balances entered in Skyline Nexus ERP?
Opening balances in Skyline Nexus ERP are entered under Fiscal Authority, Opening Balances as a balanced set of debits and credits dated at the start of the first fiscal period. Receivables and payables control accounts are excluded; customer and supplier balances are entered per contact through the Opening Balance column of Import Contacts.
Can I import a chart of accounts into Skyline Nexus ERP?
Yes. Skyline Nexus ERP imports a chart of accounts from a CSV, XLSX or XLS file of up to 5 MB, using a downloadable template with gl_code, name, name_ar, account_type, parent_gl_code, account_nature and opening_balance columns. Opening balances in the chart import must be zero; they are entered on the Opening Balances screen.
How do you check that an ERP migration is correct?
To check that an ERP migration is correct, agree the new opening trial balance to the old closing trial balance account by account, then agree the receivables and payables ageing, stock quantities and value, fixed-asset register and bank balance to the old system. Record each check with evidence and have someone other than the importer sign it.
Should historical transactions be imported into a new ERP?
Historical transactions usually should not be imported into a new ERP. Importing closed invoices and prior-year journals adds volume and errors without improving the new ledger. Export the old system's trial balances, ledgers, VAT returns and ageing reports for every open year instead, and keep them read-only for the statutory retention period.
This guide is general information, not tax, accounting or legal advice. Rules differ from country to country and change over time; confirm the current position with your tax authority or a qualified adviser before acting on anything here.
Ready to run your operation on a single workspace?