Skip to content
← Work

Enterprise internal platform

A SOAP-only corporate backbone, integrated without duplicating a system of record

A 15,000-agent network needed a training portal that sold, tracked and reconciled courses — against a corporate platform that exposed SOAP services only. We built the middleware that made both sides independently changeable.

Period
2018 · 7 months
What we delivered
SOAP-to-REST middleware, training catalogue and eligibility, commerce and enrolment workflows
Setting
Integration and middleware delivery

Client and project names are withheld under confidentiality. Sector, scale and outcomes are reported as delivered.

~15,000

Agents across ~3,000 offices

SOAP → REST

Reusable middleware integration layer

Zero

Duplicated systems of record

Automated

Threshold-based cancellation and mass refund

Context

A national real-estate brokerage network operating roughly 3,000 offices with around 15,000 agents. The organisation was building its entire operational backbone — agents, offices, property listings, accounting — as a bespoke dotnet platform, and needed an internal training portal as part of it: a single system where mandatory and optional in-service training could be published, sold, tracked and reconciled. The portal ran strictly on the internal network, accessible only over VPN.

Problem

The core integration constraint: the corporate platform exposed SOAP services only, with no REST API. Integrating directly from the web tier would have been brittle and slow to iterate on, and would have coupled the portal’s release cycle to the corporate platform’s schema.

The second problem was commercial. Training sessions had eligibility rules, capacity limits, per-session refund windows and minimum-viability thresholds — all of which were being handled manually, including refunds when a session failed to fill.

Approach

Middleware, so both sides can change

We designed and built a dedicated dotnet core middleware service decoupling the web portal from the corporate backbone — consuming the internal platform over SOAP and exposing a clean REST API to the portal. This isolated the web application from corporate schema changes and let both sides evolve independently.

All master data and financial operations — users, cities, offices, office and user groups, payments, refunds and cancellations — routed through the organisation’s own infrastructure via the middleware, keeping the training portal free of duplicated system-of-record data.

RabbitMQ processed purchase, cancellation and refund procedures asynchronously and triggered the notification pipeline, keeping long-running corporate calls off the request path.

Passwordless authentication: users signed in with their phone number and a one-time SMS code, removing password management entirely for a 15,000-user internal audience.

Eligibility as a first-class model

We built trainer and curriculum management — trainers, the courses they deliver, session dates and durations — then per-session configuration covering content, online/on-site delivery mode, capacity, price, and a multi-dimensional eligibility model: specific user groups, named individuals, geographic region or city, a specific office, seniority level, or open to all.

This produced per-user catalogue and price resolution: each agent saw only the sessions they were eligible for, at the price applicable to them. A session opened exclusively to one city was simply invisible to agents attached to offices elsewhere.

Commerce and enrolment workflows

  • Online payment-based enrolment, plus bulk purchase for office managers enrolling multiple agents in a single transaction.
  • Dynamic capacity management with automatic closure once a session sold out.
  • Per-session configurable refund windows, with cancellation deadlines set individually per training.
  • A minimum-viability rule engine: a session could require N enrolments by date D to run, and if the threshold was not met the system automatically refunded every purchaser.
  • Administrative seat reservation for external guests not registered in the corporate system.
  • Post-event attendance marking and attendee exports in JSON, XML and tabular formats for downstream reporting.
  • Scheduled reminders driven by each session’s date, over email and SMS.
  • The administrative interface as a Vue.js front end over the portal’s API — session and trainer management, eligibility configuration, attendance marking and exports.

Outcome

  • Delivered a fully automated training commerce and enrolment platform for a 15,000-agent, 3,000-office organisation, replacing manual registration, seat tracking, invoicing and refund handling.
  • Eliminated manual refund reconciliation for under-subscribed sessions through automated threshold-based cancellation and mass refund.
  • Achieved real-time synchronisation between the web portal and the corporate back office — users, offices, pricing, payments and refunds — with no duplicated system of record.
  • Left a reusable SOAP-to-REST integration layer insulating the web application from the corporate platform’s interface.