Inventory & Stock Controller
Department: Warehouse & Logistics
Level: Operational
Primary objective: Maintain stock accuracy — periodic stock counts, adjustments, internal transfers, discrepancy reconciliation
What this role does
The Inventory Controller is responsible for the accuracy of physical stock versus the IT system. They perform periodic stock counts (full or cycle count), record necessary adjustments, manage internal transfers between warehouses, and serve as the reference point for any stock discrepancy detected by other roles.
Modules used daily/periodically
| Module | Where to find it | What you use it for |
|---|---|---|
| Physical Inventory | Warehouse → Physical Inventory | Periodic counting sessions |
| Adjustments & Losses | Warehouse → Adjustments & Losses | Correct discrepancies, record losses |
| Internal Transfers | Warehouse → Internal Transfers | Move stock between warehouses/locations |
| Commodities | Warehouse → Commodities | View current stock per SKU and warehouse |
| Warehouse Reports | Warehouse → Reports | Available stock, reorder, valuation, turnover |
| Warehouse History | Warehouse → History | Complete audit of any stock movement |
| Material Issue Slip | Warehouse → Issue Slip | Internal consumption (production, samples, own use) |
Barcode scanner at stocktaking
The scanner dramatically speeds up physical stocktaking and eliminates SKU errors:
Stocktaking flow with scanner:
- Open the Physical Inventory session in the platform
- Go physically to the shelf or area being counted
- Scan the barcode of each product
- Platform automatically identifies the SKU and associates it with the count
- Enter the physically counted quantity
- Move to next item → scan → enter quantity
- At session end: platform compares counted quantities against system stock
- Discrepancies appear automatically → validate or correct them
Advantages over manual stocktaking:
- 3–5x faster
- Zero SKU errors (can't mistype a code)
- Session is auditable: operator + timestamp + SKU + counted quantity
Types of stocktaking in CRMconnect
Full stocktake (annual)
Counting all stock in one warehouse or all warehouses. Generally done at fiscal year-end.
Cycle count (partial, periodic)
Counting a subset of SKUs at regular intervals — without stopping warehouse operations. Efficient for large inventories:
- Class A (high-value or fast-moving SKUs) — monthly
- Class B (medium-turnover SKUs) — quarterly
- Class C (slow-moving SKUs) — semi-annually or as needed
Stocktaking routine
Preparation
- Notify Warehouse Manager you'll be counting zone X — receipts/dispatches from that zone can be temporarily blocked
- Open Physical Inventory → create new session → select: warehouse, zone/category
- Platform shows the list of SKUs to count (from Commodities records)
Actual counting
- Go physically to the shelf → scan each item → enter physical quantity
- Don't look at system quantities while counting — counting must be objective
- If you find items not on the session list → add them manually as new
Reconciliation
- On session completion → platform automatically shows differences:
- Surplus (physical > system): unrecorded stock — possible causes: unregistered GRN, unfinished return
- Shortage (physical < system): "ghost" stock — possible causes: unfinished delivery note, theft, unrecorded damage
- Investigate each difference: check Warehouse History for that SKU in the recent period
- Cause identified → record Adjustment with the correct reason → stock aligns to reality
Key workflows
Workflow 1 — Class A cycle count (monthly)
First Monday of the month → cycle count Class A SKUs
→ Physical Inventory → New session → filter class A category
→ Go through shelves with scanner
→ Finalise session → analyse differences
→ Differences < 1% with no clear causes → direct adjustment with reason "Cycle count reconciliation"
→ Differences > 1% → investigate warehouse history → cause identified
→ Record adjustments with specific reason (theft, damage, recording error)
→ Report results to Manager
Workflow 2 — Adjustment after detected discrepancy
Receipt or picking operator flags: "SKU X shows 50 units in system but physically only 43"
→ Check Warehouse History for SKU X → look for suspicious movements
→ If cause found (e.g. unfinished delivery note) → finalise delivery note → stock aligns automatically
→ If no cause found → Adjustments & Losses → Add:
- Item, quantity: 7 units (the difference)
- Type: Shortage
- Reason: "Unexplained discrepancy — investigated"
- Warehouse
→ Stock corrected to 43 units
→ Report to Manager for recurring cause analysis
Workflow 3 — Internal transfer (stock redistribution)
Warehouse A has excess stock of SKU X, Warehouse B is below reorder point
→ Warehouse → Internal Transfers → Add
→ Fill in:
- Source warehouse: A
- Destination warehouse: B
- Item: SKU X, quantity: [quantity to move]
→ Confirm transfer
→ Stock decreases in A and increases in B automatically
→ Physical operator moves goods → confirms transfer was completed
→ Transfer appears in History of both warehouses
Workflow 4 — Record internal consumption (material issue)
Production consumes raw material from warehouse for a manufacturing order
→ Warehouse → Material Issue Slip → Add
→ Fill in:
- Items consumed and quantities
- Project/manufacturing order to allocate to (for cost tracking)
- Source warehouse
→ Confirm
→ Stock decrements → cost allocated to project/cost centre
→ Production has traceability: what raw material went into what finished product
Workflow 5 — Quarantine after non-conforming receipt
At receipt: batch of products with suspected defect → don't enter active stock
→ Internal Transfers → move to Quarantine warehouse (separate physically and in system)
→ Products are inspected
→ If conforming → Transfer back to active stock
→ If non-conforming → Adjustments & Losses (write-off) or Purchase Returns (return to supplier)
Complete traceability — Warehouse History
Warehouse History (/admin/warehouse/manage_history) is the complete log of all stock movements. Every movement recorded in any WMS module appears here automatically:
| Movement type | Source document |
|---|---|
| Inbound from supplier | GRN (NIR) |
| Outbound to customer | Delivery Note |
| Internal transfer | Internal Transfer Note |
| Internal consumption | Material Issue Slip |
| Adjustment / loss | Adjustment & Losses |
| Stocktake | Physical Inventory |
| Customer return | Delivery Returns |
| Supplier return | Purchase Returns |
How to use History for investigations:
Filter by:
- SKU → See all movements of an item over time
- Warehouse → All movements from a location
- Date → What happened in a specific period
- Operator → Who recorded a movement
- Document type → Only inbound or only outbound
Example: A customer claims they received something other than what they ordered. Open the Delivery Note → Warehouse History → see exactly which SKU was picked, who picked it, at what time.
Available reports
Warehouse → Reports provides pre-built reports:
| Report | Use |
|---|---|
| Available stock | Current snapshot of all SKUs per warehouse |
| Reorder point | SKUs below minimum level → triggers for acquisitions |
| Slow-moving stock | Items without movement > X days → candidates for liquidation |
| Inventory valuation | Total stock value (FIFO/average cost) → for balance sheet |
| Stock turnover | How many times stock renews per period |
Key metrics
| Metric | What it means | Target |
|---|---|---|
| Inventory accuracy | % SKUs without discrepancy at cycle count | > 98% |
| Monthly adjustment value | Unexplained losses | < 0.1% of stock value |
| Internal transfers finalised on time | Stock redistributions processed correctly | 100% with document |
| SKUs below reorder point | Items requiring urgent order | Daily reporting |
Practical tips
Don't adjust without investigating. A discrepancy masked by an adjustment without a real reason doesn't solve the problem — it hides it. Next time, the discrepancy will be larger.
Cycle count is better than annual stocktake. An annual count discovers errors accumulated over 12 months. Monthly cycle counts catch errors within 30 days.
Internal transfer = mandatory document. If you physically move goods without creating the transfer in the system, both warehouses show wrong stock — even if the company-wide total is correct.
The reorder report is for Acquisitions, not for you. Generate it weekly and send it to the Procurement Clerk — they're the ones who act on it.
Run cycle counts monthly rather than an annual full stocktake — monthly counts catch discrepancies within 30 days when they are still small and traceable; an annual count reveals 12 months of accumulated errors all at once.
Never move goods between warehouses without creating an Internal Transfer document in the system. A physical move without a system transfer means both warehouse locations show incorrect stock levels even though the company-wide total appears correct.