Skip to main content

Service Role Decision Tree

Purpose: Determine the correct ServiceRole for a new service.


Decision Tree

flowchart TD
Start[New Service] --> Q1{Does this service create<br/>a billable subscription?}
Q1 -->|Yes| PRIMARY[Role: PRIMARY]
Q1 -->|No| Q2{Does this service allocate<br/>a physical or logical resource<br/>from inventory?}
Q2 -->|Yes| Q3{What type of resource?}
Q3 -->|Phone number| INVENTORY_MSN[Role: INVENTORY<br/>Example: MSN, VOIP_NUMBER]
Q3 -->|SIM card| INVENTORY_SIM[Role: INVENTORY<br/>Example: SIM_PHYSICAL, SIM_ESIM]
Q3 -->|Device| INVENTORY_DEVICE[Role: INVENTORY<br/>Example: MODEM, HANDSET, ATA]
Q2 -->|No| Q4{Is this service for<br/>regulatory/compliance tracking?}
Q4 -->|Yes| REGISTRY[Role: REGISTRY<br/>Example: NUMBER_REGISTRY]
Q4 -->|No| ADDON[Role: ADDON<br/>Example: DATA, VOICEMAIL, FEATURES]

style PRIMARY fill:#4CAF50
style INVENTORY_MSN fill:#2196F3
style INVENTORY_SIM fill:#2196F3
style INVENTORY_DEVICE fill:#2196F3
style ADDON fill:#FF9800
style REGISTRY fill:#9C27B0

Detailed Decision Criteria

Question 1: Does this service create a billable subscription?

Yes → PRIMARY role

Characteristics:

  • Creates billing account
  • Customers purchase this service directly
  • No parent service (is root)
  • Examples: Mobile Base, NBN Base, VoIP Base, Landline Base

Test: Can customer buy this service standalone? If yes, PRIMARY.


Question 2: Does this service allocate a resource from inventory?

Yes → INVENTORY role

Characteristics:

  • Requires inventory pool (MSN pool, SIM pool, device pool)
  • Has serial number, ICCID, MSISDN, or similar identifier
  • Physical or logical resource allocation
  • Cannot exist without inventory allocation
  • Examples: MSN, SIM, Modem, Device, VoIP Number, Landline Number

Test: Does activation require checking inventory availability? If yes, INVENTORY.


Question 3: Is this service for regulatory/compliance tracking?

Yes → REGISTRY role

Characteristics:

  • Tracks regulatory compliance (IPND, TESA, etc.)
  • No inventory allocation
  • References other services (e.g., MSN for phone number)
  • No carrier notification (regulatory, not operational)
  • Examples: NUMBER_REGISTRY_AU_IPND, NUMBER_REGISTRY_NZ_TESA

Test: Is this service required for legal/regulatory compliance only? If yes, REGISTRY.


Default: ADDON role

Characteristics:

  • Adds functionality or capacity
  • No inventory requirement
  • No regulatory tracking
  • Examples: Data Allowance, Voicemail, Speed Boost, Call Features

Test: If none of the above criteria match, use ADDON.


Examples by Service Type

Mobile Services

ServiceRoleReason
Mobile BasePRIMARYCreates billable subscription
MSN Standard/Gold/SilverINVENTORYAllocates MSISDN from pool
SIM Physical/eSIMINVENTORYAllocates SIM from pool
Mobile Data 25GBADDONAdds data functionality (no inventory)
VoicemailADDONAdds voicemail functionality
Device Handset/TabletINVENTORYAllocates device from pool
Number Registry AU/NZREGISTRYRegulatory compliance tracking
International RoamingADDONAdds roaming functionality

Internet Services

ServiceRoleReason
NBN BasePRIMARYCreates billable subscription
NBN AccessADDONAdds network connectivity (no inventory)
NBN AVCADDONAdds NBN technical component (no inventory)
NBN Data 100GBADDONAdds data functionality
Device ModemINVENTORYAllocates modem from pool
Static IPADDONAdds static IP functionality
Speed BoostADDONAdds temporary speed enhancement

VoIP Services

ServiceRoleReason
VoIP BasePRIMARYCreates billable subscription
VoIP NumberINVENTORYAllocates VoIP number from pool
VoIP DataADDONAdds calling plan functionality
Device ATAINVENTORYAllocates ATA device from pool
VoicemailADDONAdds voicemail functionality
Call ForwardingADDONAdds call forwarding feature

Landline Services

ServiceRoleReason
Landline BasePRIMARYCreates billable subscription
Landline NumberINVENTORYAllocates landline number from pool
Landline FeaturesADDONAdds call features bundle
Caller IDADDONAdds caller ID feature

Common Mistakes

Mistake 1: Using PRIMARY for Non-Root Services

Incorrect

Assigning PRIMARY role to MSN service

{
code: 'SVC_MSN_STANDARD',
role: ServiceRole.PRIMARY, // ← WRONG
parentServiceTemplate: null
}
Correct

MSN is INVENTORY (allocates resource)

{
code: 'SVC_MSN_STANDARD',
role: ServiceRole.INVENTORY, // ← CORRECT
parentServiceTemplate: 'SVC_MOBILE_BASE'
}

Rationale: Only root services (billable subscriptions) should be PRIMARY. MSN allocates phone number from inventory pool → INVENTORY role.


Mistake 2: Using ADDON for Inventory Services

Incorrect

Assigning ADDON role to Modem service

{
code: 'SVC_DEVICE_MODEM',
role: ServiceRole.ADDON, // ← WRONG
parentServiceTemplate: 'SVC_NBN_BASE'
}
Correct

Modem is INVENTORY (allocates device)

{
code: 'SVC_DEVICE_MODEM',
role: ServiceRole.INVENTORY, // ← CORRECT
parentServiceTemplate: 'SVC_NBN_BASE'
}

Rationale: Modem requires device pool allocation (serial number, model, etc.) → INVENTORY role.


Mistake 3: Using INVENTORY for Non-Physical Resources

Incorrect

Assigning INVENTORY role to Data Allowance

{
code: 'SVC_MOBILE_DATA_25GB',
role: ServiceRole.INVENTORY, // ← WRONG (data is not physical resource)
parentServiceTemplate: 'SVC_MOBILE_BASE'
}
Correct

Data Allowance is ADDON (adds functionality)

{
code: 'SVC_MOBILE_DATA_25GB',
role: ServiceRole.ADDON, // ← CORRECT
parentServiceTemplate: 'SVC_MOBILE_BASE'
}

Rationale: Data allowance doesn't require inventory allocation (no serial number, pool, etc.) → ADDON role.


Validation Checklist

After determining service role, verify:

  • PRIMARY services have parentServiceTemplate = null
  • INVENTORY services have inventory pool configured
  • ADDON services have parentServiceTemplate set (not null)
  • REGISTRY services have parentServiceTemplate set (not null)
  • Only ONE service per subscription is PRIMARY
  • All non-PRIMARY services have parent assigned