Skip to main content

Common Operations

Every network element in OmniWeb is different on the inside, but the way you work with them is deliberately the same. This page documents the patterns shared by all elements — viewing data, editing and changing NF setups, reading configuration, running actions, watching logs, and understanding polling and permissions. Learn these once and they apply to the HSS, the UPF, the SMSC, the MSC, and every other NF.

The screenshots below come from specific elements, but they illustrate the generic pattern — the same controls appear, with different fields, on every element.

← Back to Operations Guide

Table of Contents

Page Anatomy

Selecting an element instance in the sidebar opens its workspace. Every element workspace shares the same layout:

  • Overview — the landing tab: health, key counts, and component status for that instance.
  • Data tabs — the element-specific views (sessions, subscribers, peers, routing, etc.).
  • Configuration — a structured view of the element's runtime configuration (where exposed).
  • Logs — a live Loki log viewer scoped to that element.
  • Dashboards — embedded Grafana dashboards for that element (when Grafana tags match).

Sidebar entries are ordinary links, so you can Ctrl/Cmd-click (or middle-click, or right-click → Open in new tab) any of them to open that workspace in a new browser tab — handy for watching two elements at once.

Viewing Data

Operational data is presented in a consistent, sortable table throughout OmniWeb. Tables provide:

  • Sorting by column.
  • Pagination for large result sets.
  • Search / filtering where the element API supports it (e.g. search by IMSI/MSISDN or UE IP).
  • Skeleton loading while data is fetched, and a clear empty state when there is nothing to show.
  • Row click-through to a detail view where one exists.

Values are formatted for readability — timestamps as local time, durations as h m s, byte counts as KB/MB/GB, and large numbers with thousands separators.

A searchable subscriber list — the generic table pattern used across OmniWeb

The generic list pattern (here, a subscriber list): searchable, sortable, paginated, with click-through and inline editing. The same table drives sessions, peers, routes, and every other listing.

A data table with inline utilisation bars

Tables can render richer cells — here, utilisation bars per row. The pattern is the same; only the columns differ.

Detail Views

Where a row has more to show, clicking it opens a detail view. These reuse the same chrome (header, polling, actions) but present the single record in depth — for example an interactive relationship map for a complex object:

An interactive detail view showing a session's internal rule relationships

A detail view opened from a table row — here, an interactive map of one session's internal rules. Detail views are reached the same way everywhere: click the row.

Editing & Changing NF Setups

Wherever an element's API supports modification, OmniWeb exposes it through a consistent action form. The same form component drives "add a subscriber", "add a route", "edit a QoS rule", and "change a profile" — only the fields differ.

Action forms support these field types: text, number, select (dropdown), boolean (toggle), password (masked, with a show/hide toggle), and multi-line text. Each field can be marked required, carry a placeholder, and show helper text. The form shows a loading state while submitting and reports success or failure via an on-screen notification.

The HTTP method behind each action maps to a permission level — see Permissions.

The same pattern, three elements

These illustrate the same mechanic applied to different NFs:

TaskWhereWhat happens
Add/edit a subscriberHSS → Subscribers → AddFill the form (IMSI, MSISDN, profile, keys) → proxied POST/PUT → list refreshes
Add/change a routeSMSC → Routing → Add (or MSC → Routing)Fill the rule (pattern, destination, priority) → proxied write → table refreshes
Clear/release a sessionUPF → Sessions (or MSC → Calls)Select the record → confirm → proxied DELETE → list refreshes

The mechanics — form or confirmation dialog, proxied write, table refresh — are identical. Only the element and fields change.

A routing table that is viewed and edited with the generic patterns

Changing routing is the same edit pattern: the routing table is a list you add to and edit; some elements additionally parse destinations into readable chips and offer a simulator to test a change before it goes live.

Running Actions

Beyond CRUD, many elements expose operational actions that don't fit a simple form. These are surfaced as buttons that trigger a proxied call and show the result inline. Examples of the same button-action pattern:

Example actionElementEffect
Force release a callMSC → CallsTears down an active call
OPTIONS ping a SIP peerMSC → SIP PeersTests reachability of a SIP trunk
MAR test a Diameter peerTWAG → DiameterSends a test Multimedia-Auth-Request
Activate/deactivate a redirectUPF → Walled GardenRedirects or restores a subscriber
Ping from the nodeUPF → DiagnosticsRuns a ping from the element itself
Disconnect a sessionTWAG → SessionsDrops an authenticated WiFi session
Manual pagingMSC → PagingTriggers a paging request

