DetermineRoamingFromHlr is responsible for reading subscriber location data from the HLR and writing it into Sentinel session state variable fields.
The data it reads from the HLR is accessed through the AnyTimeInterrogation MAP operation.
The Application Context used is anyTimeInfoEnquiryContext_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-determine-roaming-from-hlr 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-determine-roaming-from-hlr#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-determine-roaming-from-hlr, 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 state output variables
| Attribute Name | Type |
|---|---|
Description |
RoamingStatus |
Enum |
|
RoamingIndicator |
boolean |
Note: The default values for both RoamingStatus and RoamingIndicator are UNKNOWN and false respectively. If this feature is unable to determine the roaming status for any reason,
it will leave the pre-set values.
Configuration
The feature uses configuration data from both the HLR CGIN MAP Configuration and SIP Sentinel Configuration.
Statistics
DetermineRoamingFromHlr statistics are tracked by the DetermineRoamingFromHlr feature and can be found under the following parameter set:
SLEE-Usage ▶ volte.sentinel.sip service ID ▶ volte.sentinel.sip SBB ID ▶ DetermineRoamingFromHlr.
| 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). |
InternationalRoaming |
Counter |
Incremented when the feature determines that the subscriber is roaming internationally |
NotRoaming |
Counter |
Incremented when the feature determines that the subscriber is not roaming |
NationalRoaming |
Counter |
Incremented when the feature determines that the subscriber is national roaming |
RoamingDataMissingFromHlrResponse |
Counter |
Incremented whenever an ATI result comes back from Hlr with missing or invalid location information |
DialogOpenRefuseEvent |
Counter |
Incremented whenever the ATI fails due to a dialog open refuse |
DialogUserAbortEvent |
Counter |
Incremented whenever the ATI fails due to a dialog user abort |
DialogProviderAbortEvent |
Counter |
Incremented whenever the ATI fails due to a dialog provider abort |
OperationErrorEvent |
Counter |
Incremented whenever the ATI fails due to an operation error |
Behaviour
This feature uses the CGIN MAP RA to query the HLR with an ATI for subscriber location information.
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 CMSISDN session state field set by FetchCMSISDN, and if it cannot, from the Subscriber field set by SubscriberDetermination.
If the feature cannot form a MSISDN it raises a Feature Error and finishes execution.
The feature then requests subscriber location info by sending a AnyTimeInterrogation request to the configured HLR.
In order to form the ATI request the feature:
-
sets the GSM SCF address to the
SentinelSCCPAddressconfiguration value -
sets the destination SCCP address to the
HlrSCCPAddressconfiguration value -
sets the
RequestedInfoindicator field to request Location Information
If a successful result is received, it retrieves location information from the ATI result. The location information can be in either of the CellGlobalIdOrServiceAreaIdFixedLength or LaiFixedLength
fields. If neither field is present, the feature increments the RoamingDataMissingFromHlrResponse stat and finishes.
If the location information is found, the MCC and MNC are compared against the configured home network information to determine whether the subscriber is roaming or not. The RoamingStatus and RoamingIndicator session state fields are then set accordingly. Their default values in the case of incomplete information or feature failure are UNKNOWN and false respectively.
