Learning contextDemo Retail Group LLC12 stores · 2 distribution centres · AED/SAR/USD · omnichannel replenishmentChange scenario details →
Skip to content

Demo MedSure Distribution: a regulated pharma day ​

Demo MedSure Distribution LLC supplies hospitals and retail pharmacies from two temperature-controlled warehouses. The company buys medicines in USD, sells in AED and SAR, carries batches with expiry dates, and must prove who received every unit. This chapter is a practical OSERP simulation: every number is fictional, but the control logic is suitable for a regulated distributor. Use it after inventory, procure to pay, and Advanced GL Mapping.

The business brief ​

MedSure has a Dubai legal company, a Riyadh branch, a bonded import warehouse, and a local distribution warehouse. The Dubai company owns inventory until a documented inter-company transfer reaches Saudi. The quality manager can block a batch; the warehouse supervisor can receive but cannot release a blocked batch; sales can promise only available, unexpired stock. Finance closes the books monthly and reconciles landed cost, tax, and supplier statements.

Operating factDemo valueWhy it matters in OSERP
Base currencyAEDLocal ledger and statutory reporting
Selling currenciesAED, SARRevaluation and settlement differences
Main warehouseDXB-COLDQuantity, bin, temperature, quarantine status
Saudi warehouseRUH-COLDBranch ownership and transfer evidence
Controlled itemInsulin Pen 100uBatch, expiry, serial/lot traceability
FEFO ruleEarliest expiry firstPrevents avoidable expiry loss
Credit termHospital net 45Receivables ageing and credit hold
Quality releaseQA approval requiredStops unsafe stock from sale

1. Configure the item and its accounting context ​

Open Inventory → Item Master → New. The item header identifies the commercial item; the control tabs determine whether OSERP can protect it.

Tab / fieldExample entryOperational impact
Item codeMED-INS-100Immutable key used by sales, purchase, API, and reports
DescriptionInsulin Pen 100 units, 5-packAppears on documents and customer printouts
Inventory UoMPackStock valuation quantity
Purchase UoMCarton (20 packs)Conversion 1 carton = 20 packs
Batch managedYesReceipt requires a batch number
Expiry managedYesIssue and allocation validate expiry
Serial managedOptionalUse when each pen has an individual serial
FEFOYesAllocation proposes the earliest valid expiry
Shelf-life days730Calculates warning and release dates
Temperature class2–8°CWarehouse and delivery checks use this value
Quality status at receiptQuarantineNo sale until QA changes status to Released
Tax categoryStandard medical supplyDetermines tax code by country and customer
Inventory account131100 Medicines inventoryDebit on receipt, credit on issue
COGS account510200 Medicines costDebit when a delivery is posted
Expiry loss account531400 Expired stock write-offSeparates preventable loss from normal COGS

The purchasing tab should contain preferred supplier, minimum order quantity, lead time, pack conversion, and price list. The sales tab should contain customer price lists, minimum remaining shelf life, and whether substitution is permitted. A hospital order may require 180 days remaining; a wholesaler may accept 90 days. Store that policy on the item/customer agreement instead of relying on a note in an email.

2. Receive an imported purchase ​

On 1 September, MedSure orders 500 cartons from NovaBio GmbH at USD 42 per carton. Freight is USD 1,200, insurance USD 180, duty is AED 7,900, and the supplier invoice is payable in 30 days. The purchase order header includes supplier, company, warehouse, currency, exchange rate, buyer, incoterm, expected arrival, and approval status. The detail includes item, ordered quantity, UoM, price, tax code, promised date, batch expectation, and dimensions such as department and import shipment.

When the container arrives, create a Goods Receipt PO against the purchase order. Do not type 500 cartons again: copy the approved quantity and then record actuals. For each batch line enter batch number, manufacture date, expiry date, received packs, country of origin, temperature reading, and quarantine reason. Example: batch NB240901A, expiry 2027-08-31, 10,000 packs, arrival temperature 5.4°C, status Quarantine.

The receipt posts inventory at the configured provisional cost. A typical entry is Dr inventory-in-transit or medicines inventory and Cr goods-received-not-invoiced. Landed-cost allocation later adds freight, insurance, and duty by quantity or value. If 20 cartons are damaged, receive 480 cartons, record a supplier claim for 20, and attach photographs; never hide the shortage by editing the purchase order.

3. Quality release and FEFO availability ​

The quality manager opens Inventory → Quality Queue, filters warehouse DXB-COLD, and sees the quarantined batch. Required fields include test result, certificate reference, temperature excursion flag, release decision, reviewer, timestamp, and comments. A release changes the batch status to Released; a failed result changes it to Rejected; an investigation uses Hold with an expiry for the next review.

After release, the availability view separates on-hand, allocated, available-to-promise, quarantine, and expired quantities. A 10,000-pack receipt is not 10,000 sellable packs if 2,000 are allocated or 500 are on hold. The sales promise screen must show the reason for every unavailable quantity.

