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
| Service | Role | Reason |
|---|---|---|
| Mobile Base | PRIMARY | Creates billable subscription |
| MSN Standard/Gold/Silver | INVENTORY | Allocates MSISDN from pool |
| SIM Physical/eSIM | INVENTORY | Allocates SIM from pool |
| Mobile Data 25GB | ADDON | Adds data functionality (no inventory) |
| Voicemail | ADDON | Adds voicemail functionality |
| Device Handset/Tablet | INVENTORY | Allocates device from pool |
| Number Registry AU/NZ | REGISTRY | Regulatory compliance tracking |
| International Roaming | ADDON | Adds roaming functionality |
Internet Services
| Service | Role | Reason |
|---|---|---|
| NBN Base | PRIMARY | Creates billable subscription |
| NBN Access | ADDON | Adds network connectivity (no inventory) |
| NBN AVC | ADDON | Adds NBN technical component (no inventory) |
| NBN Data 100GB | ADDON | Adds data functionality |
| Device Modem | INVENTORY | Allocates modem from pool |
| Static IP | ADDON | Adds static IP functionality |
| Speed Boost | ADDON | Adds temporary speed enhancement |
VoIP Services
| Service | Role | Reason |
|---|---|---|
| VoIP Base | PRIMARY | Creates billable subscription |
| VoIP Number | INVENTORY | Allocates VoIP number from pool |
| VoIP Data | ADDON | Adds calling plan functionality |
| Device ATA | INVENTORY | Allocates ATA device from pool |
| Voicemail | ADDON | Adds voicemail functionality |
| Call Forwarding | ADDON | Adds call forwarding feature |
Landline Services
| Service | Role | Reason |
|---|---|---|
| Landline Base | PRIMARY | Creates billable subscription |
| Landline Number | INVENTORY | Allocates landline number from pool |
| Landline Features | ADDON | Adds call features bundle |
| Caller ID | ADDON | Adds caller ID feature |
Common Mistakes
Mistake 1: Using PRIMARY for Non-Root Services
Assigning PRIMARY role to MSN service
{
code: 'SVC_MSN_STANDARD',
role: ServiceRole.PRIMARY, // ← WRONG
parentServiceTemplate: null
}
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
Assigning ADDON role to Modem service
{
code: 'SVC_DEVICE_MODEM',
role: ServiceRole.ADDON, // ← WRONG
parentServiceTemplate: 'SVC_NBN_BASE'
}
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
Assigning INVENTORY role to Data Allowance
{
code: 'SVC_MOBILE_DATA_25GB',
role: ServiceRole.INVENTORY, // ← WRONG (data is not physical resource)
parentServiceTemplate: 'SVC_MOBILE_BASE'
}
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
parentServiceTemplateset (not null) - REGISTRY services have
parentServiceTemplateset (not null) - Only ONE service per subscription is PRIMARY
- All non-PRIMARY services have parent assigned