Subscription status info

Main Concepts

These are the mas-stack resources handle by Subscriptions domain:

  • Subscription: The different services that are offered to customers are modelled as subscriptions in mas-stack. These subscriptions have common characteristics and lifecycle but specific attributes depending on its type. Subscriptions are always linked to a mas-stack customer via an account id
  • Bundle: Subscriptions are usually grouped bundles for commercial purpose, a bundle is a set of subscriptions that are sold together with specific tariff conditions and requirements as long as they are part of the same bundle
  • Promotions: Promotions are special discount that may be applied to subscriptions or bundles. These promotions have specific conditions, timeframes and commitments to be accomplished by the customer
  • Commitments: Subscriptions or promotions may have commitments associated that are required to the customer to enjoy given conditions. The breach of these commitments may lead to penalties or changes in the subscription conditions These commitments are defined at mas-stack catalogue as terms
  • Free Units packages: Subscriptions may have free units packages associated that are used to consume the service without additional cost
  • Devices: Subscriptions may have devices associated that are used to consume the service
  • Change Requests: Subscriptions can have different processes that dont impact directly in their status (change tariff for example) or must be scheduled to a future time, this entity gives response to this needs.

All these resources are the application of the products defined in the mas-stack catalogue to specific customers.

Subscription

The lifecycle of a subscription is the set of status that a subscription goes through from its creation request until its deactivation. This general subscription lifecycle is common to all subscription types regardless of the specific service they are associated with.

Besides the subscription status, some additional information about the reason why the subscription reached it could be registered in reason field.

The status of the of registered subscription can be consulted right after its creation request using endpoints of API V2. These status are applicable to any subscription regardless its type. Here you can find the status catalog:

flowchart TD
Client((Client))
Client -->|Request subscription<br> creation| Req([Requested])
Req -->|Business validations<br>are not passed| Hold([On Hold])
    Req -.-|Subscription Cancelled| Cancelled([Cancelled])
Hold --> |Business validations<br>are passed| Provisioning
    Hold -.- |Subscription Cancelled| Cancelled([Cancelled])
Req -->|Business validations<br>are passed| Provisioning([Provisioning])
    Provisioning -->|Cancel subscription request|Cancelling([Cancelling])
        Cancelling -->|Cancellation process<br>completed|Cancelled([Cancelled])
    Provisioning -->|Subscription ready<br>for service| Active([Active])
        Active --> |Deactivation Requested| Deactivating([Deactivating])
        Deactivating --> |Deactivation process<br>completed|Deactivated([Deactivated])
    Provisioning -.-|Subscription Cancelled| Cancelled([Cancelled])
