Appearance
Demo GulfWater Services: utilities and field service
Demo GulfWater Services operates desalination plants, district pumping stations, and a mobile maintenance fleet. It bills 42,000 commercial and residential connections in AED, buys treatment chemicals in USD, and maintains assets across Dubai, Abu Dhabi, and Al Ain. The company needs one traceable chain from a meter reading or service request to revenue, technician time, spare parts, tax, cash, and asset history.
This is a learning simulation. The names and amounts are fictional, while the operating questions are the ones an OSERP implementation team should resolve before go-live.
Choose the operating model
Create three branches under the UAE company: DXB-UTIL, AUH-UTIL, and AIN-UTIL. Each branch has a service territory, dispatch calendar, warehouse, cost centre, tax location, and responsible manager. A plant is an operational site; a branch is an accounting and responsibility boundary. Do not create a new company for every pumping station unless it is a legal entity.
| Master / field | Demo entry | Impact |
|---|---|---|
| Customer class | Residential, commercial, government | Rate plan, credit policy, reporting |
| Service contract | GulfWater Standard 2026 | Start/end date and SLA entitlement |
| Connection ID | DXB-004281 | Stable identifier for billing and service history |
| Meter serial | MTR-882104 | Physical device traceability |
| Rate plan | Tiered water + sewer | Billing calculation and revenue accounts |
| Reading frequency | Monthly | Generates the next reading task |
| SLA priority | P1 leak / P2 pressure / P3 routine | Dispatch and escalation clock |
| Asset class | Pump, meter, vehicle, plant | Depreciation and maintenance policy |
| Van warehouse | VAN-TECH-07 | Technician stock ownership and replenishment |
| Tax treatment | Standard UAE utility service | Tax code on invoices and credit notes |
1. Customer and contract setup
Open Business Partners → Customer → New. The header records legal name, trade licence or national ID, billing address, service address, contact, collection method, currency, tax number, account owner, and risk class. A connection detail records meter serial, premise, service start, tariff zone, estimated monthly volume, and whether the customer is eligible for a subsidy.
The service contract adds effective dates, rate plan, minimum charge, deposit, meter-reading calendar, SLA, escalation contacts, and termination rules. The contract should also identify the revenue dimensions: branch, territory, service type, and customer segment. If a government contract is exempt or uses a special rate, store the approval reference and expiry date. Never encode an exception only in a salesperson's description.
For a commercial customer, enter credit limit AED 250,000, payment term net 30, and a deposit of AED 20,000. OSERP should calculate exposure from posted invoices, unallocated receipts, open orders, and overdue balances. A new service order must stop or require approval when the customer crosses the configured threshold.
2. Capture a monthly meter cycle
The billing team opens Utilities → Meter Reading Run and selects branch, route, reading period, and reading source. A reading line includes connection ID, meter serial, previous reading, current reading, reading date, reader, reading method, exception code, and photo or device evidence.
For connection DXB-004281, the previous reading is 18,420 cubic metres and the current reading is 18,980. Consumption is 560 cubic metres. OSERP validates that the serial is active, the reading is not earlier than the previous reading, and consumption is within the configured tolerance. A negative reading creates a rollover or faulty-meter exception, not a negative invoice. An unusually high reading creates a review queue and may use an approved estimated reading while the field team investigates.
The run should show read, estimated, rejected, reviewed, and billed counts. The supervisor signs off exceptions before billing is released. The audit trail records who changed a reading, old value, new value, reason, and evidence reference.
3. Calculate a tiered bill
Assume the rate plan charges AED 2.10 for the first 100 cubic metres, AED 2.60 for the next 400, and AED 3.40 above 500, plus a fixed sewer charge of AED 180. For 560 cubic metres, OSERP calculates:
| Component | Quantity / rule | Amount AED |
|---|---|---|
| Tier 1 | 100 × 2.10 | 210.00 |
| Tier 2 | 400 × 2.60 | 1,040.00 |
| Tier 3 | 60 × 3.40 | 204.00 |
| Sewer charge | Fixed | 180.00 |
| Subtotal | 1,634.00 | |
| VAT | Configured tax calculation | 81.70 |
| Invoice total | 1,715.70 |
The invoice header stores customer, contract, billing period, currency, tax date, branch, due date, and source meter run. Detail rows show each tariff tier, quantity, rate, discount or subsidy, tax code, revenue account, and dimensions. Posting debits accounts receivable and credits water revenue, sewer revenue, and output tax. If the invoice is regenerated, OSERP must be idempotent: one source period and connection should not create duplicate revenue.
4. Handle a leak service request
At 09:15, a customer reports a street leak. Create Service → Ticket with connection, location, caller, category, severity, safety risk, SLA, preferred visit window, and description. The ticket automatically creates a work order because category LEAK-EXT maps to an inspection and repair template.
The work-order header includes asset or connection, branch, priority, planner, planned start, SLA deadline, crew, and status. Operations detail includes task steps, required skills, estimated hours, spare parts, safety checklist, and customer signature requirement. The dispatcher assigns technician Aisha Khan and van VAN-TECH-07; the schedule reserves two hours and a 50-metre pipe kit.
5. Issue van stock and record technician work
The van warehouse holds 12 pipe kits at AED 145 each. Create a stock issue linked to the work order for one kit and two valve assemblies at AED 38 each. The issue reduces van stock and debits maintenance consumption or work-in-progress, depending on the configured costing policy. A technician may return unused parts with a return movement; damaged parts require a reason code and approval.
On completion, the technician records arrival, departure, labour hours, parts used, old meter condition, new meter serial if replaced, photographs, safety result, and customer sign-off. The work order changes from dispatched to in progress to completed to financially closed. A completion cannot be accepted when a required safety step or signature is missing.
If the repair is covered by contract, no customer charge is generated. If it is billable, OSERP creates a service invoice using labour rate, parts, travel, and tax. The source work order remains drillable from the invoice. This prevents the common failure where finance receives a value but cannot explain the operational event.
6. Planned maintenance and procurement
The plant manager schedules monthly preventive maintenance for Pump P-DXB-14. The maintenance template includes inspection checklist, meter readings, lubrication, vibration threshold, expected labour, and parts. When the next date arrives, OSERP creates a work order and reserves a bearing kit.
If stock falls below the reorder point of 4 kits, the replenishment run proposes a purchase request. The request header includes branch, requesting department, required date, budget, supplier, and approval route. Detail includes item, quantity, UoM, specification, estimated cost, and asset or work-order reference. After approval, convert it to a purchase order, receipt, quality check, and supplier invoice. Landed costs for imported chemicals are allocated separately from domestic maintenance parts.
7. Collections, credits, and disputes
The receivables dashboard segments invoices by branch, customer class, due bucket, contract, and dispute status. A customer disputes AED 120 because the meter was replaced mid-period. Create a dispute case linked to the invoice and meter-change work order. Approvers may issue a credit note for the validated difference; they must not edit the posted invoice. The credit note reverses the relevant revenue and tax dimensions and remains visible in the audit trail.
When a bank receipt of AED 1,715.70 arrives, import it with bank reference, value date, currency, amount, and customer match. Allocate it to the invoice, post bank and receivable, and retain any short payment as an unapplied or disputed amount. The reconciliation report should show total billed, cash collected, unapplied receipts, credits, and overdue balance by branch.
8. Month-end close and regulated evidence
The controller closes the period only after meter runs are signed off, all completed work orders are financially posted, van stock is counted, open purchase receipts are accrued, contracts are checked for expiry, and tax reports reconcile to the ledger. Asset maintenance history is exported for regulator or insurer requests. Period locks stop backdated readings and postings after approval.
| KPI | Baseline | After OSERP discipline | Improvement |
|---|---|---|---|
| Bills issued on first cycle | 91.2% | 99.4% | +8.2 points |
| Leak response within SLA | 72% | 94% | +22 points |
| Unexplained meter exceptions | 1,180 / month | 210 | 82% lower |
| Van stock-outs | 38 / quarter | 7 | 82% lower |
| Invoice dispute rate | 6.8% | 2.4% | 65% lower |
| Work orders without signed evidence | 14% | 1.2% | 91% lower |
Use these as controlled measurement definitions, not marketing promises. Record the baseline query, period, branch scope, and exclusions so the improvement can be reproduced.
Practice challenge
Create a customer contract, import a meter reading run with one rollover exception, bill a valid reading, open a P1 leak ticket, issue a van kit, complete the work order, create a billable repair invoice, receive payment, and close the month. Explain every status, field owner, permission, journal impact, tax result, and drill-down. Then cancel one reading run and prove that no duplicate invoice or revenue posting remains.
Related: Service and projects workflow, Inventory, Procure to pay, Month-end close, and the API library.