Langkau ke kandungan

Case study · Perbadanan Putrajaya

A facility complaint tracked from lodgement to contractor payment.

Complaint to payment

— RM 380,000, 2022 to 2024

01 · Client and system

Client
Perbadanan Putrajaya
System
FOAMMS 3.0
Period
2022 – 2024
Current status
Delivered and handed over to the agency’s team.

02 · The problem

The complaint, the work order, and the payment were three separate records.

A facility complaint in Putrajaya ends in money leaving the Corporation — a contractor is paid for work that was ordered because someone complained. When the complaint, the work order, and the payment certification live in separate records, nobody can prove the chain from one to the other. The system had to hold all four stages against a single record, so a payment can always be traced back to the complaint that caused it.

03 · What we built

Five things we are accountable for.

  1. 01 Complaint lodgement and triage, with the complaint as the single record for everything that follows.
  2. 02 Work order issue and contractor assignment against that complaint.
  3. 03 Payment certification against completed work, traceable to the original lodgement.
  4. 04 Mobile notification for assignment and status change, carrying no state of its own.
  5. 05 Handover to the agency’s own team, with Bahasa Malaysia documentation.

04 · Scale

The numbers this engagement is measured on.

RM 380k
Contract value

Approximate, rounded

4 stages
One record

Lodgement, order, certification, payment

2 years
Delivery period

2022 to 2024

1
External interface

Firebase Cloud Messaging

Complaints per month — to supply
Volume
Contractors on the system — to supply
Coverage

Two figures are held back until the agency confirms what may be published. An evaluator reads a blank field as honest; a made-up one costs the whole submission.

Architecture explorer

Six layers, in the order a complaint travels from lodgement to payment.

Scroll to move through the stack. Every layer and its detail is on the page whether the highlight runs or not.

Stack

  1. 01 Lodgement
  2. 02 Gateway
  3. 03 Triage and assignment
  4. 04 Work order queue
  5. 05 Database
  6. 06 Payment certification
  1. 01

    Lodgement

    The complaint arriving — the record everything downstream is attached to.

    Nothing that follows creates its own record. A work order and a payment are states of this complaint, not separate documents.

    • Web client
    • Mobile client
  2. 02

    Gateway

    Authentication and validation before a complaint or an action is accepted.

    Certification and payment actions are restricted to the officers who hold that authority, enforced before the application sees the request.

    • Authentication
    • Role scope
  3. 03

    Triage and assignment

    Classification of the complaint and assignment to a contractor.

    A complaint cannot move to a work order without an assigned contractor and a named officer who assigned them.

    • Laravel
    • Assignment rules
  4. 04

    Work order queue

    Issued work waiting on a contractor, and completed work waiting on certification.

    Work sits in a queue with an owner at every stage. Nothing is in an unowned state between lodgement and payment.

    • Work order queue
    • Named owner
  5. 05

    Database

    The complaint and its full chain — order, completion, certification, payment.

    The chain is the record. A payment cannot be certified against work that has no order, and no order exists without a complaint.

    • Relational store
    • MySQL
  6. 06

    Payment certification

    Certification of completed work, which is what releases payment to the contractor.

    Certification is recorded against the complaint, so every ringgit paid traces back to the lodgement that caused it.

    • Certification
    • Audit trail

Interfaces

One interface, and the queue stays the record of truth.

Firebase Cloud Messaging FCM HTTP v1 Outbound

Payload — Complaint assignment, work order status change.

On failure — The complaint queue remains the record of truth. A missed push changes no state and the queue is re-read on open.

05 · Result

Three measured outcomes.

Outcome 1 — to supply

Median time from lodgement to work order issue, before and after the system.

Outcome 2 — to supply

Median time from work completion to payment certification.

Outcome 3 — to supply

Proportion of complaints closed within the target window.

This block is deliberately empty. It is the block an evaluation committee reads hardest, and it must carry numbers you can stand behind in a clarification meeting.

06 · Stack and standards

  • Laravel
  • Flutter
  • MySQL
  • RESTful API
  • Firebase Cloud Messaging
  • Complaint to payment

Standards and compliance schedules applicable to this engagement are to be listed here — confirm which may be named publicly before this page is published.