offdataai
Telecom · data model template

Telecom OSS/BSS data model

Normalized (3NF) telecom OSS/BSS model. A BSS spine of customer-account-subscription-product feeds billing, while an OSS spine of service-order-service-resource manages provisioning over network elements, SIM cards, and MSISDN inventory, with trouble tickets for assurance. Customer PII and SIM secrets are classified and masked.

Telecommunications operations- and business-support systems modeled on the TM Forum eTOM/SID frameworks: customers and billing accounts, product offerings, subscriptions and provisioned services, fulfillment service orders, network resource inventory, SIM and MSISDN pools, invoicing, and trouble-ticket assurance — as a normalized OLTP schema. It is a normalized (3NF) relational model that mirrors the source system, suited to operational databases and to landing source data faithfully.

3NFTelecomGDPRPCI DSS
15
tables
147
columns
17
relationships
7
PII columns

Opening the template creates a project with the ERD, platform-native DDL, a dbt project and documentation already generated (recommended platform: PostgreSQL). Edit it in plain English or on the canvas, then ship it to any supported warehouse.

Subject areas

customer_managementproduct_and_subscriptionfulfillment_and_networkbillingassurance

Design decisions

  • eTOM/SID-aligned entity model

    TM Forum's SID gives the canonical Party/Customer/Product/Service/Resource layering that telecom OSS/BSS systems already speak, so modeling those concepts directly eases integration across stacks.

  • Separate Customer-Facing and Resource-Facing services

    A subscription (CFS) decouples from the provisioned service instance (RFS) and the network elements that realize it, mirroring real telecom fulfillment and keeping the model in 3NF.

  • Junction tables for resource and number assignment

    Services map M:N to network elements, and a service may carry multiple SIM/MSISDN over time; junction tables capture these without denormalizing inventory.

  • Normalized (3NF) rather than dimensional

    OSS/BSS is transactional order-to-activate and bill-run processing where update integrity matters more than analytical roll-ups.

Tables in the Telecom OSS/BSS model

Every table with its grain, columns, types and keys. PK marks a primary key, BK a business key and PII a column classified as personal data, which gets a masking strategy by default.

Tables (14)

customer

Grain: one row per customer (party)

SID Party/Customer.

ColumnTypeKeys
customer_keybigintPK
customer_numbervarcharBK
customer_typevarchar
first_namevarcharPII
last_namevarcharPII
legal_namevarchar
emailvarcharPII
phonevarcharPII
national_idvarcharPII
segmentvarchar
credit_scoreinteger
statusvarchar
acquisition_datedate

billing_account

Grain: one row per billing account

SID Customer Account.

ColumnTypeKeys
account_keybigintPK
customer_keybigint
account_numbervarcharBK
account_namevarchar
billing_cycle_daysmallint
currencyvarchar
payment_methodvarchar
billing_addressvarcharPII
credit_limitdecimal
balancedecimal
statusvarchar
opened_datedate

product_offering

Grain: one row per saleable product/offer

SID Product Offering.

ColumnTypeKeys
offering_keybigintPK
offering_codevarcharBK
offering_namevarchar
categoryvarchar
descriptionvarchar
monthly_recurring_chargedecimal
one_time_chargedecimal
contract_term_monthssmallint
data_allowance_gbdecimal
voice_minutesinteger
sms_allowanceinteger
is_activeboolean

subscription

Grain: one row per subscribed product instance

SID Product / subscribed CFS.

ColumnTypeKeys
subscription_keybigintPK
account_keybigint
offering_keybigint
subscription_numbervarcharBK
activation_datedate
contract_end_datedate
renewal_typevarchar
billing_statusvarchar
statusvarchar
termination_datedate
termination_reasonvarchar

service

Grain: one row per provisioned service instance (RFS)

SID Resource-Facing Service.

ColumnTypeKeys
service_keybigintPK
subscription_keybigint
service_idvarcharBK
service_typevarchar
service_statevarchar
technologyvarchar
qos_profilevarchar
provisioned_datedate
deactivated_datedate

service_order

Grain: one row per service fulfillment order

eTOM Order Handling.

