Case study · Lembaga Pembangunan Industri Pembinaan
Eighteen human resource modules, on one employee record.
Eighteen modules
— RM 2.3 million, 2023 to 2026
01 · Client and system
- Lembaga Pembangunan Industri Pembinaan
- Portal Pengurusan Sumber Manusia
- 2023 – 2026
- In production. Delivered beside other vendors’ teams.
02 · The problem
Eighteen modules, one employee, and a master record we do not own.
The Construction Industry Development Board runs its employee master data in SAP HANA, a system it owns and we do not. Eighteen human resource functions — appointment, leave, claims, performance — each needed the same employee, cost centre, and organisation structure, and none of them could be allowed to hold a second copy of the truth. The portal therefore had to read from SAP HANA continuously, stay usable when that read failed, and do it while other vendors’ teams were changing the same project around us.
03 · What we built
Five things we are accountable for.
- 01 Requirements analysis with the agency’s own HR officers, documented so a developer could build from it.
- 02 Eighteen modules built, tested, and accepted — module by module, not in one release.
- 03 Read integration against the agency’s SAP HANA instance for employee master, cost centre, and organisation structure.
- 04 Mobile approval path for leave and claims, with the decision recorded in the portal rather than in the notification.
- 05 User acceptance testing run with the client, and Bahasa Malaysia documentation for each module.
04 · Scale
The numbers this engagement is measured on.
- RM 2.3m
- Contract value
- 18
- Modules
- 3 years
- Delivery period
- 2
- External interfaces
- Employees on the system — to supply
- Population
- Concurrent users — to supply
- Load
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 leave application passes through them.
Scroll to move through the stack. Every layer and its detail is on the page whether the highlight runs or not.
-
01
Client
The officer or staff member raising a leave application, a claim, or an approval.
Session is bound to the individual, so an approval is always recorded against a named person and never against a role.
-
02
Gateway
Authentication and request validation before anything downstream is touched.
A request for a record outside the user’s own cost centre is refused here, not filtered later in the application.
-
03
Application
The eighteen modules, each holding its own rules but sharing one employee record.
A module can be changed or accepted without the other seventeen being redeployed — which is what let the agency accept them one at a time.
-
04
Master data sync
The delta job that reads employee master, cost centre, and organisation structure from SAP HANA.
The portal never writes to SAP HANA. It is a reader, so a fault here can delay a record but can never corrupt the agency’s system of truth.
-
05
Database
The portal’s own record of every application, approval, and claim.
HR transactions live here; identity lives in SAP HANA. Neither store is asked to be the other, which is why the sync can fail safely.
-
06
Notification
Push notification to the approver when something is waiting on them.
Approval state lives in the portal. The notification carries no decision, so a lost message cannot approve or reject anything.
Interfaces
Two interfaces, one of them to a system the agency owns.
Employee master, cost centre, organisation structure.
The last successful snapshot is served with its timestamp visible to the user. The delta job re-runs on the next cycle without operator action.
Leave and claim approval request.
Approval state lives in the portal. The notification carries no decision, so a lost message cannot approve or reject anything.
05 · Result
Three measured outcomes.
Modules accepted on first submission, as a proportion of the eighteen.
Median time from application to approval, before and after the portal.
Master data sync success rate, and the longest stale window in the period.
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
- ReactJS
- MySQL
- SAP HANA
- RESTful API
- SQL view
- Firebase Cloud Messaging
- 18 modules
Standards and compliance schedules applicable to this engagement are to be listed here — confirm which may be named publicly before this page is published.