The context
Order-to-cash (O2C) is the journey from a customer's order to cash collected. In FMCG distribution it runs through the distributor: salesmen visit outlets and take orders, the distributor delivers and invoices, handles returns and collects payment. Every price, discount and tax rule has to be right on every invoice, at scale.
A global FMCG multinational was rolling out a new Distributor Management System (DMS) in Cambodia and Laos. As functional delivery lead, I owned the O2C requirements. The job was to give both markets one standard flow while meeting each country's tax, invoicing and reporting rules.
The problem
Two markets, one system and a lot of local detail. The main risks we had to solve:
- Each market priced, invoiced and handled returns its own way, so one design could easily break local practice or local law.
- Tax, invoice and credit-note numbering and legal reporting differed by country.
- Orders, prices and promotions had to match between the salesman's app, the DMS and SAP (U2K2).
- Master data (distributors, outlets, products, geographies, salesmen) had to be clean and owned, or every later step would fail.
- Returns had to reverse the right amounts, including any promotion already given.
My role
- Led market-alignment workshops with business, product, technical and market stakeholders in both countries.
- Owned O2C requirements: order capture, pricing, invoicing, returns, targets and legal reporting.
- Produced gap analysis, user stories, acceptance criteria, process flows, functional specifications and field mappings.
- Coordinated UAT, change requests with impact assessment, go-live and hypercare.
The order-to-cash flow
Each column is a team or system. Green badges mark the points the design had to get right.
Scroll sideways to see the whole diagram →
- 1One set of pricing rules, so the app, the DMS and the invoice always agree.
- 2Each country's tax, invoice numbering and legal reports are built in.
- 3Returns reverse the right amount, including promotions already given.
The approach
- 1Map each market's order journeyWalked through order capture, pricing, delivery, invoicing, returns and collection with each market team.
- 2Agree a core flow firstSet one standard O2C flow and allowed market variants only where law or business need required them.
- 3Run a fit-gap per marketCompared each market with the core flow and recorded every gap with a decision: configure, build, change the process or defer to a later phase.
- 4Fix master data ownershipDefined who owns distributor, outlet, product, geography and salesman data, and how it stays in sync.
- 5Price once, apply everywhereSpecified pricing structure, tax and promotion logic so an order gets the same price in the app, in the DMS and on the invoice.
- 6Localise invoicing and reportingCovered tax, invoice and credit-note numbering and legal reports for each country.
- 7Close the loop on returnsDefined return reasons, credit notes and reversal of promotions already given.
- 8Test end to endRan UAT on full order-to-invoice-to-return scenarios with business users, then supported go-live and hypercare.
Sample work: fit-gap analysis extract
| Area | Core flow | Market variant | Decision |
|---|---|---|---|
| Invoice numbering | One sequence per distributor | Country-specific format and prefix | Configure numbering format per market |
| Tax on invoice | Tax calculated per invoice line | Different tax rules and rounding by country | Market-level tax settings |
| Legal reporting | Standard sales reports | Statutory report formats | Market-specific report templates |
| Pricing | Price list by channel | Price varies by outlet type | Price list by channel and outlet type |
| Returns | Return with reason code | Different approval limits | Configurable approval rules |
Illustrative extract. Real rows and decisions are client-confidential.
Results
- One core O2C flow delivered for both markets, with each country's tax, numbering and reporting built in.
- Orders from 800+ salesmen flow to 80+ distributors serving 50,000+ outlets.
- Real-time visibility of sales, promotions and inventory against agreed KPIs.
- Every gap traced from workshop to user story to UAT through the requirements traceability matrix.
What I learned
- Agree the core flow before discussing market differences, or every workshop turns into a list of exceptions.
- Master data ownership is a business decision, not an IT task.
- Returns are often where pricing and promotion errors show up. Test them as hard as the order itself.
Client and system details are anonymised. Diagrams are redrawn and all figures are approximate.
Next case study · CS-03Keeping warehouse stock and SAP in step