ColumnTypeKeys
service_order_keybigintPK
subscription_keybigint
service_keybigint
order_numbervarcharBK
order_typevarchar
priorityvarchar
requested_datedate
completed_datedate
statusvarchar
channelvarchar
created_attimestamp

network_element

Grain: one row per physical/logical network resource

SID Resource.

ColumnTypeKeys
network_element_keybigintPK
element_idvarcharBK
element_typevarchar
vendorvarchar
modelvarchar
regionvarchar
latitudedecimal
longitudedecimal
capacityvarchar
statusvarchar
commissioned_datedate

service_resource

Grain: one row per service-to-network-element assignment

Junction: which network elements serve a service.

ColumnTypeKeys
service_resource_keybigintPK
service_keybigint
network_element_keybigint
rolevarchar
port_identifiervarchar
assigned_datedate
released_datedate

sim_card

Grain: one row per SIM/eSIM

Mobile SIM inventory.

ColumnTypeKeys
sim_card_keybigintPK
iccidvarcharBK
imsivarcharPII
kivarchar
sim_typevarchar
form_factorvarchar
statusvarchar
activation_datedate

msisdn

Grain: one row per phone number in inventory

Number inventory pool.

ColumnTypeKeys
msisdn_keybigintPK
phone_numbervarcharBK
number_rangevarchar
number_typevarchar
statusvarchar
reserved_untildate

service_assignment

Grain: one row per service to SIM/MSISDN assignment

Junction: SIM/MSISDN allocated to a mobile service.

ColumnTypeKeys
service_assignment_keybigintPK
service_keybigint
sim_card_keybigint
msisdn_keybigint
assigned_datedate
released_datedate
is_primaryboolean

invoice

Grain: one row per issued invoice

BSS billing document.

ColumnTypeKeys
invoice_keybigintPK
account_keybigint
invoice_numbervarcharBK
invoice_datedate
due_datedate
billing_period_startdate
billing_period_enddate
subtotal_amountdecimal
tax_amountdecimal
total_amountdecimal
amount_paiddecimal
statusvarchar

invoice_line

Grain: one row per invoice line item

Invoice detail.

ColumnTypeKeys
invoice_line_keybigintPK
invoice_keybigint
subscription_keybigint
line_numberinteger
charge_typevarchar
descriptionvarchar
quantitydecimal
unit_pricedecimal
amountdecimal
tax_amountdecimal

trouble_ticket

Grain: one row per fault/trouble ticket

eTOM Problem Handling.

ColumnTypeKeys
trouble_ticket_keybigintPK
customer_keybigint
service_keybigint
network_element_keybigint
ticket_numbervarcharBK
categoryvarchar
priorityvarchar
severityvarchar
summaryvarchar
statusvarchar
opened_attimestamp
resolved_attimestamp
sla_breachedboolean
resolution_notesvarchar

Lookup tables (1)

service_type_ref

Grain: static reference of service types

Reference list.

ColumnTypeKeys
service_type_keybigintPK
type_codevarcharBK
type_namevarchar
network_domainvarchar

Relationships

Each relationship is a foreign key on the first table referencing the second.

  • billing_account.customer_key → customer (many-to-one)
  • subscription.account_key → billing_account (many-to-one)
  • subscription.offering_key → product_offering (many-to-one)
  • service.subscription_key → subscription (many-to-one)
  • service_order.subscription_key → subscription (many-to-one)
  • service_order.service_key → service (many-to-one)
  • service_resource.service_key → service (many-to-one)
  • service_resource.network_element_key → network_element (many-to-one)
  • service_assignment.service_key → service (many-to-one)
  • service_assignment.sim_card_key → sim_card (many-to-one)
  • service_assignment.msisdn_key → msisdn (many-to-one)
  • invoice.account_key → billing_account (many-to-one)
  • invoice_line.invoice_key → invoice (many-to-one)
  • invoice_line.subscription_key → subscription (many-to-one)
  • trouble_ticket.customer_key → customer (many-to-one)
  • trouble_ticket.service_key → service (many-to-one)
  • trouble_ticket.network_element_key → network_element (many-to-one)

Related templates

All templates →
Start for $1

From requirements to AI-ready context, in one platform.

Describe your business in a conversation, start from a template or connect your own database. Your first model is ready in minutes.

Get startedBook a demo

Plans from $1/month · cancel any time