SubscriberDataLookupFromHLR is responsible for reading subscriber data from the HLR and writing it into Sentinel session state variable fields.
The data it reads from the HLR is accessed through the AnyTimeSubscriberInterrogation MAP operation.
The Application Context used is anyTimeInfoHandlingContext_v3_ac
Feature cheat sheet
| B2BUA Instance | Originating / Terminating | Point(s) in Session Plan | Network Operator Data | Subscriber Data | Stateful or Stateless | POJO Feature or SBB Feature | Other notes |
|---|---|---|---|---|---|---|---|
Both or either of MMTEL or SCC. |
Originating, Forwarding, and Terminating |
|
Yes |
Yes |
Stateless |
POJO |
Source Code
This feature’s source code is available in the Sentinel VoLTE SDK in the volte-hlr-subscriber-data-lookup module pack.
It can be viewed by using the create-module command in the SDK with that module pack, for example:
> create-module new-hlr-module opencloud#volte-hlr-subscriber-data-lookup#volte/2.7.0;2.7.0.0
This command will prompt you for information needed to create the new module, once completed the original source for the feature can be found in the new module.
The module-pack consists of a single module, volte-hlr-subscriber-data-lookup, containing the feature’s code.
It does rely on the volte-map-event-handler which contains the shared event handler for MAP features and
also publishes a module pack, however the event handler will not require modification unless a new feature name is introduced.
Session input variables
| Attribute Name | Type |
|---|---|
Subscriber |
String |
RegistrationRecords |
List<RegistrationRecord> |
Configuration
The feature uses the HLRConfigProfileTable to access its configuration.
For more information refer to HLR CGIN MAP Configuration.
Statistics
SubscriberDataLookupFromHLR statistics are tracked by the SubscriberDataLookupFromHLR feature and can be found under the following parameter set: SLEE-Usage → volte.sentinel.sip service ID → SubscriberDataLookupFromHLR.
| Name | Type | Description |
|---|---|---|
Started |
Counter |
Incremented each time the feature runs |
FailedToStart |
Counter |
Incremented when sentinel VoLTE encounters an error while attempting to start the feature |
IssuedWarning |
Counter |
Incremented when a non-fatal problem is encountered and the feature issues a warning |
FailedDuringExecution |
Counter |
Incremented when a fatal problem is encountered and the feature cannot execute correctly |
TimedOut |
Counter |
Incremented when the feature takes too long to complete and Sentinel VoLTE aborts execution |
RequestSent |
Counter |
Incremented when the feature receives subscriber data from the HLR |
RequestSuccessful |
Counter |
Incremented after the feature successfully processes the data it received, and loads it into session state fields |
RequestFailed |
Counter |
Incremented when absent configuration data prevents the feature from running |
ResponseLatency |
Sampled |
Records elapsed time between sending the request to the HLR and getting a response (in milliseconds). |
Behaviour
This feature uses the CGIN MAP RA to access the HLR.
Each time the feature is invoked, it checks the call type and determines the subscriber number that it should use to query the HLR.
The feature attempts to extract "phone number digits" from the Default Public ID, and if it cannot, from any other registered IMS Public User Identity.
The first IMS Public User Identity that has "phone number digits" has its digits extracted to form the MSISDN for the AnytimeSubscriptionInterrogation query.
If the feature cannot form an MSISDN it raises a Feature Error and finishes execution.
The feature requests the subscriber data by sending a AnyTimeSubscriptionInterrogation request for all Supplementary Services.
If the triggering attempt is a terminating trigger, the feature sends two queries in order to gather the Call Forwarding information.
In order to form the ATSI request the feature:
-
sets the GSM SCF address to the
SentinelSCCPAddressconfiguration value -
sets the destination SCCP address to the
HlrSCCPAddressconfiguration value -
sets the indicator fields to request CLIP, CLIR, CW, ODB and may request Forwarding information for unconditional forwarding
If the session is a terminating session, a second request is sent where Forwarding information is requested for conditional forwarding.
Once the query(s) are successful, it sets the session state fields for the supplementary services according the mapping below.
GSM ASN.1 Schema to Session-State Fields
The mapping below describes how the AnyTimeSubscriptionInterrogation result is mapped into the MMTel Subscriber Data Representation.
ss-Status ASN.1 field
The field ss-Status is used by almost all supplementary services and defines the service state. Each service defines a set of possible values based on ss-Status, so called State Vectors.
A state vector is formed of 4 variables: Provisioning State, Registration State, Activation State and HLR Induction State.
This feature only reads the Activation State, i.e. "A and Q" bits.
For more information see 3GPP TS 23.011 - Technical realization of Supplementary Services.
CLIP
| ASN.1 Field (From) | Session-State Field (To) | Mapping Rules |
|---|---|---|
ClipData.ss-Status |
MMTelOIPServiceData.active |
|
OverrideCategory |
MTelOIPServiceData.override |
No default value. It is an obligatory field from HLR response. |
CLIR
| ASN.1 Field (From) | Session-State Field (To) | Mapping Rules |
|---|---|---|
ClirData.ss-Status |
MMTelOIRServiceData.active |
|
n/a |
MMTelOIRServiceData.mode |
the same default for IMS OIR |
ClirData.CliRestrictionOption |
MMTelOIRServiceData.defaultBehaviourType |
No default value. It is an obligatory field from HLR response. |
COLP
| ASN.1 Field (From) | Session-State Field (To) | Mapping Rules |
|---|---|---|
n/a |
MMTelTIPServiceData.active |
|
n/a |
MMTelTIPServiceData.override |
the same default for IMS TIP |
COLR
| ASN.1 Field (From) | Session-State Field (To) | Mapping Rules |
|---|---|---|
n/a |
MMTelTIRServiceData.active |
|
n/a |
MMTelTIRServiceData.mode |
the same default for IMS TIR |
ODB - Incoming calls
| ASN.1 Field (From) | Session-State Field (To) | Mapping Rules |
|---|---|---|
n/a |
MMTelICBServiceData.active |
|
ODB-Info.ODB-Data.ODB-GeneralData |
MMTelICBServiceData.ruleset |
see Ruleset Conditions for barring incoming calls |
Ruleset Conditions for barring incoming calls
| ODB Data Value | Condition |
|---|---|
allIC-CallsBarred |
Unconditional |
n/a |
Anonymous |
roamingOutsidePLMNIC-CallsBarred |
Roaming |
roamingOutsidePLMNICountryIC-CallsBarred |
Roaming and International ExHC |
ODB - Outgoing calls
| ASN.1 Field (From) | Session-State Field (To) | Mapping Rules |
|---|---|---|
n/a |
MMTelOCBServiceData.active |
|
ODB-Info.ODB-Data.ODB-GeneralData |
MMTelOCBServiceData.ruleset |
see Ruleset Conditions for barring outgoing calls |
Ruleset Conditions for barring outgoing calls
| ODB Data Value | Condition |
|---|---|
allOG-CallsBarred |
Unconditional |
internationalOGCallsBarred |
International |
internationalOGCallsNotToHPLMN-CountryBarred |
International-exHC |
roamingOutsidePLMNOG-CallsBarred |
Roaming |
Call Forwarding
| ASN.1 Field (From) | Session-State Field (To) | Mapping Rules |
|---|---|---|
callForwardingData.forwardingFeatureList[x].ss-Status |
MMTelCDIVServiceData.active |
|
callForwardingData.forwardingFeatureList.forwardingOptions |
MMTelCDIVServiceData.ruleset |
No default value defined. |
callForwardingData.forwardingFeatureList.noReplyConditionTime |
MMTelCDIVServiceData.noreplytimeout |
No default value defined. |
Ruleset Conditions for Call Forwarding
| ASN.1 value in bits 4 and 3 of Octet 1 of Ext-ForwardOptions | Condition | 00 |
|---|---|---|
Not Reachable |
01 |
Busy |
10 |
No reply |
11 |
