This feature delivers a Short Message towards the MSC or SGSN, performing TCAP application context negotiation as necessary
Feature cheat sheet
Feature Name | Network Operator Data | Used in PlanId(s) | Stateful or Stateless | POJO Feature or SBB Feature |
---|---|---|---|---|
IPSMGWCSDelivery |
No |
MTFSM_CS,MTFSM_CS_PS,MTFSM_PS_CS |
Stateful |
POJO |
MAP Phases and Application Contexts
The feature can be triggered by MAP Forward Short Message on the terminating path, for MAP Phases 1, 2 and 2+.
This is referred to as MT Forward Short Message
or MT-FSM for short.
The MAP Phases 1, 2 and 2+ are sometimes referred to as "v1, v2 and v3" however such language is not strictly correct.
From a TCAP Application Context perspective:
-
MAP Phase 2 defines
shortMsgMT_RelayContext_v2_ac
- this is sometimes referred to as "v2" -
MAP Phase 2+ defines
shortMsgMT_RelayContext_v3_ac
- this is sometimes referred to as "v3" -
and MAP Phase 1 does not use a TCAP Application Context. In the software this case is represented by a synthetic application context
shortMsgMT_RelayContext_v1_ac
. It is synthetic because it does not exist on the wire. This case is sometimes referred to as MAP "v1".
Statistics
IPSMGWCSDelivery statistics are tracked by the sentinel.ipsmgw SBB
and can be found under the following parameter set in REM:
SLEE-Usage → sentinel.ipsmgw service → sentinel.ipsmgw SBB → feature → IPSMGWCSDelivery
or with rhino-stats:
"SLEE-Usage.Services.ServiceID[name=sentinel.ipsmgw,vendor=OpenCloud,version=4.1].SbbID[name=sentinel.ipsmgw,vendor=OpenCloud,version=4.1].feature.IPSMGWCSDelivery"
Name | Description |
---|---|
AttemptedV1Open |
Incremented when the feature has sent an OpenRequestV1. This corresponds to receipt of a TCAP TC_BEGIN without an Application Context. |
AttemptedV2Open |
Incremented when the feature has sent an OpenRequestV2. This corresponds to a TCAP TC_BEGIN with an Application Context from MAP Phase 2. |
AttemptedV3Open |
Incremented when the feature has sent an OpenRequestV3. This corresponds to receipt of a TCAP TC_BEGIN with an Application Context from MAP Phase 2+. |
FallbackToV1 |
Incremented when the feature has received an U-Abort instructing fallback to MAP Phase 1. |
FallbackToV2 |
Incremented when the feature has received an U-Abort instructing fallback to MAP Phase 2. |
FallbackToPS |
Incremented when the CS delivery fails. It attempts to fall back to PS. |
SuccessfullyDeliveredV1 |
Incremented when the MSC responds to a v1 MTFSM with an error-less dialog close. |
SuccessfullyDeliveredV2 |
Incremented when the MSC responds to a v2 MTFSM with an error-less dialog close. |
SuccessfullyDeliveredV3 |
Incremented when the MSC responds to a v3 MTFSM with an error-less dialog close, optionally with an MTFSM-res. |
CSDeliverySuccessful |
Incremented when the delivery through v1, v2, or v3 is successful. |
ErrorDeliveringV1 |
Incremented when the MSC responds to a v1 MTFSM with an error. |
ErrorDeliveringV2 |
Incremented when the MSC responds to a v2 MTFSM with an error, or when the MSC responds to a v2 dialog open with a refuse that does not indicate negotiation is possible. |
ErrorDeliveringV3 |
Incremented when the MSC responds to a v3 MTFSM with an error, or when the MSC responds to a v3 dialog open with a refuse that does not indicate negotiation is possible. |
CSDeliveryFailed |
Incremented when a dialogue open request or an MTFSM cannot be created, or the delivery through v1, v2, or v3 has failed. |
FailedToSendOpen |
Incremented when the feature has failed to send any version of OpenRequest. |
FailedToSendMTFSM |
Incremented when the MTFSM cannot be sent after the dialog has been accepted. |
SentReportSMDeliveryStatus |
Incremented when the feature has sent ReportSMDeliveryStatus request to HLR. |
FailedToSendReportSMDeliveryStatus |
Incremented when the feature has failed to generate ReportSMDeliveryStatus request |
ReportSMSucceeded |
Incremented when the HLR responds to a ReportSMDeliveryStatus request with an error-less dialog close. |
ReportSMFailed |
Incremented when the HLR responds to a ReportSMDeliveryStatus request with an error. |
SystemError |
Incremented when the feature sends a generated SystemError as a response to the SMSC. |
Configuration
The feature is configured with configuration scoped according to a Sentinel Selection Key.
Two Profile Tables are used for configuration.
The first profile Table used to hold feature configuration is Shared Configuration Profile
.
The following attributes are used:
Attributes | Type | Meaning |
---|---|---|
SentinelOriginatingAddress |
String |
The OriginatingAddress used to represent Sentinel when sending the forwardSM on to the destination MSC |
InvokeTimeout |
Long |
Timeout in ms when invoking MAP operations, for example 5000ms. |
DeliveryOrder |
Enum |
If PS Delivery will run after CS Delivery, there is no need to send error report to SMSC on CS delivery failure |
UseMsisdnAsHlrAddress |
Boolean |
Controls whether to address the outbound HLR leg using a GT address formed from the subscriber MSISDN, instead of using the configured |
TemplateSmscAddress |
String |
Contains a Template SMSC SCCP Address, where the digits are replaced by the received SMSC address |
The second Profile Table used to hold feature configuration is IPSMGWCSDeliveryConfigProfileTable
.
The following attributes are used:
Attributes | Type | Meaning |
---|---|---|
DeliveryFallbackAvoidanceCodes |
int[] |
A list of error codes that if matched from the SM-DeliveryFailure will stop a PS fallback |
Behaviour
This feature is responsible for Circuit Switched delivery of a Short Message.
CS delivery is triggered in two ways:
-
Upon receipt of a ForwardSM message from the SMSC if a CS_ONLY or CS_THEN_PS
DeliveryOrder
is specified in Shared Configuration Profile -
A failed PS Delivery attempt where
DeliveryOrder
is PS_THEN_CS
After validating configuration and session state inputs, the CS Delivery feature takes the received ForwardSM (regardless of whether or not PS Delivery was attempted) and begins the TCAP Application Context Negotiation Flows.
ForwardSM
The feature uses the negotiated dialog for delivery of the ForwardSM, as described below:
CS_ONLY or PS_THEN_CS
When the DeliveryOrder
specified in Shared Configuration Profile is CS_ONLY or PS_THEN_CS, for a ForwardSM sent to MSC:
If | Then | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Charging is performed and returns a failure |
Error returned to SMSC in MT-FSM response |
||||||||||
Context negotiation fails |
System Error or OpenRefuse sent to SMSC |
||||||||||
MSC replies with Success |
ForwardSM Success sent to SMSC |
||||||||||
PS_THEN_CS delivery HLR replies with SendRoutingInfo Error |
ForwardSM AbsentSubscriber Error sent to SMSC and ReportSMDeliveryStatus sent to HLR with SM-DeliveryOutcome=absentSubscriber |
||||||||||
MSC replies with Error |
ForwardSM Error sent to SMSC
|
CS_THEN_PS
When the DeliveryOrder
specified in Shared Configuration Profile is CS_THEN_PS, for a ForwardSM sent to MSC:
If | Then | ||||||
---|---|---|---|---|---|---|---|
Charging is performed and returns a failure |
Error returned to SMSC in MT-FSM response |
||||||
Context negotiation fails |
PS-Delivery is initiated |
||||||
MSC replies with Success |
ForwardSM Success sent to SMSC |
||||||
MSC replies with Error other than a |
PS-Delivery is initiated
|
||||||
MSC replies with a |
|
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
MSISDN |
String |
The MSISDN to use in the ReportSMDeliveryStatus operation, and to use for GT routing if configured |
Unable to send ReportSMDeliveryStatus messages, and to route on GT if configured |
|
SRI4SMResAppContext |
String |
One of the following values |
This identifies the version of the saved SRI4SM to extract the MSC address from. |
NoRoutingInfoException: "Unable to fetch SRI from session state" |
SRI4SMResV1 |
MAPSendRoutingInfoForSMRes |
The full SRI4SMResV1 message |
Used to extract the MSC address from |
NoRoutingInfoException: "Unable to fetch SRI from session state" |
SRI4SMResV2 |
MAPSendRoutingInfoForSMRes |
The full SRI4SMResV2 message |
Used to extract the MSC address from |
NoRoutingInfoException: "Unable to fetch SRI from session state" |
SRI4SMResV3 |
MAPRoutingInfoForSM_Res |
The full SRI4SMResV3 message |
Used to extract the MSC address from |
NoRoutingInfoException: "Unable to fetch SRI from session state" |
MTFSMDeliveryOrder |
com.opencloud.sentinel.ipsmgw.shared.config.profile.DeliveryOrder |
One of |
Current DeliveryOrder based on configuration and available routing info, correpsonding to current selection key plan Id. |
Schedule MTFSM error response assuming that PS Delivery will not be attempted |
Only one of SRI4SMResV1, SRI4SMResV2, or SRI4SMResV3 will ever have any data in it. |
Outputs
Name | Type | Description |
---|---|---|
CSDeliveryAttempted |
boolean |
True if an OpenRequest was sent out in a delivery attempt |
CSDeliveryFailed |
boolean |
True if the feature failed to do a successful delivery for any reason |
FallbackAllowed |
boolean |
True if no SM-DeliveryFailure was received, or if the error cause in the SMDeliveryFailure was not a configured 'DeliveryFallbackAvoidanceCodes' value |
SM Delivery Failure Cause Mappings
These are the SM-EnumeratedDeliveryFailureCause
values that may used in the feature’s DeliveryFallbackAvoidanceCodes
configuration.
Other values may be configured but are unlikely to appear in a SM-DeliveryFailure
message.
Cause | Value |
---|---|
|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |