The FetchIMCSI feature retrieves CAMEL Subscription Information (CSI) from the HLR for charging purposes .
Feature cheat sheet
Feature Script Name |
FetchIMCSI |
---|---|
MMTel or SCC |
Both |
Call-Type |
Orig or Term |
Session Plan |
mmtel-orig, scc-tads-only |
Execution Points |
SipAccess_SubscriberCheck |
Network Operator Config |
Yes |
Subscriber Config |
No |
POJO or SBB |
POJO |
Feature FSMs |
None |
Feature Parameters |
None |
SAS Support |
Yes |
RA Entity Links |
sentinel-sis-in-hlr |
Network Operator Data
The FetchIMCSI feature depends on configuration from four profile tables:
-
The
FetchIMCSIConfigProfileTable
provides the basic configuration for the feature. -
The
FetchIMCSIFeatureServiceKeyProfileTable
provides mapping between orig and term service keys. -
The
HLRConfigProfileTable
provides configuration for sending requests to the HLR. -
The
CapChargingConfigProfileTable
provides configuration for how the feature should behave on non-roaming terminating calls.
FetchIMCSIConfigProfileTable
Basic feature configuration is stored on a profile table called FetchIMCSIConfigProfileTable
.
Data is scoped according to a Sentinel selection key.
Attribute Name | Type | Default | Description |
---|---|---|---|
FetchImcsiEnabledOnOrigCall |
boolean |
false |
Enables/Disables the feature for originating calls. |
RequestedTdpOnOrigCall |
int |
1 (orig), 12 (term) |
Trigger Detection Point to request on originating calls, determines whether the O-CSI or T-CSI is retrieved from the HLR. (1, 2, or 3 for O-CSI; 12 for T-CSI). |
FetchImcsiEnabledOnTermCall |
boolean |
false |
Enables/Disables the feature for terminating calls. |
RequestedTdpOnTermCall |
int |
1 (term), 12 (term) |
Trigger Detection Point to request on terminating calls, determines whether the O-CSI or T-CSI is retrieved from the HLR. (1, 2, or 3 for O-CSI; 12 for T-CSI). |
FetchIMCSIFeatureServiceKeyProfileTable
This profile table is used to provide mappings between orig and term TDP service keys. These mappings are used when the TDP requested is for a different call type (i.e. originating/terminating) than the session.
Data is scoped according to a Sentinel selection key, with a suffix which corresponds the the service key to map from.
A default
suffix can be used to define a mapping for keys that do not have specific profiles.
Attribute Name | Type | Default | Description |
---|---|---|---|
SourceServiceKey |
String |
None |
The service key to map from, or 'default' to match all service keys that do not have a more specific match for the selection key. |
TargetServiceKey |
int |
None |
The service key to map to. |
HLRConfigProfileTable
This profile table provides the configuration for connecting to the HLR. It is shared across all features that communicate with the HLR.
For more information refer to HLR MAP Configuration.
CapChargingConfigProfileTable
The feature checks a single field on the OnlyChargeTerminatingCallsIfInternationalRoaming
profile table.
This is used to determine if the feature needs to do anything on a non-roaming terminating call.
For more information refer to CapChargingConfigProfileTable.
Session Input Variables
Variable name | Type | Comments |
---|---|---|
ChargeMode |
Enum |
The feature will only run if the charge mode is |
CallType |
Enum |
Affects whether |
SentinelSelectionKey |
SentinelSelectionKey |
Affects which profiles are loaded from each configuration table. |
Session Output Variables
Variable name | Type | Comments |
---|---|---|
OcImTdpHeader |
String |
Contains the data that was retrieved from the HLR, ready for inclusion in a header on the SIP message towards the IMSSF. |
Statistics
FetchIMCSI statistics are tracked by the sentinel.volte.sip SBB
and can be found under the following parameter set in REM:
SLEE-Usage → sentinel.volte.sip service → sentinel.volte.sip SBB → feature → FetchIMCSI
or with rhino-stats:
"SLEE-Usage.Services.ServiceID[name=sentinel.volte.sip,vendor=OpenCloud,version=4.1].SbbID[name=sentinel.volte.sip,vendor=OpenCloud,version=4.1].feature.FetchIMCSI"
Statistic |
Type |
Description |
Started |
Counter |
Incremented when the feature is invoked. |
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. |
ExecutionNotRequired |
Counter |
Incremented when the feature determines that it does not need to do anything. |
RequestSent |
Counter |
Incremented when an ATSI request is sent to the HLR. |
RequestFailed |
Counter |
Incremented when no result is received after attempting to send a request. |
ReceivedATSIResult |
Counter |
Incremented when an ATSI result is received from the HLR. |
DialogOpenRefused |
Counter |
Incremented when a DialogOpenRefused event is received after attempting to send a request. |
UserAbortedDialog |
Counter |
Incremented when a UserAbortedDialog event is received after attempting to send a request. |
ProviderAbortedDialog |
Counter |
Incremented when a ProviderAbortedDialog event is received after attempting to send a request. |
OperationErrorOccurred |
Counter |
Incremented when a OperationErrorOccurred event is received after attempting to send a request. |
InvalidResponse |
Counter |
Incremented when an ATSI result is received for a request, but it does not contain the requested data. |
ServiceKeyMappingFailed |
Counter |
Incremented when a service key requires mapping, but no mapped value can be found. |
FetchedIMCSI |
Counter |
Incremented when the feature successfully retrieved CSI information from the HLR. |
AttachedToMapRequestAci |
Counter |
Incremented when the feature creates and attaches to the activity for the MAP request. |
DetachedFromMapRequestAci |
Counter |
Incremented when the detaches from the activity for the MAP request. |
ResponseLatency |
Sample |
Time from sending the ATSI request to receiving the ATSI result, sampled on receipt of the result. |
Installation
FetchIMCSI is a GSM only feature and as such will only be deployed if GSM mode is selected in the installer. Additionally the feature will only be enabled in its configuration profile if explicitly done so in the installer. The feature is only useful when CAP charging is being used, so the option to enable it will only be given by the installer if CAP charging is selected.
Behaviour
The FetchIMCSI feature retrieves the O-CSI or T-CSI data for a subscriber from the HLR. The data in the response is extracted and put into a format for use in an OC-IM-TDP SIP header, which is sent to the IMSSF when doing CAP charging.
Sending the Request
When initially triggered, the feature will construct a Any Time Subscription Interrogation (ATSI) request in order to retrieve the required data from the HLR.
Execution Conditions
Before creating the request, the feature will check that the following conditions are met:
-
The enabled flag corresponding to the call type is
true
in the feature configuration profile. -
The charge mode for the call is
CAP
-
If the call is terminating and not international roaming, the
OnlyChargeTerminatingCallsIfInternationalRoaming
config flag isfalse
.
If any of these conditions is not met, the feature will immediately finish execution without sending a request.
The ATSI Request
If the conditions are met, the feature will create the ATSI request towards the HLR.
The subscriber identity to request information for will be a digit string taken from the default public ID in the served user’s registration data.
If a digit string is not found in the default public ID, then the feature will attempt to retrieve one from the Subscriber
session state field.
If Subscriber
field also does not have an appropriate ID, then the feature will abort its attempt to create a request and record an error.
The data the feature requests from the HLR depends on the Requested TDP field corresponding to the call type in the feature configuration profile.
The request will either be for the O_CSI
or the T_CSI
according to the following table:
TDP Value | Requested Data |
---|---|
2 or 3 |
O_CSI |
12 |
T_CSI |
Once the request is created, a MAP dialog will be opened to the HLR and the request will be sent. The feature will then enter a waiting state until a response is received.
Processing the Result
On receipt of an ATSI result from the HLR, the feature will attempt to extract the information within, and format it into an OC-IM-TDP
header.
This header will be put into the OcImTdpHeader
session state field.
OC-IM-TDP Header
This header is formatted as a comma separated list of property=value
pairs.
It has the following data:
Property Name | Value |
---|---|
bcsmTriggerDetectionPoint |
|
defaultCallHandling |
|
serviceKey |
See below. |
scfAddress.address |
The address part of the |
scfAddress.nature |
The nature part of the |
scfAddress.numberingPlan |
The numbering plan part of the |
Service Key
The serviceKey
property in the final OC-IM-TDP
header has special handling.
If the requested information matches the session’s call type (i.e. O_CSI
is requested on an originating call, or T_CSI
requested on a terminating call),
then the final serviceKey
value used in the header will match the value of the ServiceKey
field in the requested TDP data in the ATSI result.
If the requested information does not match the call type, then the feature will attempt to map the service key to a different value based on the service key mapping profile.
To find the mapped value, the feature will search for a profile on the FetchIMCSIFeatureServiceKeyProfileTable
profile table.
The profile name used will be the sentinel selection key with the service key received in the ATSI result as a suffix.
Standard selection key matching will apply, where the profile with the longest matching selection key and a matching service key suffix will be used.
If no matching profile with the service key is found, then the feature will reattempt the search with default
as the suffix.
If still no profile is found, the feature will use the original, unmapped service key in the OC-IM-TDP
header.
If a profile is found, the value of the TargetServiceKey
will be used in the OC-IM-TDP
header.