// Project Overview

EMS Enterprise Suite

Client Sampoerna
Date April 2021

Full-scale ERP-lite system managing business logic, procurement, and project tracking for enterprise-level operations.


1. Project Identity

Excise Management System (EMS) is a mission-critical middleware solution designed to bridge the gap between global ERP systems (SAP) and local regulatory compliance for the tobacco industry. Its primary role is to digitize and automate the high-stakes lifecycle of excise tax documents—including CK5, PBCK, and LACK—ensuring that multi-billion dollar tax obligations are accurately calculated, approved, and reported to the Indonesian Directorate General of Customs and Excise (DJBC).

2. Architectural Challenges

3. Decision Logic (Trade-off Analysis)

Layered Monolith vs. Microservices

Decision: Layered Monolith (BLL, DAL, Website, Scheduler). Rationale: Given the tight coupling of regulatory entities (a change in CK5 often affects PBCK calculations), a modular monolith was chosen to minimize distributed transaction complexity. It allowed for rapid development and easier deployment within the client’s internal infrastructure at the time.

Quartz.NET Background Processing

Decision: Decoupling integration logic into a Windows Service. Rationale: Processing large XML batches from SAP is resource-intensive. By moving this to Sampoerna.EMS.Scheduler, we ensured the Sampoerna.EMS.Website remained responsive for end-users, achieving a clear separation of concerns between OLTP and ETL tasks.

Dependency Injection (SimpleInjector)

Decision: Implementing DI across all layers. Rationale: To manage the complexity of over 100+ BLL modules, DI was implemented to promote loose coupling and testability. SimpleInjector was selected for its performance and strict validation rules, which catch configuration errors at startup.


4. Business Impact