Account Structure
This document outlines the customer hierarchy and the detailed database schema for the new CBS implementation.
Hierarchy Overview
The customer hierarchy is structured as follows: Registered Customer → Payment Account → Subscriber.
Core Business Logic
- Account-Subscriber Relationship: Multiple subscribers can exist under a single payment account.
- Balance Sharing: For prepaid accounts with multiple subscribers, all subscribers share the same recharge balance tied to the account.
- Flex Subscriber Logic: A flex subscriber is attached to two accounts: a prepaid account (for balance deduction) and a postpaid account (for billing).
- Identity Management: While CBS provides both
*_idand*_codefor all modules, Dhiraagu exclusively uses the ID field. - CRM Integration: Customer code is not used; the
Customer KEYis sourced from the CRM.
1. Registered Customer
The following tables manage the legal identity and high-level attributes of the customer.
| Table Name | Brief Description |
|---|---|
| BC_CUSTOMER | Main customer table for new registrations. |
| Individual Information About a Person | Details for individual consumer customers. |
| Organisation Information (BC) | Details for corporate/business customers. |
| BC_CUST_PROP | Supplemental customer attributes in long format. |
BC_CUSTOMER (Customer Information)
This is the primary table hit when a new customer is created.
- Note: Fields like
Parent Customer IDare redundant and can be ignored, as there is no hierarchy within the Customer module itself.
Individual Information About a Person
Contains details for consumer customers. This table includes an address ID which links to the master address table.
Organisation Information (BC)
Contains details for corporate customers. Similar to individual customers, this includes an address ID linked to the master address table.
BC_CUST_PROP (Additional Property Instance of Customer)
A long-format table used to add new attributes without changing the schema.
- property_code: Stores the name of the attribute.
- property_value: Stores the value of the attribute.
2. Payment Account
The financial layer responsible for monetary balances and payment settings.
| Table Name | Brief Description |
|---|---|
| BC_ACCT | Master registry of all payment accounts. |
| Account Property | Supplemental account-level attributes. |
| Balance Account | Records monetary balances at the account level. |
BC_ACCT (Account)
The central table containing all payment accounts for all customers.
Account Property
A long-format table for additional account fields.
- attribute_code: Stores the property name.
- attribute_value: Stores the property value.
Balance Account
In the new CBS, monetary balances are recorded at the account level rather than the individual subscriber level.
3. Subscriber
The service layer where MSISDNs and non-monetary units are managed.
| Table Name | Brief Description |
|---|---|
| BC_SUBSCRIBER | Main table for service IDs and status. |
| Subscriber Identity Information | Primary and secondary customer information. |
| Default Subscriber Account | Maps a subscriber to their billing/recharge account. |
| Additional Property Instance of Subscriber | Service types and supplemental columns. |
| Free Unit | Records non-monetary balances (Data, SMS, etc.). |
BC_SUBSCRIBER (Subscriber Information)
The main table containing the Subscriber ID (service ID) and current service status.
- latest_activation_time: Expiration time for SIM cards that have not been activated.
- actual_activation_time: The Prepaid FCA and service creation time for all service types.
- Expiration Date: Indicates when the
subscriber_id <> msisdnrelationship was broken (e.g., after termination or ownership change).
Subscriber Identity Information
Stores the primary and secondary identification data for the customer.
Default Subscriber Account
Defines the default billing and recharge account for each subscriber. All recharges are automatically directed to this account.
Additional Property Instance of Subscriber
Used for service types and custom attributes in long format.
- property_code: The attribute name.
- property_value: The attribute value.
Free Unit
Contains all non-monetary balances. Unlike monetary balances, these are tracked at the subscriber level.
4. Subscriber Lifecycle
Tables dedicated to tracking the status transitions and timelines of subscribers.
| Table Name | Brief Description |
|---|---|
| Subscriber Status Change History | Audit log of all status transitions. |
| Subscriber Status Expiration Time Instance | Timestamps for future status changes. |
| CM_SUB_STATUS_DEFINITON | Internal mapping for statuses and SS_SEQ fields. |
Subscriber Status Change History
Provides a full historical record of every status change a subscriber has undergone.
Subscriber Status Expiration Time Instance
Contains the specific timestamps for when subscribers are scheduled to hit various service statuses.
CM_SUB_STATUS_DEFINITON
An internal mapping table used to align service statuses with the statuses defined in the SS_SEQ field.
5. All Addresses
Address data is centralized to maintain consistency across modules.
| Table Name | Brief Description |
|---|---|
| BC_ADDRESS | Central repository for all addresses. |
BC_ADDRESS
All modules (Customer, Account, Subscriber) link to this table via address ID to retrieve location details.