The FetchMSRN feature retrieves the MSRN (Mobile Subscriber Roaming Number) and the VLR number from the HLR. The FetchMSRN feature derives the Circuit Switched Routing Number (CSRN) from the MSRN and stores the CSRN in session state.
Feature Cheat Sheet
B2BUA Instance | SAS Support | Originating / Terminating | Point(s) in Session Plan | Network Operator Data | Subscriber Data | Stateful or Stateless | POJO Feature or SBB Feature | Other notes |
---|---|---|---|---|---|---|---|---|
SCC |
Yes |
Terminating |
|
Yes |
No |
Stateless |
SBB |
Session input variables
Variable name | Type | Comments |
---|---|---|
RegistrationRecords |
List<RegistrationRecord> |
The list of registration records for the subscriber, used to find the subscriber’s identity for the HLR lookup. |
SentinelSelectionKey |
SentinelSelectionKey |
Used to retrieve configuration data for the feature. |
Subscriber |
String |
Used to obtain the subscriber’s identity if it could not be determined from the registration data. |
RoutingMode |
TADSRoutingMode |
|
TADSCurrentLegType |
LegType |
|
ChargeMode |
ChargeMode |
|
CompanionDevices |
List<CompanionDevice> |
Used to obtain MSRNs corresponding to MSISDNs of any companion devices |
Session output variables
Variable name | Type | Comments |
---|---|---|
CSRN |
String |
The CSRN of the served user, if the feature could derive it. |
HasCSRN |
boolean |
Indicating whether the CSRN session state field has been populated. |
CallReferenceNumber |
byte[] |
The Call Reference Number used in the SRI request to the HLR. |
VLRNumber |
AddressString |
The VLR number for the served user, if the feature could retrieve it. |
FetchedMSRN |
boolean |
Indicates whether the MSRN was fetched successfully. |
TADSHLRSuccess |
boolean |
Indicates whether the HLR returned a |
CompanionDeviceMSRNs |
List<String> |
MSRNs retrieved for the MSISDNs of the companion devices |
CompanionDeviceCSRNs |
List<String> |
CSRNs derived from the |
The CSRN is the MSRN , with an optional prefix (defined in feature configuration)
|
Network Operator Data
The FetchMSRN feature depends on network operator data in two configuration profile tables. One is for feature specific configuration, the other is for general HLR connection configuration.
Feature Configuration
Feature specific configuration is set in a profile table called: SCCFetchMSRNConfigProfileTable
.
Profiles are scoped on Sentinel Selection Key.
SCCFetchMSRNConfigProfileTable
Attribute | Type | Default Value | Meaning |
---|---|---|---|
SuppressTcsi |
boolean |
true |
If enabled the feature will set the |
ForceSipUserEqualsPhone |
boolean |
false |
If true, when attempting to extract a number from a SIP URI, the feature will extract a number even if the URI does not have the |
TerminatingSuppressionOfAnnouncement |
boolean |
false |
If true, will set the |
CSRNPrefix |
String |
null |
The (optional) prefix to be added to the MSRN to form the CSRN |
HLR Connection Configuration
The FetchMSRN feature uses the common HLR configuration profile table. See this page for details: HLR MAP Configuration.
Statistics
FetchMSRN statistics are tracked by the FetchMSRN
SBB and can be found using the parameter set SLEE-Usage.Services.ServiceID[name=sentinel.volte.sip,vendor=OpenCloud,version=4.1].SbbID[name=scc-fetch-msrn-feature,vendor=OpenCloud,version=4.1]
Or in REM under the following parameter sets:
SLEE-Usage → Services → sentinel.volte.sip service → scc-fetch-msrn-feature SBB
Parameter | Type | Description |
---|---|---|
Started |
Counter |
Incremented when the feature is invoked. |
Failed |
Counter |
Incremented when a fatal error has occurred. |
RequestSent |
Counter |
Incremented when a request is sent to the HLR. |
RequestFailed |
Counter |
Incremented when a MSRN is not received from the HLR. |
RequestReceivedAbsentSubscriber |
Counter |
Incremented if the HLR indicates that the requested subscriber is not CS attached. |
RetrievedMSRN |
Counter |
Incremented when an MSRN is received from the HLR. |
CSRNDetermined |
Counter |
Incremented when a CSRN could be determined |
CSRNNotDetermined |
Counter |
Incremented when a CSRN could not be determined |
OverwritingCSRN |
Counter |
Incremented when CSRN is already set in session state and is overwritten with the MSRN |
ResponseLatency |
Sampled |
Records elapsed time between sending the request to the HLR and getting a response (in milliseconds). |
Behaviour
if FetchedMSRN
session state field is set, the feature finishes with no further processing.
If the feature has not previously run on this session then if none of the following conditions are true it does not need to run and the feature finishes with no further processing
-
RoutingMode
session state field isPARALLEL
-
TADSCurrentLegType
session state field isCS
-
ChargeMode
session state field isCAP
.
Otherwise, the feature has previously run on this session. If either of the following conditions are true, then it does not need to run again and the feature finishes with no further processing
-
RoutingMode
session state field isPARALLEL
-
There are no more companion device MSRNs to be fetched, in the
FetchedMSRNLegs
session state field, which in the non parallel case is actually the MSISDNs of the as yet unfetched legs.
If not done in a previous invocation of the feature, the feature builds a list of subscriber numbers as follows and saves it in FetchedMSRNLegs
session state field.
-
the first value is the "digits" portion of the IMS default public ID of the Served user from the first entry in the
RegistrationRecords
session state field. If this field does not contain digits, the "digits" portion of the subscriber ID is used. Note that the feature does not use the entire ID, only the digits portion. Specifically, the feature will use the numbers in a Tel URI, or the user part of a SIP URI that has the 'user=phone' parameter ifForceSipUserEqualsPhone
is false, or the user part of a SIP URI without the 'user=phone' parameter ifForceSipUserEqualsPhone
is true. -
subsequent values, if any, are the MSISDNs of any companion devices where the radio access is CS or PS_CS.
If session state field RoutingMode
is PARALLEL
then
-
the feature issues an SRI request to the HLR for each subscriber as below
-
once all responses are received (or failed), the feature finishes.
Otherwise
-
the feature issues an SRI request to the HLR for the first subscriber in
FetchedMSRNLegs
session state field as below, and removes that subscriber from the session state field -
once a response (or failure) is received, the feature finishes
-
SCC T-ADS Routing features will subsequently clear the
FetchedMSRN
session state field as necessary and trigger this feature to re-run in order to process subsequent subscribers sequentially.
Sending SRI and processing SRI-Response
The feature builds a query to the HLR for the MSRN using the MAP operation Send Routing Info
.
The MAP Application Context used is locationInfoRetrievalContext_v3_ac
.
While building the HLR request the feature will generate a Call Reference Number used in the SRI. This is then put into a header on the incoming INVITE (from where it is copied as part of the outgoing INVITE) called OC-IM-CallReferenceNumber as well as saved in session state (for inclusion in CDRs).
If the feature configuration option SuppressTcsi
is enabled, then the Suppress_T_CSI
flag will be set in the CamelInfo on the request.
This will prevent the VLR number from being included in the response.
The FetchedMSRN
session state field is set to true
to prevent the feature repeating the SRI request(s).
The feature issues the query to the HLR.
The HLR may return either a failure response, or a SendRoutingInfo-Res response containing the MSRN in the field ExtendedRoutingInfo.
If the feature is able to find an MSRN in the returned set, it increments the RequestSuccessful counter, and modifies the output session state variables. If there is a VLR number in the returned set, this will also be output to a session state variable.
If the returned set is empty, the feature increments the RequestFailed counter, and does not modify any output session state variables.
If the HLR returns a failure response, the feature increments the RequestFailed counter, and does not modify any output session state variables.