Appearance
Inventory Opening Stock Migration
Inventory opening stock migration loads approved opening stock balances into Pinkapple ERP while the tenant is still in migration mode.
Use this flow when the business is moving existing stock from spreadsheets, a previous ERP, or a signed-off stock snapshot into Pinkapple as of the migration date. Do not use it for normal day-to-day receipts after go-live.
Workspace Reference
| Task | Workspace | Result |
|---|---|---|
| Review migration state | Administration -> General Setup -> Data Migration | Confirm migration mode is still active and the tenant is on the correct migration date. |
| Prepare stock prerequisites | Administration -> General Setup -> Operational Items | Confirm the item is approved and marked as stock managed. |
| Confirm warehouse | Inventory -> Setup -> Warehouses | Confirm the destination warehouse and its stock location are active. |
| Confirm stock accounting defaults | Inventory -> Setup -> Item Categories | Confirm the stock category has inventory asset and receipt-offset accounting configured. |
| Run opening stock import | Administration -> General Setup -> Data Migration -> Opening Stock | Generate the warehouse-specific template, validate rows, and execute the import. |
| Verify migrated stock | Inventory -> Operations -> Stock Movements and Stock Balances | Confirm the movement posted and the warehouse balance increased correctly. |
| Verify accounting | Accounting reports and GL journals where available | Confirm debit to inventory asset and credit to migration opening balance contra. |
When To Use It
Use inventory opening stock migration when:
- the tenant is still in migration mode
- the implementation team has a signed-off opening stock snapshot
- stock should be loaded as of the controlled migration date
- the imported balances must post opening-value accounting to the migration contra account
Do not use it for:
- supplier receipts after go-live
- stock corrections that belong to stock take or adjustment workflows
- catch-up operational receipts that should be processed through the real source workflow
Before You Start
Confirm all of the following before generating the template:
- migration mode is still active for the tenant
- the migration date shown in Data Migration is correct
- the target warehouse is active
- each selected operational item is active, approved, and stock managed
- if an item has never been stocked before, you know which stock category should be used to auto-create the execution stock item
- the selected stock category has valid inventory asset and receipt offset accounting
- the migration opening balance contra account is configured
- the tenant is reasonably quiet if GL posting has recently been under heavy load
Recommended First Live Proof
For the first live run after deployment, use one real row you intend to keep.
- Start with one warehouse.
- Start with one approved stock-managed item.
- Use the real quantity and unit cost you want to keep as of the migration date.
- Do not start with a large file.
This proves the flow without making cleanup harder if a prerequisite is still missing.
Step-By-Step Flow
- Open Administration -> General Setup -> Data Migration.
- In the migration overview, continue the Opening Stock step.
- Select the destination Warehouse.
- Select the Default Stock Category. Use this when the system must auto-create a stock execution item because the operational item has never been stocked before.
- Select the stock-managed Operational Items to include in the template.
- Download the generated template.
- Fill the row data for the selected items.
- Upload the file and run Validate.
- If validation returns no errors, run Execute once.
- After success, verify stock movement, stock balance, migration batch, and GL impact.
Template Column Guidance
| Column | What Users Enter |
|---|---|
quantity_on_hand | Opening physical quantity to load. Must be greater than zero. |
unit_cost | Opening unit cost as of the migration date. Must be greater than zero. |
batch_number | Required only for batch-tracked items. Leave blank for non-batch items. |
lot_number | Required only for lot-tracked items. Leave blank for non-lot items. |
serial_number | Required only for serial-tracked items. One unit per row for serial-tracked stock. |
expiry_date | Enter only when the item or layer uses expiry tracking. |
zone_code | Enter only if the stock must land in a specific warehouse zone. |
condition_code | Optional operational condition or state where the implementation uses it. |
notes | Optional migration note for the row. |
Do not edit the hidden template columns generated by the system. They are used to keep the row tied to the selected warehouse, stock category, and operational item.
What The System Does On Execute
When the import executes successfully, Pinkapple:
- re-validates the uploaded rows server-side
- auto-creates a stock execution item if the selected operational item has never been stocked before
- creates stock receipt movements as of the migration date
- tags the movement as migration opening stock
- creates a migration batch with domain
INVENTORY - posts the accounting impact as opening stock, not as a normal day-to-day receipt
The expected accounting direction is:
- debit inventory asset
- credit migration opening balance contra
How To Verify Results
After execution, verify all of the following:
- the stock movement exists as a receipt for the selected warehouse
- the movement carries the migration opening stock context
- the warehouse balance increased by the imported quantity
- the imported unit cost is reflected on the created stock layer or balance
- the migration batch list shows an
INVENTORYbatch - the GL posting shows inventory asset on debit and migration opening balance contra on credit
Validation Rules To Expect
The import rejects rows when:
- quantity is zero or negative
- unit cost is zero or negative
- a required tracking field is missing
- a tracking field is filled for an item that should not use it
- the same auto-created stock item is given inconsistent tracking or expiry behavior across rows
- the warehouse zone does not belong to the selected warehouse
- duplicate serial or conflicting stock-layer combinations are supplied
Common Problems
| Problem | What To Check |
|---|---|
| Item is missing from selection | Confirm the operational item is approved, active, and marked as stock managed. |
| Validation fails on tracking | Use batch, lot, serial, and expiry values only when the stock item policy requires them. |
| Auto-create fails | Confirm the selected default stock category is valid for the intended inventory accounting setup. |
| Execute seems slow | Do not click again immediately. First confirm whether the movement or migration batch was already created. |
| GL posting blocks or hangs | Check whether the tenant is under heavy posting or sequence contention, then rerun in a quieter operational window. |
| Stock posted to wrong warehouse | Confirm the template was generated from the correct warehouse context before filling the file. |
Good Practice
- Use one warehouse per import batch.
- Keep the first production proof to one row.
- Use the generated template for the exact warehouse and item set you selected.
- Re-download the template if you change warehouse, stock category, or selected items.
- Reconcile the imported stock total against the approved opening snapshot before moving to TB / BS.