StatusDescription
REQUESTEDThe subscription creation request has been registered and accepted. Provisioning process is not started yet
ON_HOLDThe subscription provisioning process is on hold because of a process dependency (e.g: fraud checks ongoing, provision conditioned to other subscription
PROVISIONINGThe subscription provisioning process has already started and is in progress, subscription service is not available yet
ACTIVEThe subscription has been successfully provisioned and the service is ready for billing
DEACTIVATINGDeactivation of the subscription has been requested and some actions are pending to complete (e.g: some devices must be collected)
DEACTIVATEDThe subscription has been deactivated and no actions related with it are pending
CANCELLINGThe subscription deactivation has been requested and some actions are pending to complete (e.g: revert some part of the provision)
CANCELLEDThe subscription creation was cancelled before its activation

Bundle

The life cycle of a bundle is the set of status that a bundle goes through from its creation request until its deactivation. This bundle status depends on the status of the subscriptions that are part of the bundle.

flowchart TD
Client((Client))
Client -->|Request bundle<br> creation| Req([Requested])
Req --> Active([Active])
Active([Active]) -.->|Cancellation process<br>completed|Cancelled([Cancelled])
Active([Active]) -.->|Deactivation process<br>completed|Deactivated([Deactivated])
StatusDescription
REQUESTEDThe bundle creation request has been registered and accepted. Provisioning process of all the contained subscriptions is not started yet
ACTIVEAt least one of the subscriptions of the bundle is active
DEACTIVATEDThe bundle has been deactivated and no actions related with it are pending
CANCELLEDThe bundle creation was cancelled before its activation and no actions related with it are pending

Promotion

The life cycle of a promotion is the set of status that a promotion goes through from its creation request until its expiration or deactivation. This promotion status depends on the status of the subscriptions or bundles they are associated with.

flowchart TD
Client((Client))
Client -->|Request promotion<br> creation| Req([Requested])
Req --> |Parent<br>subscription/bundle<br>is cancelled| Cancelled([Cancelled])
Req --> Ready{Parent<br>subscription/bundle<br>is active?}
Ready -->|No| Req
Ready -->|Yes| Active([Active])
Active --> |Parent<br>subscription/bundle<br>is deactivated|Deactivated([Deactivated])
Active --> |Expiration time<br>reached|Expired([Expired])
StatusDescription
REQUESTEDThe promotion creation request has been registered and accepted. Provisioning process of the linked subscription/bundle is not completed yet
ACTIVEThe subscription or bundle linked to the promotion is active and the promotion is being applied
EXPIREDThe promotion has reached its expiration date and is no longer applied to the linked subscription/bundle
DEACTIVATEDThe promotion has been deactivated manually before expiration date
CANCELLEDThe promotion has been cancelled before its activation

Change Request

The lifecycle of a change request begins when it is requested and ends when it is processed, cancelled or it fails. Additionally, a change request may depend on another request, which we refer to as the main change request.

Additionally, it is possible to schedule a change request for the future, which will remain pending until the processing date arrives.

flowchart TD
Client((Client))
Client -->|Change request creation| Req([Requested])
Req -->|Change request waiting for <br> scheduled time  or main <br> change request dependency| Hold([On Hold])
    Req  -.- |Change request Cancelled| Cancelled([Cancelled])
Hold --> |Change request <br> in progress| InProgress([In progress])
    Hold -.- |Change request Cancelled| Cancelled([Cancelled])
InProgress([In progress]) -->|Change request <br> finished| Finished([Finished])
    InProgress([In progress]) -->|Change request <br> failed| Failed([Failed])

Status Change Reasons

The status change of a subscription or bundle can be triggered by different reasons. These reasons are registered in the reason field associated to subscription and bundle events. These are the possible reasons depending on the status and the resources it can be associated to

REQUESTED/PROVISIONING/ACTIVE

These reasons are applicable to status that are in the process of being provisioned or are already active

ReasonDescription
BUNDLE_SALEThe origin of the subscription/bundle is a new bundle sale
BUNDLE_MIGRATIONThe subscription/bundle comes from a bundle migration
SUBSCRIPTION_ADDED_TO_BUNDLEThe subscription is new and has been added to an existing bundle
CONTRACT_MIGRATIONThe subscription/bundle comes from a contract migration
CUSTOMER_CHANGEThe subscription/bundle comes from a customer change
ACCOUNT_MIGRATIONThe subscription/bundle has been moved from one account to another
PREPAID_TO_POSTPAIDThe subscription has just changed from prepaid to postpaid
POSTPAID_TO_PREPAIDThe subscription has just changed from postpaid to prepaid
ADDRESS_AND_TECH_CHANGEThe subscription/bundle comes from an address change involving a tech change
ADDRESS_CHANGEThe subscription comes from an address change without tech change
TECH_CHANGEThe subscription comes from a tech change
PROVISIONING_ISSUEThe subscription provisioning process fails in third party system
UNKNOWNThe status change of the bundle is unknown, typically due to legacy systems

ON_HOLD

These reasons are applicable to status ON_HOLD and indicates there is some temporary blocker

ReasonDescriptionBilling Type
FRAUD_CHECK_ONGOINGThe process is on hold because of fraud checksPostpaid
MAIN_SUBSCRIPTIONS_PENDINGMain subscriptions required in same bundle are pending to be activatedPostpaid
INSTALLATION_PENDINGThe subscription progress depends on the installation processPostpaid
LOGISTIC_PENDINGThe subscription progress depends on the logistic processPostpaid
PENDING_PAYMENTThe subscription progress depends on the payment processPrepaid
SUSPENDEDThe subscription service has been suspendedPrepaid
UNKNOWNThe status change of the bundle is unknown, typically due to legacy systemsBoth

CANCELLING/CANCELLED/DEACTIVATING/DEACTIVATED

These reasons are applicable to status that are in the process of being deactivated or are already deactivated

ReasonDescriptionBilling Type
SUBSCRIBER_RESIGNATIONThe subscription has been cancelled by subscriber requestBoth
BUNDLE_CANCELLATIONThe whole bundle has been cancelledBoth
BUNDLE_DEACTIVATIONThe whole bundle has been deactivatedBoth
FRAUD_CHECK_REJECTIONThe subscription has been cancelled because because it does not pass fraud check or scoringPostpaid
ACCOUNT_MIGRATIONThe subscription has been cancelled/deactivated in the bundle of current account and created in a new oneBoth
OTHERThe subscription has been cancelled/deactivated for unknown or legacy reasonsBoth
PROVISIONING_ISSUEThe subscription activation/deactivation fails because of provisioning issuesBoth
PAYMENT_ERRORThe subscription payment process failsPrepaid
UNKNOWNThe status change of the bundle is unknown, typically due to legacy systemsBoth
DEACTIVATED_ON_THIRD_PARTYThe subscription is already deactivated at the third-party providerBoth