BSS/OSS Academy
πŸ›οΈ
Section 10.4

Event-Driven Architecture in Telco

Event-driven patterns, saga orchestration, and CQRS in BSS/OSS context.

In a modular BSS/OSS, components must communicate. While synchronous APIs (REST) are essential for queries and commands, event-driven architecture is what makes a distributed BSS/OSS truly resilient, scalable, and loosely coupled. Telco operations are inherently asynchronous β€” an order triggers a cascade of fulfilment steps that may take minutes, hours, or days.

Event Producers
Product Catalog

TMF620

COM

TMF622

SOM

TMF641

ROM

TMF652

OfferingChanged
OrderCompleted
ServiceActivated
ResourceAllocated
Event BusKafka / TMF688
bss.catalog.eventsbss.ordering.eventsoss.service.eventsoss.resource.events
Event Consumers (Subscribe Independently)
Billing

Charges on order

Product Inventory

Updates subs

SLM

Tracks CFS/RFS

Notifications

SMS / Email / Push

Analytics

BI / Reporting

Saga Pattern β€” Distributed Transaction Coordination
ChoreographyEvent-driven chain (simple flows)
OrderCreated→ServiceActivated→BillingStarted
OrchestrationSOM coordinates (complex fulfilment)
SOM→Allocate→Activate→Inventory→Notify COM
Figure 10.4 β€” Event-driven BSS/OSS architecture showing event flow between components

Why Event-Driven Matters

Synchronous vs Event-Driven

ScenarioSynchronous (REST)Event-Driven
Service activationSOM calls ROM synchronously and blocks. If ROM is slow or down, SOM is stuck.SOM emits ServiceOrderCreated. ROM picks it up when ready. No blocking.
Billing notificationBilling must call CRM, self-service, and notifications sequentially.Billing emits BillGeneratedEvent. Each consumer subscribes independently.
Fault propagationIf billing is down, anything calling billing fails. Cascading failures.Events are queued. When billing recovers, it processes the backlog.
Adding consumersEach new system needs a new API call added to the producer.New consumers subscribe to existing events. No changes to the publisher.
The Key Insight
Event-driven architecture changes "who knows about whom." The order service just publishes events β€” it does not know or care who listens. This inversion of dependencies is what makes the system truly modular.

TMF Event Management

TMF Hub/Listener Pattern
Every TMF Open API that supports events defines: (1) a Hub where consumers register interest in event types, and (2) a Listener callback endpoint that receives notifications. This is essentially a standardised webhook pattern. For high-volume event streams, production deployments typically use Kafka or RabbitMQ underneath, exposing Hub/Listener as a compatibility layer on top.

Standard TMF event types include: CreateEvent (entity created), StateChangeEvent (lifecycle transition), AttributeValueChangeEvent (significant attribute changed), and DeleteEvent (entity retired).

The Saga Pattern

In a monolithic BSS, a single database transaction spans ordering, billing, and inventory. In a modular architecture, this is impossible. The Saga pattern manages distributed transactions by breaking them into a sequence of local transactions, each publishing events that trigger the next step. If any step fails, compensating transactions undo preceding changes.

Choreography vs Orchestration Sagas

AspectChoreographyOrchestration
CoordinationDecentralised β€” each service reacts to eventsCentralised β€” orchestrator directs each step
VisibilityHard to see the full flow β€” events scattered across servicesEasy β€” orchestrator represents the complete workflow
Error handlingComplex β€” compensating events propagate back through the chainSimpler β€” orchestrator manages compensation centrally
Telco fitSimple flows (notification chains, billing triggers)Complex fulfilment (order activation, service modification)
Recommendation
Most telco deployments use orchestration sagas for order fulfilment (SOM as orchestrator) and choreography sagas for cross-domain notifications (billing, CRM updates). This hybrid gives clear control over the critical path while keeping peripheral integrations loosely coupled.

Essential Implementation Patterns

Patterns Every Telco Needs

PatternWhat It SolvesHow It Works
Transactional OutboxPrevents DB updated but event lost (or vice versa)Write events to an outbox table in the same DB transaction. A relay process publishes to the broker.
Idempotent ConsumersHandles duplicate event delivery safelyUse event IDs to detect duplicates. Make state transitions idempotent (setting "completed" when already "completed" is a no-op).
Dead Letter QueuePrevents unprocessable events from blocking the pipelineAfter N retries with backoff, move to DLQ. Alert ops. Replay after root cause fix.
Correlation IDTraces a business operation across all events and servicesGenerate unique ID at entry (COM). Propagate in every event header. All logs include it.
Compensating Transactions Are Not Perfect Undo
Compensation creates a new action that logically reverses the effect. A cancelled order is not the same as one that never existed. If a customer was charged before the failure, the compensation is a credit, not a deletion. When a compensating transaction itself fails after retries, it must escalate to a human operator β€” infinite retry is not a strategy.

Section 10.4 Key Takeaways

  • Event-driven architecture makes BSS/OSS truly modular β€” publishers do not know about consumers
  • TMF Hub/Listener is the standardised pattern; production systems use Kafka or RabbitMQ underneath
  • Saga pattern manages distributed transactions: choreography for simple chains, orchestration for complex fulfilment
  • Use at-least-once delivery with idempotent consumers β€” the practical standard for telco BSS/OSS
  • Transactional outbox prevents data/event inconsistency; dead letter queues prevent event loss
  • Correlation ID propagation across all events is mandatory for operational traceability