- Problem
- Sinar Utama had no customer identity at all — every order was a one-off name/phone/address snapshot, no pipeline, no case tracking, nothing beyond a summary dashboard.
- Built
- Mapped Salesforce’s object model field-by-field onto the real backend schema first, then built it natively: Contact/Lead/Opportunity/Case/Activity as NestJS modules inside the existing API, stage-synced to real order status, plus a client-facing sandbox to review the pipeline live.
- Outcome
- Live pipeline synced to production order data, zero new runtime added — skipped standing up SuiteCRM’s own PHP stack entirely.