Guichet Unique: a single window that routes partner requests through the national utility's back-end systems.

- Client
- SENELEC, national electricity utility
- Key result
- 60% faster request processing
Context
Partner requests went through several desks and disconnected systems, with documents exchanged by hand and no shared view of where a file stood.
What I built
Three applications: a partner portal open to the internet, an internal back office and a Spring Boot API. The platform is segmented by exposure: only the portal sits in the DMZ, behind the F5 and an Nginx reverse proxy, while the back office, the API and Keycloak stay in a private zone, with PostgreSQL on a dedicated server. Around the workflow: SMS notifications over a SOAP gateway, documents exported to the GED, separate Keycloak realms for partners and agents, and versioned migrations with Liquibase. I also deployed it myself, with GitLab CI pipelines for each application.
Result
Request processing is 60% faster, with every file traceable from submission to closure.
Architecture
Segmented by exposure
Only the partner portal is reachable from the internet, behind the F5 and Nginx. The back office, the API and the identity server stay in a private zone, and the database on its own server.
Two identity realms, plus ownership
Partners and SENELEC agents sign in to separate Keycloak realms, and an ownership guard makes sure a partner never reaches someone else's request by changing an ID.
Every change leaves a trace
Each status change updates the request history, and a global interceptor audits every write request.
SMS through the operator's SOAP gateway
Partners are notified by SMS over the imposed SOAP service, with messages converted to the GSM-7 alphabet so they fit 160 characters instead of 70.
Documents exported to the GED in the background
Scheduled jobs push documents to the document management system, outside the user's request.
Delivered by pipeline
GitLab CI builds each of the three applications and deploys them, so a release is repeatable instead of a manual copy.
Stack
- Spring Boot
- Java
- Angular
- Keycloak
- SOAP
- Liquibase
- PostgreSQL
- Nginx
- F5
- GitLab CI
