Skip to content

Data (Fibre & LTE)

The Data module manages fixed-line and mobile broadband services sold to customers: Openserve FTTH fibre lines, Axxess LTE (RCP-based) accounts, and Vodacom LTE accounts, plus the prepaid balances that sit behind capped monthly plans. It's used by ISP/telecoms operations staff to provision, monitor, suspend, and track connectivity services, and it can pull live status and usage straight from the upstream providers where an integration exists (Axxess) or import inventory from a provisioning system (Splynx, for fibre). Most of these grids are staff-only — they are not exposed on the self-service customer portal.

What you can do

  • Fibre Services — manage FTTH lines with client name, username, product, phone, IP address, external provider ID, status (active/suspended/cancelled), and notes.
  • Fibre Lines ("Data Admin", staff-only) — a second, simpler fibre line register keyed by username/product/provider/speed, linked to a customer record, with one-click import of the fibre inventory straight from Splynx.
  • Plan Balances — track prepaid data balances per domain, including currency, low-balance threshold, and auto-recharge amount/enable flag; totals are rolled up as a stat tile.
  • Axxess LTE Accounts ("Data Admin", staff-only) — manage LTE accounts (username, MSISDN, product, status, customer link), suspend/unsuspend the service directly on the Axxess provider, pull live per-day data usage, and bulk-sync all accounts from Axxess.
  • Axxess Products — the synced Axxess product catalogue (product name + provider product GUID), refreshable on demand from the live API.
  • Vodacom LTE Accounts ("Data Admin", staff-only) — manage LTE accounts by MSISDN, SIM number, product, status, and customer link.
  • SIM Swaps — log and track Vodacom SIM swap requests (old SIM → new SIM) with a Pending/Completed/Failed status and a stat tile for outstanding swaps.

