Anti-Patterns & Failure Scenarios
Common architectural mistakes in telco BSS/OSS implementations. Each scenario includes the symptoms you will see, the root cause, and the correct pattern to follow.
Showing 7 of 7 scenarios
Situation
Product and service definitions are hardcoded across multiple systems β CRM, billing, order management, and provisioning each maintain their own local definitions of what products and services exist. There is no single catalog that all systems reference.
Symptoms
- β’New product launches take 6β12 months because every system must be updated independently
- β’Price discrepancies between the webshop, retail POS, and billing system
- β’CRM shows products that billing cannot charge for
- β’Order management rejects valid configurations because its hardcoded rules are out of sync
- β’No ability to retire a product across all channels simultaneously
- β’MACD (Modify, Add, Change, Disconnect) operations fail because systems disagree on what the customer has
Architecture View
Anti-Pattern: No centralised catalog β each system hardcodes its own product definitions
Root Cause
The architecture was built system-by-system over time. Each system was procured independently and implemented its own understanding of the product portfolio. No catalog-driven design principle was established, so product knowledge became embedded in code, configuration files, and database tables scattered across the stack.
Why It Persists
Each system team considers their local definitions "correct" and resists centralisation because it means giving up control. Migration to a central catalog requires mapping every local definition to a canonical model β a massive data reconciliation effort. Additionally, vendor contracts may lock product logic inside proprietary systems, making extraction difficult.
Correct Pattern
Implement a centralised Product Catalog (TMF620) as the single source of truth for all product offerings, specifications, and rules. All downstream systems β CRM, COM, billing, SOM β consume catalog definitions via API rather than maintaining local copies. The catalog defines what can be sold, how it decomposes into services (CFS), and what pricing applies. Changes propagate automatically to all consumers.
Situation
The CRM system has been extended to serve as the source of record not just for customers and accounts, but also for orders, products, services, and even network resource assignments. Custom objects and fields in the CRM hold data that should live in dedicated BSS/OSS systems.
Symptoms
- β’CRM performance degrades as it stores millions of service and resource records it was never designed to handle
- β’Order status is tracked in CRM custom fields instead of a dedicated order management system
- β’Service activation teams query CRM for technical details like VLAN IDs and IP addresses
- β’No clean API boundary β integrations are built around CRM data exports and batch syncs
- β’CRM upgrades become impossible because custom objects break with every vendor patch
- β’Reporting requires complex joins across CRM custom objects that do not map to any standard model
Architecture View
Anti-Pattern: CRM overloaded as SoR for customers, orders, products, services, and resources
Root Cause
CRM was the first enterprise system deployed and became the default place to store "everything about the customer." As new needs arose (order tracking, service status, resource assignments), they were bolted onto CRM rather than procured as separate systems with clear SoR boundaries. The CRM vendor may have encouraged this by selling add-on modules.
Why It Persists
The CRM is deeply embedded in every process. Sales, support, and operations all use it daily. Extracting data domains into dedicated systems requires re-training, process redesign, and migration of years of accumulated data. The cost and risk of decomposition is perceived as higher than living with the status quo, even though the status quo is increasingly fragile.
Correct Pattern
Apply Source-of-Record discipline per TM Forum SID boundaries. CRM owns Customer, Account, and Contact (SID Party domain). Orders belong to COM (TMF622). Product instances belong to Product Inventory / SLM (TMF637). Service instances belong to Service Inventory (TMF638). Resource assignments belong to Resource Inventory (TMF639). CRM becomes a System of Engagement (SoE) that reads from these systems rather than storing their data.
Related Sections
Situation
Commercial Order Management (COM) sends resource-level instructions directly to Resource Order Management (ROM) or activation systems, completely bypassing Service Order Management (SOM). There is no service orchestration layer to decompose commercial orders into service orders.
Symptoms
- β’No service inventory β nobody knows what services a customer actually has active
- β’Cannot perform service-level impact analysis when a network element fails
- β’MACD operations require manual coordination because there is no service context
- β’Multi-resource services (e.g., SD-WAN with multiple sites) cannot be orchestrated as a unit
- β’Billing disputes are common because there is no service-level record linking orders to active services
- β’Rollback of a failed order requires manual reversal of each resource change individually
Architecture View
Anti-Pattern: COM sends directly to ROM β SOM is bypassed, no service orchestration layer
Root Cause
The architecture was designed with only two layers in mind: commercial (what the customer buys) and physical (what gets provisioned on the network). The concept of a logical service layer β where CFS decomposition, service lifecycle, and service inventory live β was either not understood or deemed unnecessary complexity.
Why It Persists
For simple, single-resource products (e.g., a basic broadband line), the shortcut works "well enough." The pain only becomes acute with multi-component services, bundles, or when service assurance needs arise. By that point, COMβROM integrations are deeply embedded and adding SOM in the middle requires re-architecting the entire order flow.
Correct Pattern
Implement SOM as the mandatory orchestration layer between COM and ROM. COM decomposes commercial orders into service orders based on CFS definitions from the service catalog. SOM then decomposes each service order into resource orders based on RFS mappings and sends them to ROM. SOM maintains the Service Inventory (TMF638) and provides service-level lifecycle management.
Related Sections
Situation
The NFV MANO platform (NFVO/VNFM) is being used not just for VNF lifecycle management but as the primary service orchestration engine. Business logic, service decomposition, and multi-domain coordination are implemented inside MANO workflows instead of SOM.
Symptoms
- β’MANO workflows contain business rules about product bundles and customer tiers
- β’Service changes that do not involve VNFs still route through MANO
- β’MANO becomes a bottleneck because it handles both infrastructure and service-level concerns
- β’Physical network functions (PNFs) cannot be orchestrated because MANO only understands VNFs
- β’Day-2 service operations (e.g., bandwidth upgrades) require MANO workflow changes instead of service catalog updates
- β’MANO vendor lock-in increases because service logic is embedded in their proprietary workflow engine
Architecture View
Anti-Pattern: MANO (NFVO) used as service orchestrator β business logic embedded in VNF lifecycle platform
Root Cause
When NFV was introduced, MANO was the most capable orchestration platform available. Rather than investing in a separate SOM layer, the team extended MANO upward to handle service-level concerns. The ETSI NFV MANO framework defines clear scope boundaries (VNF lifecycle, NS lifecycle), but these were ignored in favour of expediency.
Why It Persists
The MANO platform works for VNF-centric services, and the team has built significant expertise in its workflow engine. Extracting service logic into a dedicated SOM requires acknowledging that MANO was misused, re-implementing workflows, and potentially procuring a new system. The sunk cost in MANO customisation makes this politically difficult.
Correct Pattern
Restrict MANO (NFVO/VNFM) to its ETSI-defined scope: VNF instantiation, scaling, healing, and termination (Day-0/Day-1 lifecycle). Service orchestration β including CFSβRFS decomposition, multi-domain coordination, and service lifecycle β belongs in SOM. SOM calls MANO as one of several resource-domain controllers alongside NSO (for device configuration) and other activation adapters.
Related Sections
Situation
There is no Product Inventory or Subscription Lifecycle Management (SLM) system. Once an order is fulfilled, there is no persistent record of what the customer has. Billing maintains charge records, and the network has active services, but no system owns the "truth" of what was sold and what the customer is entitled to.
Symptoms
- β’Billing charges for services that were disconnected months ago
- β’Customers receive bills for products they never ordered (ghost subscriptions)
- β’MACD operations fail because there is no baseline to modify β each change is treated as a new order
- β’Contract renewal and upsell campaigns target customers with incorrect product data
- β’Disconnect orders cannot be validated because there is no record of what needs disconnecting
- β’Revenue assurance flags thousands of discrepancies between billing and network state every month
Architecture View
Anti-Pattern: No Product Inventory β order is fire-and-forget, billing becomes de facto SoR
Root Cause
The order management process was designed as a one-shot workflow: capture order β provision β bill. Nobody designed the "steady state" β the ongoing record of what the customer has after the order is complete. Billing was assumed to be the de facto record of active products, but billing records reflect charge items, not product entitlements.
Why It Persists
Billing is seen as "close enough" to a product inventory because it lists what the customer pays for. The gap only becomes visible during MACD operations, migrations, or audits. Introducing a Product Inventory requires back-populating it from billing and network records β a reconciliation exercise that nobody wants to fund until the pain becomes unbearable.
Correct Pattern
Implement Product Inventory / Subscription Lifecycle Management (TMF637) as the SoR for active product instances. When an order is fulfilled, COM creates a Product Instance in the Product Inventory. This record persists across the entire customer lifecycle and is the source of truth for what the customer has. Billing references this inventory for charge generation. MACD operations read the current state from Product Inventory before applying changes.
Related Sections
Situation
The architecture grew organically with no centralised catalog, no Commercial Order Management (COM) to capture and validate orders, and no Service Order Management (SOM) to orchestrate services. Orders arrive via email, spreadsheets, or tickets and flow directly to manual provisioning teams. There is no structured order lifecycle.
Symptoms
- β’Orders are entered manually into provisioning systems from emails or spreadsheets
- β’No end-to-end order tracking β status requires chasing individuals via email or chat
- β’No service decomposition β provisioning teams interpret commercial requests ad hoc
- β’No audit trail for what was ordered, when, or by whom
- β’Provisioning errors are frequent because there are no validation rules or feasibility checks
- β’MACD operations are near-impossible β nobody knows the current state to modify
Architecture View
Anti-Pattern: No catalog, no COM, no SOM β orders flow via email/tickets to manual provisioning
Root Cause
Systems were built piecemeal over many years. Each capability was handled by the team closest to it β sales took orders on paper, operations provisioned from memory and tribal knowledge. No one designed an end-to-end order flow because the organisation grew before BSS/OSS principles were understood or adopted.
Why It Persists
The manual processes "work" for the current volume and product set. Key staff carry institutional knowledge that substitutes for system logic. Any transformation requires simultaneously introducing a catalog, order management, and orchestration β a large, risky programme that leadership struggles to justify incrementally.
Correct Pattern
Implement a catalog-driven architecture with three key layers: (1) a Product Catalog (TMF620) defining what can be sold and how it decomposes, (2) COM (TMF622) for structured order capture, validation, and commercial order lifecycle, and (3) SOM for service orchestration, CFSβRFS decomposition, and service inventory management. All channels submit orders to COM via API rather than email/tickets.
Situation
COM, SOM, and ROM exist and work correctly for some newer products (e.g. fibre broadband, 5G fixed wireless), but the majority of legacy products (PSTN, basic DSL, leased lines) bypass them entirely via legacy order flows. Two parallel universes coexist β one modern and catalog-driven, the other manual and siloed.
Symptoms
- β’Two completely separate order paths must be maintained, tested, and supported
- β’Service inventory is incomplete β only new products appear; legacy products are invisible
- β’Legacy products cannot be bundled with new products because they live in different systems
- β’Reporting and analytics have gaps because legacy orders are not captured in the modern stack
- β’Migration from legacy to modern order path stalls because there is always a higher priority
- β’Customer-facing agents must switch between old and new tools depending on the product
Architecture View
Anti-Pattern: Partial COM/SOM/ROM β new products use the modern stack, legacy products bypass it
Root Cause
The modern COM/SOM/ROM stack was deployed for new product launches but legacy product migration was never funded or completed. The business case for the new stack was built around new revenue, not migration of existing products. Over time, the legacy path became entrenched and the cost of migration grew.
Why It Persists
Legacy products still generate significant revenue and "work" on the old path. Migration requires re-modeling every legacy product in the new catalog, mapping legacy fulfilment logic to SOM workflows, and running a parallel period β all with zero revenue upside. The transformation programme declared victory after launching new products and moved on.
Correct Pattern
Migrate all products to the catalog-driven order path. Model legacy products in the Product Catalog (TMF620) and define their CFS/RFS decomposition. Route all orders through COMβSOMβROM regardless of product vintage. For legacy fulfilment systems that cannot be replaced immediately, use an adapter/facade pattern at the ROM layer β SOM sends standard resource orders and the adapter translates them into legacy provisioning commands.