One of my favourite OSS books, that isn’t an OSS book at all, is Insanely Simple: The Obsession That Drives Apple’s Success by Ken Segall
Ken worked alongside Steve Jobs in the early days of Apple and cites many of the principles that drove its success.
That triggered a thought:
What are the core principles that underpin OSS/BSS?
In most industries, including OSS, there are a million things that you think you have to understand and memorise, but are they simply combinations of a few core principles? If so, what are those core principles of OSS that everything else builds upon?
This article is an attempt, most likely incorrect and/or incomplete, but a fun exercise in distillation into the core principles of OSS.
Like all of these thought experiments I play with from time to time, I’d love to get your feedback, to correct, to refine, to reinvent and to generally just help to generate a better version of what I’m currently thinking.
If we strip OSS back far enough, I don’t think the foundations are inventory, assurance, fulfilment, orchestration, planning, fault, performance and so on. Those are merely product categories we created around recurring combinations of a much smaller number of primitives.
My reduction would be:
OSS exists to maintain an actionable understanding of a network (and services) [a digital twin of the network], determine how reality differs from intent and safely move reality towards intent
Almost everything else can be derived from that
The 8 core principles of OSS
01. Four Nouns
1. Entities: know what things are
Before an OSS can do anything, it needs to distinguish one thing from another
A network is fundamentally a collection of identifiable entities:
- sites
- racks
- devices
- cards
- ports
- fibres
- VNFs/CNFs
- IP addresses
- circuits
- services
- customers
- orders
- alarms
- configuration objects
This sounds trivial, but an extraordinary amount of OSS complexity comes from identity resolution.
Is PE01-MEL, mel-pe-001, serial number XYZ123 and EMS object 74219 the same thing as any of them??
Hence:
Discovery, reconciliation, federation, data integrity / audits, duplicate detection and many other concepts are all manifestations of the entity / identity problem.
2. State: knowing what things are like
Identity tells us that something exists, but then….
State tells us:
- what attributes it has
- whether it is operational
- what configuration it currently has
- what capacity it has
- what software it runs
- what resources are allocated
- what condition it is in
State is never simply “true”. It is an observation of truth at a particular point in time.
Every OSS is therefore maintaining some approximation of:
Entity + state + timestamp
That has enormous implications for inventory accuracy, telemetry, caching, event processing and more.
3. Relationships: know how things depend upon each other
A list of network entities / objects isn’t particularly useful for most important use-cases.
OSS becomes powerful when it understands:
A relates to B which depends on C which supports D
Telco networks tend to have much more relationship sophistication than IT infrastructure, so Network Inventory tools are often much more complex than traditional CMDBs.
Telco networks need to model relationships through the sample 5G stack from east-to-west (across domains) and from south-to-north (up the hierarchy).
These relationships can be:
- physical containment
- physical connectivity
- logical connectivity
- service composition
- resource consumption
- protection relationships
- dependency
- geographic relationship
- customer-to-service relationship
This is why I increasingly think the network is fundamentally a graph.
Topology, inventory, service impact, root-cause analysis, path computation, capacity planning and digital twins are all applications of the same underlying principle:
Understand the graph of relationships between things
Those first three describe reality. They give us:
Things + their state + their relationships
But an OSS needs something to compare reality against, which brings us to perhaps the most important principle:
4. Intent: know what should be true
Networks don’t merely have state
They have intended situation or state
For example:
- this customer should have a 1 Gbit/s service
- this router should run configuration X
- these two circuits should be diversely routed
- utilisation shouldn’t exceed 80%
- this service should have 99.99% availability
- this topology should contain two protection paths
- this order should ultimately result in these resources being activated
Intent can appear as:
- product definitions
- service specifications
- policies
- designs
- orders
- configuration templates
- SLAs
- capacity rules
- architecture standards
A huge amount of OSS is simply the management of the gap between:
Planned, desired and observed state (more on this later)
This is why I think the classic OSS domains are actually much more closely related than their product categories imply
02. Four Verbs
5. Observation: discover what is actually happening
An OSS needs evidence about reality
That evidence comes from:
- telemetry
- alarms
- counters
- configuration retrieval
- discovery
- probes
- logs
- transactions
- network events
- user reports
- synthetic testing
All of these are variations on one operation:
Observe reality
Fault management and performance management look like different disciplines mainly because one historically collected events and the other collected counters. Conceptually, they’re both observation systems and can be amalgamated.
The harder problem is determining:
What should I believe from the observations I receive?
6. Compare the Difference: determine whether the gap matters
Once you have Observed, Planned and Desired state OSS becomes a comparison problem
The difference might be:
- a missing device
- an incorrect configuration
- insufficient capacity
- a failed link
- a service that hasn’t activated
- an SLA violation
- inventory drift
- an unexpected topology
- an anomalous traffic pattern
Different OSS disciplines simply give these differences different names:
- alarm
- discrepancy
- exception
- defect
- violation
- fallout
- degradation
- anomaly
But underneath them all is essentially:
Something isn’t how we expected it to be
7. Act: change reality
Once the OSS understands that there’s an unexpected difference, it needs mechanisms for rectifying it.
An action could be:
- configure a device
- reserve capacity
- allocate a VLAN
- instantiate a VNF
- reroute traffic
- dispatch a technician
- raise a ticket
- send an order
- update inventory
- notify a customer
- roll back a change
Again, these appear very different in traditional OSS architectures:
Provisioning, activation, orchestration, workflow, remediation and workforce management are all different implementations of the same underlying primitive (action / change).
8. Verification: prove that the action worked
This is the principle that older OSS architectures frequently under-emphasise
Issuing an action isn’t enough
You need to:
- act
- observe again
- compare against intent
- determine whether convergence occurred
That creates the fundamental OSS loop:
Model ? Observe ? Compare ? Decide ? Act ? Verify ? Repeat
And suddenly we have:
- closed-loop assurance
- autonomous networks
- intent-based networking
- zero-touch operations
- self-healing
- agentic OSS
Many of these are modern buzz-words. However, they’re not fundamentally new concepts, just increasingly sophisticated implementations of the same closed-loop concept.
03. There are then four properties that apply to every one of those principles
I wouldn’t call these separate OSS functions. They’re more like the physics governing the system
9. Time
Networks are continuously changing
So OSS isn’t really modelling:
“What is the network?”
It is modelling:
“What was believed about the network at time T?”
This is why event sequencing, temporal topology, audit trails / logs, change history and versioning matter so much
10. Authority
The amount of integration within OSS/BSS is often difficult to fathom. Multiple systems inevitably claim different versions of reality so reconciliation becomes necessary.
Therefore every OSS architecture eventually confronts the reconciliation challenge:
What is the authoritative source of this fact?
That creates systems of record, federation, ownership boundaries and reconciliation rules. Making things even more complicated, Authority might belong to different sources for different attributes of the same object
11. Confidence
A particularly important principle for next-generation OSS, where networks, systems and associated data are all far more dynamic and autonomous. Data integrity is simply more important with the more widespread use of autonomy and agentic control mechanisms. They rely on algorithms rather than human intuition, so we need to ensure the data being used has trustworthy provenance.
OSS data shouldn’t merely say:
port.status = ACTIVE
It should increasingly say something closer to:
port.status = ACTIVE
source = EMS
observed = 37 seconds ago
confidence = 0.998
It becomes especially important once AI agents become increasingly responsible for operational decisions.
12. Constraints
Networks can’t transition arbitrarily between states
Every action is constrained by:
- technology
- capacity
- topology
- policy
- maintenance windows
- dependencies
- regulatory requirements
- commercial commitments
- risk
Planning, orchestration and optimisation are therefore largely:
Finding valid state transitions within the defined constraints
How does this relate to traditional OSS domains?
| OSS discipline | What it really is |
|---|---|
| Inventory | Persisting entities, state and relationships |
| Discovery | Observing entities, state and relationships |
| Reconciliation | Comparing competing representations of state |
| Fulfilment | Moving network state towards service intent |
| Activation | Executing state transitions |
| Orchestration | Coordinating constrained state transitions across domains |
| Assurance | Detecting divergence between expected and observed behaviour |
| Fault management | Observing exceptional state changes |
| Performance management | Observing state over time |
| RCA | Traversing relationships to explain observed differences |
| Service impact | Traversing dependencies from resource state to service/customer state |
| Capacity management | Predicting future constraint violations |
| Planning | Designing a future desired state |
| Configuration management | Managing desired versus actual configuration state |
| Workflow | Coordinating sequences of actions |
| Digital twin | Executable representation of entities, states, relationships, constraints and behaviour |
| Autonomous network | Automated Observe ? Compare ? Decide ? Act ? Verify loop |
| AI agent | A new mechanism for deciding which state transition should occur |
| MCP | A machine-readable mechanism through which agents can observe and act |
That’s why so many supposedly different OSS platforms start looking remarkably similar when you look underneath their terminology and modern buzzwords.
One final simplification
If I had to teach someone only three ideas about OSS, I’d teach them these:
1. There are three versions of the network
- What we wish to be true (planned, before making changes)
- What we believe to be true (desired, after initiating changes) and
- What is actually true (observed)
2. Almost every OSS problem is caused by differences between those three
3. Almost every OSS capability exists either to understand those differences or eliminate them
What do you think? Have I missed, or fluffed, any of the fundamental laws?
What would you change?