Common tasks

  1. Provision/register a new fibre line Open Fibre Lines (or Fibre Services for the older register), create a row, and fill in username, product, provider, and speed. Link it to the owning customer via the Customer lookup column. Set status to active.

  2. Import fibre inventory from Splynx On the Fibre Lines grid, click the toolbar button Import from Splynx. This pulls the live fibre inventory from Session Telecoms' Splynx instance (Splynx is the actual provisioning system and source of truth for what's live), refreshes existing lines in place, and links each imported line to a customer by matching the fibre subscription's RADIUS login. Nothing is deleted by this sync.

  3. Register a new Axxess LTE account and sync it Either create the account manually on Axxess LTE, or click Sync from Axxess in the toolbar to read every client's services live from the provider and create/update matching rows.

  4. Suspend or unsuspend an LTE service (Axxess) On the Axxess LTE grid, use the row-level Suspend button (calls funcSuspend on Axxess, keyed on the account's username/guidServiceId) or Unsuspend (funcLiftSuspend) once it's suspended. You can also select multiple rows and use Suspend selected for a bulk suspend. The local status only flips if the upstream call returns success, so the local record and Axxess never drift.

  5. Check live data usage for an LTE SIM On the Axxess LTE grid, click the row action Data Usage to fetch per-day usage straight from Axxess for that SIM. Some product types (e.g. Fixed Wireless / uncapped combos) won't return usage data since Axxess doesn't track it for those.

  6. Log and track a SIM swap Create a row on SIM Swaps with the customer's MSISDN, old SIM, and new SIM number, status Pending. Update the status to Completed or Failed once the swap is actioned with the carrier.

Data model

All tables below live only in the data site's database.

ModelTablePurpose
FibreServicefibre_servicesProvisioned FTTH line (older/legacy fibre register, ported from CloudTools' FibreServiceController).
DataFibreLineisp_data_fibreFibre line register (staff-only "Data Admin" grid), the target of the Splynx import; links to a customer via customer_id.
MonthlyPlanBalancemonthly_plan_balancesPrepaid balance and auto-recharge configuration per domain, for capped monthly data plans.
LteAxxessAccountisp_data_lte_axxess_accountsAxxess LTE account (username = provider guidServiceId), linked to a customer.
LteAxxessProductaxxess_productsSynced Axxess product catalogue, with the raw provider payload kept in raw_data.
LteVodacomAccountisp_data_lte_vodacom_accountsVodacom LTE account by MSISDN and SIM, linked to a customer.
LteVodacomSimSwapisp_data_lte_vodacom_simswopLog of SIM swap requests (old SIM → new SIM) with a Pending/Completed/Failed workflow status.

customer_id on the fibre/LTE account tables links to AccCustomer (the acc-customers grid). Several tables also carry a domain_uuid/external_id for matching back to the source system (RADIUS domain for fibre, provider service ID for LTE); these are the fields the provider syncs use to reconcile local rows with upstream state rather than duplicating records.

Configuration & integrations

  • Openserve FTTH — fibre is Openserve-provisioned infrastructure; the provider column on Fibre Lines records this, but there is no live Openserve API integration in this module — fibre inventory instead comes in via the Splynx import below.
  • Splynx (Session Telecoms, rad.sessiontelecoms.co.za) — the actual fibre provisioning system and source of truth for what fibre lines exist and whether they're live. The Import from Splynx button (app/services/splynx_sync.sync_fibre_lines) reads its inventory and reconciles it into isp_data_fibre.
  • Axxess RCP — live LTE provider integration (app/services/providers/axxess.py, client built via axxess.from_db(db)). Used for account suspend/unsuspend (funcSuspend/funcLiftSuspend), live per-day usage lookup (getServiceUsageDetailsById), and syncing both the LTE account list and product catalogue. Must be configured under Settings → Connections; grid actions return a clear "Axxess is not configured" message if it isn't.
  • Vodacom — account and SIM-swap data is tracked locally; the code comments note provider sync for Vodacom is deferred (tables carry external-id-style fields to backfill it later), so Vodacom rows are currently managed by hand rather than synced live.

API reference

This module has no bespoke endpoints — every grid above is served by the generic grid CRUD/action framework (app/social/api/grid.py, mounted at /api/v1/grid/{slug}). The relevant routes, using slug values such as fibre-services, data-fibre, monthly-plan-balances, lte-axxess-accounts, lte-axxess-products, lte-vodacom-accounts, and lte-vodacom-simswap:

Method & pathPurpose
GET /api/v1/grid/{slug}/dataFetch rows (filter, search, paginate).
POST /api/v1/grid/{slug}Create a row.
PUT /api/v1/grid/{slug}/{row_id}Update a row.
DELETE /api/v1/grid/{slug}/{row_id}Delete a row.
GET /api/v1/grid/{slug}/statsFetch the grid's summary stat tiles.
POST /api/v1/grid/{slug}/action/{key}Invoke a row/bulk action button — e.g. sync (Sync from Axxess/Splynx), suspend/unsuspend, suspend_selected, usage (Axxess Data Usage).
GET /api/v1/grid/{slug}/optionsFetch dropdown/lookup values (e.g. the Customer foreign-key lookup).

The action buttons wired up in this module map to handler functions in app/grids/data.py: _sync_splynx_fibre, _sync_axxess_accounts, _sync_axxess_products, _lte_suspend/_lte_unsuspend, and _axxess_usage.

Access & visibility

  • These grids are registered against the data site's database, but the tenant that owns them for provisioning purposes is the site literally named portal (register_grids(GRIDS, sites={"portal"}) in app/grids/data.py).
  • Four of the seven grids — Fibre Lines, Axxess LTE Accounts, Axxess Products, and Vodacom LTE Accounts — are marked staff-only as of 2026-07-29 under the "Data Admin" grouping: they have no service_portal flag set, so they don't appear in the customer-facing self-service portal menu (ADMIN_ONLY_SERVICE_APPS in app/api/menu.py). Only staff with access to the admin grid UI can see and manage them.
  • Fibre Services, Plan Balances, and SIM Swaps are not flagged staff-only in this file, but check the live menu configuration before assuming any grid is customer-visible.

Lubb ERP Documentation