Destructive actions (release, delete, deactivate) always require explicit confirmation before they run.

An element page exposing toggle/activate-style operational actions

Operational actions appear as buttons alongside the data they affect — here, activating/deactivating subscriber redirects and managing whitelisted IPs. Destructive actions prompt for confirmation first.

Viewing Configuration

Elements that expose their runtime configuration have a Configuration tab. OmniWeb renders it in a structured, readable layout with a Raw JSON toggle for the full underlying document.

Two behaviours are worth knowing:

  • Mixed config formats are normalised. Some elements return configuration as Python-style dictionaries ('key': True, None) rather than strict JSON. OmniWeb parses these into a clean view automatically and falls back gracefully if a value can't be parsed.
  • Secrets are masked. Any field whose name looks sensitive (matching password, secret, token, or credential) is displayed as *** rather than its real value, both in configuration views and in form fields.

A structured configuration view with a Raw JSON toggle

The generic configuration view: settings in a structured layout, with a Raw JSON toggle and sensitive values masked. Elements that expose config (UPF, TAS, ePDG, SMSC frontends, OCS, RAN Monitor) all use this pattern.

Logs on Every Element

Every element has a Logs tab backed by Loki. It queries that element's service logs by host/label, supports structured filtering, and streams new lines as they arrive. Because the log model is identical across elements, it is documented in full on its own page:

➡️ Logs & Subscriber Tracing

The per-element Logs tab streaming structured Loki logs

Every element's Logs tab uses the same viewer — structured, colour-coded, live-streamed Loki logs with service and severity filtering.

Dashboards on Every Element

Elements tagged for Grafana show a Dashboards tab. OmniWeb discovers matching dashboards by tag and renders them inline, so you can see the statistics for an element without leaving its workspace. See:

➡️ Grafana Dashboards & Statistics

Real-Time Polling

Operational pages auto-refresh. The Polling Indicator in each page header shows:

  • Active (green dot) or paused.
  • The interval (default 5 seconds, set per element via pollIntervalMs).
  • A spinner while a fetch is in flight.
  • The timestamp of the last successful update.

Polling can be toggled per page. Pages built around interactive or one-shot actions — consoles, diagnostics, JSON executors — do not poll by default and are refreshed manually. Pausing polling is useful when you want a stable view while reading a large table or while a trace is in progress.

Permissions & What You Can Change

What you can do on an element depends on your role. Access is granted per element type, per HTTP method:

PermissionMethods allowedTypical use
Read-onlyGETView data, no changes
Read-writeGET, POST, PUT, PATCHView and modify (add subscriber, edit route)
FullGET, POST, PUT, PATCH, DELETEEverything, including deletion / clearing

Permissions are assigned independently per element — you might have full access to the UPF but read-only on the HSS. If an action is not permitted for your role, its control is unavailable. Administrators have full access to all elements. See Authentication & Access Control for managing roles, and note that every proxied request is audit-logged regardless of role.

Multi-Instance & Fleet Views

Many element types run as multiple instances — several UPFs behind a PGW-C, a pair of SMSCs, redundant STPs. OmniWeb handles this at the element type level: a type with more than one configured instance gets two navigation modes.

When a type has multiple instances, the sidebar entry expands to list each one by name. Clicking a named instance opens that instance's workspace directly. An instance dropdown also appears in the workspace header, letting you switch between instances without going back to the sidebar — useful when comparing behaviour across nodes without losing your position on a particular tab.

Instance selector dropdown open, showing All Instances, omni-nick2-upf01, omni-nick2-upf02, omni-nick2-upf03

The instance selector in the top-right of the workspace header. Opening it shows every configured instance plus "All Instances" to jump back to the fleet view — without leaving your current tab.

Fleet View

Clicking the element type name in the sidebar (rather than a specific instance) — or selecting All Instances from the dropdown — opens the fleet view for that type. The fleet view shows a summary card per instance with health status and key metrics, so you can assess the whole fleet at a glance before drilling into a specific node.

UPF fleet view showing three instances — omni-nick2-upf01, upf02, upf03 — each with a health status card

UPF fleet view: one card per instance, all polled in parallel. Click any instance card or use the dropdown to drill in.

When to Use Each View

SituationUse
Checking overall fleet healthFleet view — all instances at a glance
Investigating a specific nodeInstance dropdown or sidebar sub-item
Comparing two UPFs session countsOpen each in the instance dropdown in turn
Clearing a session on a specific UPFNavigate to that instance, then Sessions