4. Sell to a hospital with a shelf-life promise ​

Al Noor Hospital requests 120 packs in SAR, delivery to Riyadh, net 45, and a minimum remaining shelf life of 180 days. The sales order header records customer, ship-to, bill-to, currency, rate, price list, payment term, delivery route, requested date, salesperson, credit status, and approval. The line records item, ordered quantity, UoM, warehouse, batch policy, tax code, unit price, discount, promised date, and project or contract reference.

OSERP runs four checks before confirmation: customer credit exposure, customer-specific price, available released stock, and FEFO eligibility. Suppose batch NB240901A is valid but a newer batch is also available. FEFO proposes the earliest expiry that still satisfies 180 days. The user may not manually choose a blocked or insufficient-shelf-life batch without an authorised override. The order reserves 120 packs and reduces available-to-promise while leaving on-hand unchanged.

5. Pick, pack, and temperature-proof delivery ​

The warehouse creates a delivery from the released sales order. The pick list shows bin, batch, expiry, quantity, and handling instruction. A picker scans the bin and batch; a mismatch stops the scan. The packing screen records carton count, seal number, logger ID, and dispatch temperature. The delivery header carries route, carrier, driver, vehicle, dispatch time, and proof-of-delivery requirement.

At posting, OSERP relieves inventory and debits medicines COGS using the configured valuation method. It credits inventory for the actual batch cost. The invoice posts receivable, revenue, tax, and any freight charge. If the customer rejects one carton because the logger shows 9.8°C for 40 minutes, create a return or quarantine movement linked to the delivery; do not delete the original posting.

6. Saudi transfer and multi-currency settlement ​

The Riyadh branch requests 1,000 packs. Create an inter-company transfer from DXB-COLD to RUH-COLD with source company, target company, transfer price, currency, tax/export treatment, batch list, dispatch date, and expected receipt. The UAE dispatch and Saudi receipt remain linked. A transit status explains why UAE on-hand decreased while Saudi on-hand has not yet increased.

At an agreed transfer price of AED 18 per pack, the Saudi books record inventory and a due-to-UAE liability; UAE records due-from-Saudi and transfer revenue if policy requires it. Consolidation later eliminates the internal revenue and unrealised margin in stock. When Saudi pays USD 25,000 against an AED-denominated balance, OSERP uses the settlement-date rate and posts the realised FX difference to the mapped gain/loss account. Monthly revaluation handles the remaining open balance.

7. Recall scenario: stop the right units ​

NovaBio informs MedSure that batch NB240901A must be recalled. Quality creates a recall event with reason, affected batch, severity, effective time, regulator reference, and owner. OSERP searches every receipt, transfer, reservation, delivery, invoice, customer, and serial associated with the batch. The system places remaining stock on Recall Hold, cancels unfulfilled allocations, and produces a customer notification list.

The recall dashboard should show 10,000 received, 1,000 transferred, 120 delivered to Al Noor, 8,500 remaining, and 380 already returned or adjusted. Each figure must drill to a source document. A recall adjustment requires dual approval and a reason code. Finance can estimate exposure using quantity × landed cost; operations can prove that the search completed without relying on spreadsheets.

8. Month-end evidence and improvement numbers ​

At close, the controller reconciles inventory subledger to the GL by company, warehouse, item group, batch status, and currency. The close checklist includes GRNI ageing, landed-cost variance, expired stock, quarantine ageing, open transfers, customer returns, supplier claims, tax exceptions, and FX revaluation. A batch cannot be closed while a high-severity recall or unposted temperature exception remains unresolved.

MeasureBefore disciplined OSERP flowAfter 90 daysImprovement
Recall trace time2 business days18 minutes98% faster
Expired-stock write-offAED 185,000 / quarterAED 62,00066% lower
Receiving-to-release time30 hours7 hours77% faster
Invoice disputes8.4% of deliveries2.1%75% lower
Inventory/GL reconciliation3 days4 hours83% faster
Temperature exceptions without owner14 / month0Fully assigned

These are demonstration targets, not a promise. Measure the same definitions before and after adoption. The key improvement is controlled evidence: OSERP connects master data, physical movement, quality status, commercial documents, accounting, and audit history.

Practice challenge ​

Create a second batch with a 120-day shelf life, place 300 packs on quality hold, and enter a hospital order requiring 180 days. Explain why the order must not allocate the held batch. Then post a partial receipt, allocate landed cost, transfer 100 packs to Saudi, return 10 damaged packs, and run the recall search. Your answer should identify every document, status transition, journal impact, approval, and report drill-down. If you cannot trace one unit from supplier invoice to customer or recall, the configuration is not ready for production.

Related: Warehouse replenishment, Multi-currency settlement, Demo inter-company cycle, and the API library.

OSERP™ Atlas · Understand every field. Master every workflow.