Overview

Introduction

This guide has been prepared with the aim of providing a generalized view of the life of the client in the company and the different processes that are involved. We are going to go through the complete cycle from when a client gets registered in the company.

The beggining

In order to talk about the life cycle of a client, the first thing we are going to see is how a client is generated. The moment a person accesses or becomes interested in any of the telecommunications products, products that can be consulted in MasCatalogue, within MasStack, and decides to make a contract, there are two possible channels to do this selling:

  • Physical or face-to-face (stores)
  • Not in person (Online)

Once the client uses either of the two options, a sale is generated, from which the life or life cycle of the client begins in the company. The sale process is described in Signup. All the information can be checked in Signups site

Post-sale

Once the sale or Signups is made, a unique identifier is generated to the customer. This unique identifier is called userId. We are going to see the different fields that a client has within our Api.

User

This object includes all the information related to the customer’s data, for example: address, bank account, mail … etc., as well as the different packages contracted in the sale.

  • Own information: can be accessed from Get user detail. In this object we will find everything related to customer data, from their address, identification document, email … It is accessed thanks to the userId

  • Information of the contracted packages: can be consulted in Get customer full tree This information can be accessible by email, identity document or subscription phone. This tree will return all accounts and subscriptions the client has contracted already along with their current status . We will see their structure below.

A first approach to how the hierarchy of our API is, with the different fields and how they relate to each other, can be seen in the following diagram. You can click on the squares to expand the differents sections.

erDiagram
SIGNUP ||--|| USER : creates
SIGNUP ||--|| ACCOUNT : creates
SIGNUP ||--|| SUBSCRIPTION : creates
USER {
    int64 userId
}
USER ||--|{ ACCOUNT : "has"
ACCOUNT {
    int64 accountId
}
ACCOUNT ||--|{ SUBSCRIPTION : "is composed by"
SUBSCRIPTION {
    int64 subscriptionId
}

Accounts

This object encompasses the different “contracts” made by the client. This contract or contracts is going to be a sum of different lines or services. Each contract will have a different account associated with its own accountId. All the different methods that we have in our MasStack APIs can be consulted here Accounts For example: a customer goes to the store and hires a package which is made up of: a fixed line, a mobile line and the internet. In this case we will have a contract with 3 different subscriptions.

  • Fixed line
  • mobile line
  • Internet

Subscriptions

Each of the services contracted within a contract is what we call Subscription. Each of them may have different peculiarities. Everything related to this field can be consulted in Subscriptions

There are 4 types of services that you can have a subscription:

  • Fixed Line
  • Mobile
  • Internet
  • Television

In the following diagram we can see the different types of subscriptions that we can have:

graph TB
A[Account] --> |subscription1|1[Fixed Line];
1 -.-> 11(New number) & 12(Portability);
A --> |subscription2|2[Internet];
A --> |subscription3|3[Mobile Number];
3 -.-> 31(New number) & 32(Portability);
A --> |subscription4|4[Television];

The hierarchy

As we have seen in previous sections, all the fields are related to each other as can be seen in the diagram at the beginning of this page.

Bellow you can find a first approach on how these fields connect and which are the parameters needed when searching:

classDiagram
    Signups --|> User
    User .. Customer_tree
    User .. Customer_info
    User --|> Accounts
    Accounts .. Account_Info
    Accounts .. Compatible_bundles
    Accounts .. Customer_account
    Accounts --|> Subscriptions
    Subscriptions .. Subscription_Info
    Subscriptions .. Replace_SIM
    Subscriptions .. Recharge_Details
    Subscriptions .. in_flight_mobile_subscription
    class User{
        Customer_tree
        Customer_info
    }
    class Customer_tree{
        Email
        Msisdn
        Document_Number
        }
    class Customer_info{
        userId
    }
    class Accounts{
        Account_Info
        Compatible_bundles
        Customer_account
    }
    class Account_Info{
        accountId
    }
    class Compatible_bundles{
        accountId
    }
    class Customer_account{
        userId
    }
    class Subscriptions {
        Subscription_Info
        Replace_SIM
        Recharge_Details
        in_flight_mobile_subscription
    }
    class Subscription_Info{
        subscriptionId
    }
    class Replace_SIM{
        subscriptionId
    }
    class Recharge_Details{
        subscriptionId
        start_date
        end_date
    }
    class in_flight_mobile_subscription{
        subscriptionId
        motive_id
    }

Now, we are going to see an overview of how the photo would look with all the fields integrated with each other and their method possibilities.

classDiagram
    Signups --|> User
    User --|> Accounts
    Accounts --|> Subscriptions
    Accounts .. Invoices
    Accounts .. Terms
    Accounts .. Payment_Info
    Subscriptions .. Account_migrations
    Signups .. Account_migrations : Bundle migration
    Subscriptions .. Products
    Subscriptions .. Services
    Subscriptions .. Bonuses
    Subscriptions .. Promotions
    Accounts .. Promotions : Get promotions
    Subscriptions .. Barrings
    Subscriptions .. Consumption_Balance
    class Signups {
        Post new_client
        Get master_data_information
        Get availables_msisdns_by_network
        Get simcard_ICC
        Post register_sell_payment
        Activate SIM_card
        Add new_subscription_to_bundle
    }
    class User {
        Get customer_tree_by_client_info
        Get customer_full_tree
        Get user_detail
        Update user_data
        Get expedition_user_details
        Update expedition_user_details
        Agile TV_change_email_subscription
    }
    class Accounts {
        Get account_information
        Get compatible_bundles
        Get customer_accounts
    }
    class Subscriptions {
        Get subscription_info
        Replace sim_icc_to_a_new_one
        Get recharge_details
        Cancel in-flight_mobile_subscription
    }
    class Invoices {
        Get invoices_list
    }
    class Terms {
        Get Account_Terms
    }
    class Payment_Info {
        Get payment_info
        Update payment_info
    }
    class Account_migrations {
        Add Subscription_to_new_account
        Add Subscription_to_existing_account
        Migrate Prepaid_to_new_postpaid_account
        Prepaid subscription_to_postpaid_existing_account
        Postpaid subscription_to_new_prepaid_account
        Postpaid subscription_to_prepaid_existing_account
        Bundle migration
    }
    class Products{
        Get info_products
        Update subscription_product
    }
    class Services{
        Get info_services
        Update aservice_status
    }
    class Bonuses{
        Get bonus_info
        Add new_bonus
        Delete bonus
    }
    class Promotions{
        Get promotions
        Add new_promotion_to_subscription
        Delete promotion_of_a_subscription
    }
    class Barrings{
        Get blocks_info
        Update SIM_Status_to_Blocked_or_Unblocked
        Patch MasBarrings_call
    }
    class Consumption_Balance{
        Get prepaid_balance
        Get consumption_details
        Get consumption_limit
        Set consumption_limit
        Delete consumption_limit
    }
    class Workorders{
        Post changeOrder_mysimWS's_calls
    }

Next steps to this section can be seen in Signup’s site.