# cablelabs/os-provisioning architecture

> Architecture diagram of the GitHub repository cablelabs/os-provisioning, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/cablelabs/os-provisioning
- Repository: https://github.com/cablelabs/os-provisioning

## Overview

NMS Prime Community Edition is a modular OSS provisioning and operations platform for telcos and ISPs. Operators manage subscriber contracts and access devices through the web application; the provisioning modules maintain service/device configuration and expose operations to external network infrastructure. Separate capabilities cover VoIP provisioning, network-element inventory and SNMP control, with shared authentication and authorization. The graph uses documented capabilities and sampled routes/controllers; unsampled module internals are represented only at their supported directory paths, so uncertain wiring is omitted.

Main entry points: [`app/Providers/RouteServiceProvider.php`](https://github.com/cablelabs/os-provisioning/blob/dev/app/Providers/RouteServiceProvider.php) (Route registration), [`modules/ProvBase/Http/Controllers/ModemController.php`](https://github.com/cablelabs/os-provisioning/blob/dev/modules/ProvBase/Http/Controllers/ModemController.php) (Device operations), [`modules/ProvBase/Http/routes.php`](https://github.com/cablelabs/os-provisioning/blob/dev/modules/ProvBase/Http/routes.php) (Provisioning routes), [`modules/HfcSnmp/Http/Controllers/SnmpController.php`](https://github.com/cablelabs/os-provisioning/blob/dev/modules/HfcSnmp/Http/Controllers/SnmpController.php) (SNMP control)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_route_provider["Route registration"]
  node_web_client["Web interface<br/>[app.js]"]
end

subgraph group_prov["Access provisioning"]
  node_prov_routes["Provisioning routes<br/>[routes.php]"]
  node_modem_controller["Device operations"]
  node_prov_domain["Provisioning domain"]
  node_prov_jobs["Provisioning jobs"]
  node_device_services["Network services"]
end

subgraph group_voip["VoIP provisioning"]
  node_voip_routes["VoIP routes<br/>[routes.php]"]
  node_voip_management["Number management"]
  node_voip_domain["VoIP domain"]
end

subgraph group_network["Network operations"]
  node_net_routes["Inventory routes<br/>[routes.php]"]
  node_net_controller["Element management"]
  node_net_domain["Network inventory"]
  node_snmp_routes["SNMP routes<br/>[routes.php]"]
  node_snmp_controller["SNMP control<br/>[SnmpController.php]"]
end

subgraph group_core["Shared platform"]
  node_auth_controller["Access control"]
  node_user_roles[("Users and roles<br/>[User.php]")]
  node_base_controller["Shared controller services<br/>[BaseController.php]"]
end

node_operator(("Operator"))
node_genieacs["GenieACS"]
node_network_devices["Network elements"]
node_monitoring["Monitoring tools"]

node_operator -->|"uses"| node_web_client
node_web_client -->|"sends requests"| node_route_provider
node_route_provider -->|"registers"| node_prov_routes
node_route_provider -->|"registers"| node_voip_routes
node_route_provider -->|"registers"| node_net_routes
node_prov_routes -->|"dispatches"| node_modem_controller
node_modem_controller -->|"reads and updates"| node_prov_domain
node_modem_controller -->|"dispatches"| node_prov_jobs
node_prov_jobs -->|"configures"| node_device_services
node_modem_controller -.->|"uploads firmware"| node_genieacs
node_voip_routes -->|"dispatches"| node_voip_management
node_voip_management -->|"reads subscriber data"| node_voip_domain
node_net_routes -->|"dispatches"| node_net_controller
node_net_controller -->|"reads and updates"| node_net_domain
node_snmp_routes -->|"dispatches"| node_snmp_controller
node_snmp_controller -->|"queries via SNMP"| node_network_devices
node_snmp_controller -.->|"provides operations data"| node_monitoring
node_operator -->|"manages permissions"| node_auth_controller
node_auth_controller -->|"updates"| node_user_roles
node_prov_routes -->|"uses shared services"| node_base_controller
node_auth_controller -->|"uses shared services"| node_base_controller

click node_prov_routes "https://github.com/cablelabs/os-provisioning/blob/dev/modules/ProvBase/Http/routes.php"
click node_modem_controller "https://github.com/cablelabs/os-provisioning/blob/dev/modules/ProvBase/Http/Controllers/ModemController.php"
click node_prov_domain "https://github.com/cablelabs/os-provisioning/tree/dev/modules/ProvBase/Entities"
click node_prov_jobs "https://github.com/cablelabs/os-provisioning/tree/dev/modules/ProvBase/Jobs"
click node_voip_routes "https://github.com/cablelabs/os-provisioning/blob/dev/modules/ProvVoip/Http/routes.php"
click node_voip_management "https://github.com/cablelabs/os-provisioning/blob/dev/modules/ProvVoip/Http/Controllers/PhonenumberManagementController.php"
click node_voip_domain "https://github.com/cablelabs/os-provisioning/tree/dev/modules/ProvVoip/Entities"
click node_net_routes "https://github.com/cablelabs/os-provisioning/blob/dev/modules/HfcReq/Http/routes.php"
click node_net_controller "https://github.com/cablelabs/os-provisioning/blob/dev/modules/HfcReq/Http/Controllers/NetElementController.php"
click node_net_domain "https://github.com/cablelabs/os-provisioning/tree/dev/modules/HfcReq/Entities"
click node_snmp_routes "https://github.com/cablelabs/os-provisioning/blob/dev/modules/HfcSnmp/Http/routes.php"
click node_snmp_controller "https://github.com/cablelabs/os-provisioning/blob/dev/modules/HfcSnmp/Http/Controllers/SnmpController.php"
click node_route_provider "https://github.com/cablelabs/os-provisioning/blob/dev/app/Providers/RouteServiceProvider.php"
click node_auth_controller "https://github.com/cablelabs/os-provisioning/blob/dev/app/Http/Controllers/Auth/AbilityController.php"
click node_user_roles "https://github.com/cablelabs/os-provisioning/blob/dev/app/User.php"
click node_base_controller "https://github.com/cablelabs/os-provisioning/blob/dev/app/Http/Controllers/BaseController.php"
click node_web_client "https://github.com/cablelabs/os-provisioning/blob/dev/resources/js/app.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_route_provider,node_web_client toneBlue
class node_prov_routes,node_modem_controller,node_prov_domain,node_prov_jobs,node_device_services toneAmber
class node_voip_routes,node_voip_management,node_voip_domain toneMint
class node_net_routes,node_net_controller,node_net_domain,node_snmp_routes,node_snmp_controller toneRose
class node_auth_controller,node_user_roles,node_base_controller,node_operator,node_genieacs,node_network_devices,node_monitoring toneIndigo
```

## Components

### Web application

- [Route registration](https://github.com/cablelabs/os-provisioning/blob/dev/app/Providers/RouteServiceProvider.php): `app/Providers/RouteServiceProvider.php`
- [Web interface](https://github.com/cablelabs/os-provisioning/blob/dev/resources/js/app.js): `resources/js/app.js`

### Access provisioning

- [Provisioning routes](https://github.com/cablelabs/os-provisioning/blob/dev/modules/ProvBase/Http/routes.php): `modules/ProvBase/Http/routes.php`
- [Device operations](https://github.com/cablelabs/os-provisioning/blob/dev/modules/ProvBase/Http/Controllers/ModemController.php): `modules/ProvBase/Http/Controllers/ModemController.php`
- [Provisioning domain](https://github.com/cablelabs/os-provisioning/tree/dev/modules/ProvBase/Entities): `modules/ProvBase/Entities`
- [Provisioning jobs](https://github.com/cablelabs/os-provisioning/tree/dev/modules/ProvBase/Jobs): `modules/ProvBase/Jobs`
- **Network services**

### VoIP provisioning

- [VoIP routes](https://github.com/cablelabs/os-provisioning/blob/dev/modules/ProvVoip/Http/routes.php): `modules/ProvVoip/Http/routes.php`
- [Number management](https://github.com/cablelabs/os-provisioning/blob/dev/modules/ProvVoip/Http/Controllers/PhonenumberManagementController.php): `modules/ProvVoip/Http/Controllers/PhonenumberManagementController.php`
- [VoIP domain](https://github.com/cablelabs/os-provisioning/tree/dev/modules/ProvVoip/Entities): `modules/ProvVoip/Entities`

### Network operations

- [Inventory routes](https://github.com/cablelabs/os-provisioning/blob/dev/modules/HfcReq/Http/routes.php): `modules/HfcReq/Http/routes.php`
- [Element management](https://github.com/cablelabs/os-provisioning/blob/dev/modules/HfcReq/Http/Controllers/NetElementController.php): `modules/HfcReq/Http/Controllers/NetElementController.php`
- [Network inventory](https://github.com/cablelabs/os-provisioning/tree/dev/modules/HfcReq/Entities): `modules/HfcReq/Entities`
- [SNMP routes](https://github.com/cablelabs/os-provisioning/blob/dev/modules/HfcSnmp/Http/routes.php): `modules/HfcSnmp/Http/routes.php`
- [SNMP control](https://github.com/cablelabs/os-provisioning/blob/dev/modules/HfcSnmp/Http/Controllers/SnmpController.php): `modules/HfcSnmp/Http/Controllers/SnmpController.php`

### Shared platform

- [Access control](https://github.com/cablelabs/os-provisioning/blob/dev/app/Http/Controllers/Auth/AbilityController.php): `app/Http/Controllers/Auth/AbilityController.php`
- [Users and roles](https://github.com/cablelabs/os-provisioning/blob/dev/app/User.php): `app/User.php`
- [Shared controller services](https://github.com/cablelabs/os-provisioning/blob/dev/app/Http/Controllers/BaseController.php): `app/Http/Controllers/BaseController.php`

### Other components

- **Operator**
- **GenieACS**
- **Network elements**
- **Monitoring tools**

## Connections

- Operator → Web interface: uses
- Web interface → Route registration: sends requests
- Route registration → Provisioning routes: registers
- Route registration → VoIP routes: registers
- Route registration → Inventory routes: registers
- Provisioning routes → Device operations: dispatches
- Device operations → Provisioning domain: reads and updates
- Device operations → Provisioning jobs: dispatches
- Provisioning jobs → Network services: configures
- Device operations → GenieACS: uploads firmware
- VoIP routes → Number management: dispatches
- Number management → VoIP domain: reads subscriber data
- Inventory routes → Element management: dispatches
- Element management → Network inventory: reads and updates
- SNMP routes → SNMP control: dispatches
- SNMP control → Network elements: queries via SNMP
- SNMP control → Monitoring tools: provides operations data
- Operator → Access control: manages permissions
- Access control → Users and roles: updates
- Provisioning routes → Shared controller services: uses shared services
- Access control → Shared controller services: uses shared services
