This guide explains how to configure and provision the Sentinel framework.

Topics

  • Getting Started — describes how to get a Sentinel Express installation up and running

  • Configuring Sentinel Services — describes the configuration options for each of the Sentinel services

  • Sentinel Components — a comprehensive description of each Sentinel component

  • Provisioning — describes how to provision Sentinel using the Sentinel Element Manager

  • Sentinel Alarms — describes the alarms raised by Sentinel

  • Charging Information — describes the format and content of CDRs, and of AVPs present in the Diameter Ro interface

For more information

Getting Started

This section explains how to set up a standalone version Sentinel Express on a Rhino SDK.

In this section…​

Preparing to Install Sentinel Express

Before you install Sentinel Express, you need to download the SDK package, and get other required software.

You can then either:

  • let the built-in installer install both the Rhino SDK and Sentinel Express, or

  • install and configure Rhino and the JVM manually, then use the installer to install Sentinel Express into your Rhino.

In both cases you need to get a license.

Allowing the installer to install both the Rhino SDK and Sentinel Express software is recommended for functional testing or experimentation with Sentinel Express. For production installs and/or load testing it is recommended to manually install and configure Rhino and the JVM.

Finally, if you are planning to install Sentinel Express on an existing OpenCloud Rhino installation, it makes sense to refer to other OpenCloud product dependencies

Download the Sentinel Express SDK package

To get the latest Sentinel Express SDK package go to https://repo.opencloud.com/artifactory/opencloud-sentinel-express-2.8.0/opencloud/sentinel-pack/2.8.0/sentinel-express-sdk/ and choose the version with the highest release number.

The SDK package contains an installer, that can install Sentinel Express as an out-of-the-box system. It is also an SDK allowing customisation of the product.

Warning You will need OpenCloud-supplied credentials to download the package.

Get required software

You’ll need the following software to run Sentinel Express:

Software Download Link Documentation Link

Java JDK 7

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Apache Tomcat 7.0.39 or greater (7.0.x series or 8.5.x series, not 9.x.x series)

http://tomcat.apache.org

Rhino 2.6.1.0 or later - optional - to be used when installing and configuring Rhino manually

Rhino 2.6.1 SDK from Artifactory

Rhino Documentation

Rhino Element Manager 2.6.1.0 or later

REM Download Page

REM Documentation

Sentinel Express SDK including out of the box installer

Sentinel Express SDK, from Artifactory

Sentinel Express SDK

(Optional) Cassandra Database, version 2.1.17 or later version from the 2.1.x series

http://cassandra.apache.org/download/

http://wiki.apache.org/cassandra/GettingStarted

Install and configure Rhino and the JVM

Optionally you can install and configure Rhino and the JVM for use with Sentinel Express. This is recommended for production deployments, and clustered setups.

Alternatively for Proof of Concept and lab functional testing it is recommended to use the Installer documented in Installing Sentinel Express Services

Install Rhino

1

Start by choosing a location to extract the contents of the Rhino package.

We’ll refer to this directory as RHINO_HOME.

2

Rhino must be started at least once to generate the necessary configuration files. To start Rhino, in the RHINO_HOME directory, execute:

$ ./start-rhino.sh

(or start-rhino.bat on Microsoft Windows).

3

Wait until Rhino is ready. It prints the following message in its log when ready:

SLEE successfully started on node(s) [101]

4

Stop Rhino by executing in the RHINO_HOME directory:

$ ./stop-rhino.sh --nice
Tip For more about installing and configuring the Rhino TAS, please see the Rhino v2.6.1 Documentation.

Configure Rhino and the JVM

If you want to install Sentinel Express on top of an already running Rhino then this step must be performed. If you are letting the installer configure the Rhino SDK for you, this step can be skipped.

The following settings are needed:

Setting Configuration

Management database size

For a full Sentinel Express install, the default Rhino 2.6.1 management database size is insufficient and should be increased to at least 300MB. To do this, edit RHINO_HOME/config/rhino-config.xml on all nodes, increasing the <committed-size> in the following section:

    <memdb>
      <jndi-name>ManagementDatabase</jndi-name>
      <message-id>10003</message-id>
      <group-name>rhino-db</group-name>
      <committed-size>300M</committed-size>
      <stripe-count>1</stripe-count>
      ...
    </memdb>

JVM

You’ll also need to configure the JVM:

  • The Rhino HEAP_SIZE setting should be set to 2048m at a minimum.

  • The recommended MAX_NEW_SIZE and NEW_SIZE setting for a Rhino node running Sentinel Express is 1/4th of the total heap size (for example, 512m when the HEAP_SIZE is 2048m).

  • The MaxPermGen size should be increased from its default, to at least 384MB. To do this in Rhino 2.4, modify the flags -XX:MaxPermSize= and -XX:PermSize= in RHINO_HOME/config/jvm_args.

All of these settings can be found in RHINO_HOME/config/config_variables after running Rhino for the first time.

Socket permissions

You will need to add the host address where the installer is running to the mlet configuration file.

  • For RhinoSDK the configuration file is RHINO_HOME/config/mlet.conf

  • For Rhino Production the configuration file is RHINO_HOME/node-xxx/config/permachine-mlet.conf

  • In the configuration file look for the XML tag <security-permission-spec> and add the following entry, replacing <IP ADDRESS> with your installer’s IP address:

<mlets>
    <mlet enabled="true">
        <classpath>
            <jar-url>$${rhino.dir.base.url}/lib/jmxr-adaptor.jar</jar-url>
            <security-permission-spec>
                .... other entries

                permission java.net.SocketPermission "<IP ADDRESS>", "accept,resolve";

                .... other entries
            </security-permission-spec>
        </classpath>
    </mlet>
</mlets>
Important
Start Rhino to load the new configuration

To start Rhino, in the RHINO_HOME directory run start-rhino.sh (or start-rhino.bat on Microsoft Windows).

This applies the Rhino and JVM configuration.

Get a license

Warning To install Sentinel Express you need a license to run SIS, CGIN, and Sentinel Express from OpenCloud. In order to obtain a license file, please contact OpenCloud.

If you allow the installer to install both Rhino SDK and Sentinel Express for you, it will prompt you for the location of the license file.

If you prefer to set up Rhino manually, then you need to install the license file prior to installing Sentinel Express.

To install your license file:

1

Make sure Rhino is started and running.

2

Go to the RHINO_HOME/client/bin directory.

3

In this directory, start the Rhino Console with the rhino-console script (or rhino-console.bat in Microsoft Windows).

4

In the Rhino Console execute, this command:

installlicense [PATH_TO_LICENSE_FILE]

([PATH_TO_LICENSE_FILE] should be relative to the RHINO_HOME/client/bin directory.)

Ports

If using the standard configuration, the following ports need to be open on the Express TAS host’s firewall.

Port Purpose

5060

SIP traffic

5061

Secure SIP traffic

8080

REM GUI

1199-1203

RMI Access

If using other configuration the firewall should be configured for those non-standard ports. Other ports may be opened as needed. For example if ssh is used to administer a node, then port 22 would be opened

OpenCloud product dependencies

Sentinel Express is built on top of other OpenCloud products. The 2.8.0 series depends on the following series:

Product Series

Rhino

2.6.1.x

REM

2.6.1.x

SIP

2.6.0.x

CGIN

2.0.0.x

SIS

2.6.1.x

SIS-EM

2.6.1.x

Diameter

3.1.1.x

CDR-RA

2.3.0.x

HTTP-RA

2.4.0.x

DB-Query-RA

1.4.0.x

FSM Tool

1.2.0.x

CQL-RA

1.1.0.x

Installing Sentinel Express Services

Sentinel Express is installed through the use of an installer program.

The installer can run in interactive and non-interactive modes - suitable for manual and automated installs respectively. When running in interactive mode it will prompt you for various necessary settings and save them.

Tip The installer will offer to install the Rhino SDK for you, or allow you to specify an existing Rhino installation. Once either a new Rhino SDK install, or an existing installation is selected the installer will install Sentinel Express into your Rhino or Rhino SDK.

The installer prepares configures for a single node Sentinel Express system.

For more advanced configurations, such as clustering, or multiple signalling peers, it is recommended the you become familiar with the Rhino platform, SIS and Sentinel Express products.

To install Sentinel Express services in interactive mode:

For further information on installation read:

1. Unzip sentinel-express-sdk.zip

To unzip sentinel-express-sdk.zip:

1

Copy the downloaded SDK zip file to a machine where Rhino and Sentinel Express will run.

Tip It’s easiest if you create a new directory in the home directory.
user@machine$ mkdir ~/sentinel-express

2

Unzip.

user@machine$ cp ~/sentinel-express-sdk.zip ~/sentinel-express
user@machine$ cd ~/sentinel-express
user@machine$ unzip sentinel-express-sdk.zip

2. Run the installer

The install program is split into several "phases".

These are:

  • initialisation of the environment

  • question and answer (in interactive mode)

  • execution of installation

Tip the installer captures full logging from the various tools that it uses, and writes these logs into the sentinel-express-sdk/build/target/log directory.

To run the installer:

1

The installer command is in the build/bin directory of the extracted Sentinel Express SDK .

testuser@machine$ cd ~/sentinel-express/sentinel-express-sdk
testuser@machine$ ./build/bin/installer

The installer first initialises the environment. It typically shows output similar to the following

Initialising the SDK ...
Retrieving Installer dependencies ... done.

2

Question and answer to determine necessary settings

The installer will prompt the user for various values. A value inside square brackets, if present, is the default answer for that question. When the user presses the Enter key without entering any value the default is used if it is present. If the default isn’t present, the prompt will be repeated. In subsequent runs of the installer, the default will reflect the values that the user has previously entered.

Explanations of all of the questions the installer will ask are laid out over the next few steps. Note that some of the questions will only appear under certain circumstances, so not all of them will be seen in a given installer run.

3

Taking the SDK offline

The user is prompted as to whether or not they want to take the SDK offline.

You can optionally take the SDK offline by creating a local repository. This will take several minutes depending on connection speed, but will make subsequent retrievals much faster and remove the need for an internet connection.
Do you want to take the SDK offline? y/[N] >

If the user presses the Enter key then the default of N is applied by the installer. This means that the SDK remains online, and will connect to the OpenCloud repositories on an as-needs basis. Answering yes will create a local Ivy repository that includes all of the remote artifacts required to build the SDK.

The user is then presented with progress information related to the downloading of artifacts necessary to take the SDK offline. This process can take more than 30 minutes.

4

Basic SDK Questions

Your organization's name, e.g. Rocket Communications Inc.
sdk.component.vendor [UNSET] >

This value will be used for the vendor portion of the SLEE Component ID for all SLEE components published by the SDK.

sdk.component.version [1.0] >

This value will be used for the version portion of the SLEE Component ID for all SLEE components published by the SDK.

The name of the platform operator, e.g. Rocket.
sdk.platform.operator.name [UNSET] >

The name of the platform operator for the system. It is used extensively throughout configuration profiles.

An Ivy organization field, recommended lower case with no whitespace e.g. "rocket".
sdk.ivy.org [UNSET] >

This value is used as the org value for all Ivy artifacts created by the SDK.

sdk.ivy.publish.revision [1.0.0] >

This value is used as the base of the revision value for all Ivy artifacts created by the SDK. When an artifact is actually published, additional letters and numbers will be appended to this number to identify specific releases, snapshots and milestones.

5

Install Rhino Questions

You can either have the installer set up a Rhino SDK for you or point it at an existing Rhino installation, SDK or production.
Note: If you want to use an existing Rhino installation it has to be running and a proper license has to be installed when finishing the installation after the configuration. Also make sure that you have adjusted the memory settings and created a tcapsim-gt-table.txt file as detailed in the documentation.
Set up a Rhino SDK installation automatically? y/[N] >

If you allow the installer to set up a new Rhino SDK installation, it will prompt for a license file.

Enter the path to your Rhino license file > /home/testuser/Downloads/opencloud.license

It then installs the Rhino SDK and starts it.

If you instruct the installer to use an existing Rhino, the installer will prompt for the path to the Rhino client directory.

Enter the path to your Rhino client directory > /home/testuser/rhino/2.4/client

If the associated installation is a Rhino production then additional information is required to complete configuration.

You can either have the installer deploy against Rhino SDK or production.
Does the specified client point to a production installation? y/[N] >

If you choose Yes, then the installer prompts for details of the cluster nodes and hosts.

Enter your Rhino node setup.
It has to be formatted like this: {nodeId,nodeId}host,{nodeId}host
Examples:
  {101}localhost
  {101,102}host1,{103}host2
Node setup [{101}localhost] > {101}hostname1,{102}hostname2

6

Review settings

Once all questions have been answered, the user is provided the opportunity to review and if happy, accept the settings. TIP: settings are saved to disk, so that they can be read later.

Review settings
***************


Basic SDK properties
====================

  sdk.component.vendor: Rocket Communications Inc
  sdk.component.version: 1.0
  sdk.platform.operator.name: Rocket
  sdk.ivy.org: rocket
  sdk.ivy.publish.revision: 1.0.0

... edited for brevity

Accept these values? [Y]/n > y

Updating file {sdk-path}/sdk.properties

Configuration changes written.

If the user presses the n key then the questions are asked again. Note that the list of configuration files that have been modified are printed out by the configuration portion.

7

Which product(s) to deploy

The user can choose which Sentinel products to deploy as part of the installation, any combination of Sentinel SIP, Sentinel SS7 and Sentinel Diameter can be specified.

This installer can be used to create deployment modules for one or more of the following Sentinel products: "diameter", "sip" and "ss7". Please enter the products you would like to deploy as a comma-separated list.
Which products do you want to deploy? [sip,ss7,diameter] >

For each option the user specifies, a deployment module will be created to deploy the specified product.

8

Sentinel SS7 with SIS

If Sentinel SS7 was one of the products selected for deployment, the user will be presented with an option to install Sentinel SS7 with SIS.

Do you want to install sentinel-ss7 with SIS? y/[N] >

If the user enters y then Sentinel Express will install and configure SIS for use with the Sentinel SS7 service.

9

Creation of a deployment module

The installer will now create the required deployment module(s). This may take several minutes.

10

Execution phase

Now that the installer has gathered all necessary information it provides the user with the option to install Sentinel Express immediately.

Install now? [Y]/n >

If the user wants to install at a later time, they can press the n key. The installer exits having saved settings that the user has entered. I.e. the installer can be run later if desired.

Installing Rhino ... done.
Starting Rhino in the background ... done.
Publishing deployment module deploy-sentinel-diameter ... done.
Publishing deployment module deploy-sentinel-sip ... done.
Publishing deployment module deploy-sentinel-ss7 ... done.

Creating deployment module deploy-sentinel ... done.
Publishing deployment module deploy-sentinel ... done.
Deploying; this is going to take a while ... done.
Binding; this is going to take a while ... done.
Configuring; this is going to take a while ... done.

Installation completed successfully in 8 minutes and 38 seconds. Rhino has been left running to finish applying configuration changes.

The installation has now completed successfully.

Important A properties file is automatically created when the interactive installer is run. This file is located in the sentinel-express-sdk directory and named install.properties. In this way an interactive installations settings are saved, and can be distributed through the install.properties file. You can later use this file for a new installation using the Non-interactive mode.

Non-interactive mode

To run the installer in non-interactive mode a properties file must be passed to the installer program.

testuser@machine$ cd ~/sentinel-express/sentinel-express-sdk
testuser@machine$ ./build/bin/installer -p my-install.properties

SIS and CGIN

During installation SIS and CGIN versions are extracted into the SDK directory structure. This is so that SIS can be configured as necessary.

The CGIN connectivity pack is extracted into the sentinel-express-sdk/cgin/cgin-connectivity-full-CGIN_VERSION directory. The SIS is extracted into the sentinel-express-sdk/sis/SIS_VERSION directory. Here CGIN_VERSION and SIS_VERSION are the release versions for each product respectively (e.g. 1.5.2.8 and 2.5.2.7)

The SIS console command is located at sentinel-express-sdk/sis/SIS_VERSION/admin/sis-console.

Background information

The installer sits on top of the Sentinel Express SDK infrastructure

The installer works by creating "deployment modules" for the products within Sentinel Express. These modules are named "deploy-sentinel", "deploy-sentinel-sip", "deploy-sentinel-ss7" and "deploy-sentinel-diameter". They are located in the root of the Sentinel Express SDK directory.

A deployment module can be created through the use of the sdkadm create-deployment-module command.

The deployment modules are then published, and the deployer, binder and configurer are invoked in order to install/bind/configure the application in Rhino.

This means that the the installer is part of the Sentinel Express SDK, and that there is no technology difference between the SDK and an "off the shelf install". Therefore custom configurations can easily be made through modifying the deployment modules, publishing them, and running the configurer.

Installer log files

The installer captures full logging from the various tools that it uses, and writes these logs into the sentinel-express-sdk/build/target/log directory. This output is more verbose than the user sees when running the installer.

Each time an install is done, a file called installer.log is created in this directory. If there is a previous installer.log file, it is moved to installer_[date].log. The value of [date] is the time of the last write timestamp in the file.

Therefore running the installer three times results in three installer log files.

Installing the Sentinel Express Provisioning Module

The Sentinel Express provisioning module is distributed as a Rhino Element Manager (REM) plugin.

It requires REM 2.6.1 or compatible. REM can be installed with Jetty or Apache Tomcat. For Sentinel Express, the Apache Tomcat method is required.

To install the Sentinel Express Provisioning module you will need:

Below are the procedures to:

Important
REM restart required

After installing and configuring the plugin, you will need to restart REM, for example by restarting the Tomcat webapp it is running in:

${CATALINA_BASE}/bin/catalina.sh stop
${CATALINA_BASE}/bin/catalina.sh start

Set up Tomcat

To set up Apache Tomcat for the Sentinel Express Provisioning module:

1

Follow the instructions for running REM on Apache Tomcat in the REM Guide.

2

Create the rem_home/plugins directory.

cd apache-tomcat-<version>
mkdir -p rem_home/plugins

Install the REM plugin

To install the REM plugin for the Sentinel Express Provisioning Module:

1

Copy sentinel-express-element-manager-<version>.em.jar into rem_home/plugins.

cd apache-tomcat-<version>
cp /full/path/to/sentinel-express-element-manager-<version>.em.jar rem_home/plugins/

2

(Optional) Copy sis-em-<version>.em.jar into rem_home/plugins.

cd apache-tomcat-<version>
cp /full/path/to/sis-em-<version>.em.jar rem_home/plugins/

Customize plugin logging

1

Unzip log4j2.properties from rem.war:

cd apache-tomcat-<version>
mkdir rem-tmp
cd rem-tmp
unzip ../webapps/rem.war WEB-INF/classes/log4j2.properties

2

Edit WEB-INF/classes/log4j2.properties with this content:

rootLogger.level=INFO
rootLogger.appenderRef.console.ref=CONSOLE
rootLogger.appenderRef.file.ref=FILE

appender.CONSOLE.type=Console
appender.CONSOLE.name=CONSOLE
appender.CONSOLE.layout.type=PatternLayout
appender.CONSOLE.layout.pattern=%d{ABSOLUTE} %-5p <%t> [%c] %m%n

appender.FILE.type=RollingFile
appender.FILE.name=FILE
appender.FILE.filename=${rem.home}/rem.log
appender.FILE.layout.type=PatternLayout
appender.FILE.layout.pattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p <%t> [%c] %m%n

logger.rem.name=rem
logger.rem.level=INFO
logger.openjpa.name=openjpa
logger.openjpa.level=INFO
logger.wink.name=org.apache.wink
logger.wink.level=INFO

# Uncomment for subscriberdata cache eviction logging
#logger.subscriberdatacache.name = rem.server.sentinel.subscriberdata.cache
#logger.subscriberdatacache.level = TRACE

logger.audit.name=sentinel.audit
logger.audit.level=INFO
logger.audit.additivity=false
logger.audit.appenderRef.audit.ref=AUDIT

appender.AUDIT.type = RollingFile
appender.AUDIT.name = AUDIT
appender.AUDIT.fileName = ${rem.home}/sentinel-audit.log
appender.AUDIT.layout.type = PatternLayout
appender.AUDIT.layout.pattern = "%d{yyyy-MM-dd HH:mm:ss,SSS}", "%c{1}", %m%n

3

Replace WEB-INF/classes/log4j2.properties in rem.war:

zip ../webapps/rem.war WEB-INF/classes/log4j2.properties

4

Remove temporary files:

cd ..
rm -rf rem-tmp

Import Rhino trust certificate

This can also be done using the REM web UI.

1

Import a Rhino Trust Certificate into REM:

"${JAVA_HOME}/bin/keytool" -importcert -file ${RHINO_HOME}/rhino-trust.cert -keystore "${TOMCAT_HOME}/rem_home/rhino-ems.ks" -storepass changeit -noprompt

Security considerations

Below are recommendations for securely running the Sentinel Express Provisioning Module.

Use https

Be aware that the Sentinel Express machine API uses HTTP BASIC authentication. This passes the username and password with every request.

To prevent your credentials going over the network unencrypted, run REM over https.

Set up SSL

See the Tomcat 7 - SSL How-To docs for help setting up SSL in Apache Tomcat 7.

Configuring Sentinel Services

There are configuration options for these Sentinel services:

Note All service configuration can be managed using the Sentinel Element Manager web-based interface or the Sentinel Sentinel Provisioning REST API.

Sentinel Common Configuration

  • Core Configuration — The Sentinel Core Configuration defines global parameters used by all services in Sentinel.

  • Mediation Layer Configuration — The Diameter Mediation Layer Configuration tables define parameters which are applicable to all service frontends using the Sentinel-internal Diameter Mediation Layer (currently SS7, SIP, Diameter services).

  • Configuration Common to SS7 and SIP Services — Configuration common to the SS7 and SIP services.

Core Configuration

Description

Configuration name

Sentinel Core Configuration

Applicable contexts

All

The Sentinel Core Configuration defines global parameters used by all services in Sentinel.

Configuration

The Sentinel Core Configuration includes:

Parameters Description

PlatformOperator

The platform operator for this Sentinel installation

DefaultNetworkOperator

The default network operator for this Sentinel installation

NetworkOperators

The list of network operators that may be used in the configuration

HttpParameterForHttpDetermineNetworkOperator

The HTTP parameter that is used the HTTP Determine Network Operator feature

DefaultOcsEntityID

The default OCS entity ID

MaximumCallDuration

The maximum permitted call duration. If set to 0 the call duration is unlimited. Must be a whole multiple of the reservation time as set in the OcsParameterConfiguration feature RequestUnitsSeconds. It is recommended that the multiple is 2 or greater. Maximum call duration is intended to prevent excess call durations and is not intended as a way to limit normal calls

FeatureTimeOut

The feature timeout in milliseconds. May be configured between -1 and 1800000. -1 turns off feature timers. Feature timeout under 1 sec (1000) is not recommended

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

SentinelConfigurationTable

Core configuration

Fixed name

Provisioning interfaces

The configuration is provisioned using the Sentinel Sentinel Core REST API or web interface.

Mediation Layer Configuration

The Diameter Mediation Layer Configuration tables define parameters which are applicable to all service frontends using the Sentinel-internal Diameter Mediation Layer (currently SS7, SIP, Diameter services).

  • Diameter Mediation Configuration — The DiameterMediation Configuration contains some general settings for the mediation layer.

  • OCS Configuration — The OCS Configuration contains default settings for OCS connections which are used when no specific OCS Destination Configuration has been set.

  • OCS Destination Configuration — The OCS Destination Configuration specifies connection properties and settings for specific OCSes which can be accessed by Sentinel during the course of a session.

  • TccTimer Configuration — The TccTimer configuration determines how the Sentinel-internal Tcc timer will be set when a CreditControlAnswer is received from the OCS.

Diameter Mediation Configuration

Description

Configuration name

Diameter Mediation

Applicable contexts

SS7/SIP/Diameter service

The DiameterMediation Configuration contains some general settings for the mediation layer.

Configuration

The DiameterMediation configuration includes:

Parameters Description

CloseSessionOnErrorBehaviour

String value, either ERRORS_END_SESSION or CCR_T_ENDS_SESSION. It determines if the Diameter Mediation layer ends sessions to the OCS after receiving an update CreditControlAnswer (CCA-U) with an error code in the Result-Code AVP on command level, or leaves sessions open to be terminated explicitly via a termination CreditControlRequest (CCR-T)

Note CCR_T_ENDS_SESSION will only produce the expected results if the Quirks RA entity configuration property of the RA entity used to connect to the OCS is set to CONTINUE_SESSION_ON_NON_SUCCESS_UPDATE_RESULT.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

DiameterMediationConfigurationTable

Diameter Mediation configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API.

OCS Configuration

Description

Configuration name

OCS Configuration

Applicable contexts

SS7/SIP/Diameter service

The OCS Configuration contains configuration for default OCS connections used when no specific OCS Destination Configuration has been set.

Whenever Sentinel has to interact with an OCS during the course of a session, it determines the connection to be used from an OCS configuration. First, it tries to find the OCS Destination Configuration referenced by the current value of the OcsId session state field. If no such OcsId is found in session state, Sentinel looks up the default OCS Configuration profile.

Configuration

The OCS configuration includes:

Parameters Value Description

DestinationRealm

String

The value to be used in the Destination-Realm-AVP for outgoing Credit-Control-Requests.

DestinationHost

String

The value to be used in the Destination-Host-AVP for outgoing Credit-Control-Requests.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

DiameterMediationOcsConfigurationTable

OCS default configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API.

OCS Destination Configuration

Description

Configuration name

OCS Destination Configuration

Applicable contexts

SS7/SIP/Diameter service

The OCS Destination Configuration references specific OCS connections which can be used by Sentinel during the course of a session.

Whenever Sentinel has to interact with an OCS during the course of a session, it determines the connection to be used from an OCS configuration. First, it tries to find the OCS Destination Configuration referenced by the current value of the OcsId session state field. If no such OcsId is found in session state, Sentinel looks up the default OCS Configuration profile.

Configuration

The OCS Destination configuration includes:

Parameters Value Description

OcsId

String

The ID of this OCS Destination configuration. If the OcsId session state field is set and matches this field, then this OCS Destination configuration will be used when establishing the connection to the OCS.

DestinationRealm

String

The value to be used in the Destination-Realm-AVP for outgoing Credit-Control-Requests to this OCS.

DestinationHost

String

The value to be used in the Destination-Host-AVP for outgoing Credit-Control-Requests to this OCS.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

DiameterMediationOCSDestinationTable

OCS Destination configuration

SentinelSelectionKey:OcsId (for example, OpenCloud:::::Ocs1)

Diameter RA configuration profile

The Destination Realm and Destination Host in each OCS configuration must reference a Realm and Host defined in the diameter RA Peer and realm configuration.

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API.

TccTimer Configuration

Description

Configuration name

Tcc Timer

Applicable contexts

SS7/SIP/Diameter service

The TccTimer configuration determines how the Sentinel-internal Tcc timer will be set when a CreditControlAnswer is received from the OCS.

Each time a CreditControlAnswer from the OCS is received by the mediation layer and subsequently passed on to the frontend layer (Diameter, SS7 or SIP service), Sentinel starts the Tcc timer which is supervising the responsiveness of the frontend/client. The duration of this timer is determined by the TccTimer configuration. It can be:

  • via a formula based on the Granted-Service-Units (GSU) AVP of the received CreditControlAnswer and configuration parameters for offsets and multipliers:

    Duration = (GsuScaleFactorMultiplier * GSU)/GsuScaleFactorDivisor + GsuOffset

  • calculated via a formula based in a similar way on the Validity-Time (VT) AVP:

    Duration = (VtScaleFactorMultiplier * VT)/VtScaleFactorDivisor + VtOffset

  • switched off completely

  • set to a constant value.

Configuration

The TccTimer configuration includes:

Parameters Value Description

DefaultTccTimeout

Long

The timer duration if USE_DEFAULT_TIMEOUT is set

TccOption

String

one of NO_TCC, USE_DEFAULT_TIMEOUT, USE_VT, USE_GSU. Determines what option shall be used to calculate the Tcc timer duration.

GsuScaleFactorMultiplier

Integer

Used when tccOption is set to USE_GSU.

GsuScaleFactorDivisor

Integer

Used when tccOption is set to USE_GSU.

GsuOffset

Integer

Used when tccOption is set to USE_GSU.

VtScaleFactorMultiplier

Integer

Used when tccOption is set to USE_VT.

VtScaleFactorDivisor

Integer

Used when tccOption is set to USE_VT.

VtOffset

Integer

Used when tccOption is set to USE_VT.

TccMinValue

Long

The outcome of any of the Tcc calculation options above is capped at this value; in other words, the Tcc timer duration cannot fall below this threshold value.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

TccTimerConfigurationTable

TccTimer configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API.

Configuration Common to SS7 and SIP Services

Configuration common to the SS7 and SIP services.

  • Activity Test Configuration — The Activity Test configuration determines when Sentinel will test for the continued liveness of a session that has had a period of inactivity.

Activity Test Configuration

Description

Configuration name

Activity Test

Applicable contexts

SS7 service, SIP service

The Activity Test configuration determines when Sentinel will test for the continued liveness of a session that has had a period of inactivity.

Whilst a session is being monitored, Sentinel runs a timer where the duration is based on the Activity Test configuration. The timer is stopped each time Sentinel receives incoming traffic on the session. If the session is still active once the message has been processed, then the timer is restarted again. If the timer expires, Sentinel tests the activity/liveness/validity of the session using an appropriate protocol specific method. If this test fails, the session is terminated.

Configuration

The Activity Test configuration includes:

Parameters Value Description

TimerModeType

String

Either ‘chargingPeriodMultiple’ or ‘fixedDuration’.

ChargingPeriodMultiple

Decimal

If the Timer Mode Type is set to ‘chargingPeriodMultiple’ and the call is chargeable, this value specifies a multiple of the charging period duration to use as the timer duration.

FixedDuration

Integer

If the Timer Mode Type is set to ‘fixedDuration’, or the call is not chargeable, this value specifies a fixed timer duration in seconds.

ActivityTestInvokeTimeout

Integer

Specifying the period of time to wait, in milliseconds, for a successful response to an Activity Test. If a successful response is not received within this time period, the Activity Test is regarded as failed.

RandomPeriod

Long

Specifying the basis for an additional random period that will be added to the calculated duration. The concrete period added will be in the range of [0..RandomPeriod]

Configuration Profile Naming

Configuration Profile Table Name Description Profile Naming

ActivityTestConfigurationTable

Service configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API — see Activity Test REST API.

Sentinel for Diameter

Description

Configuration name

Diameter Sentinel

Applicable contexts

Diameter service

The Diameter Sentinel configuration contains general configuration properties for Sentinel’s Diameter-to-Diameter mediation service.

Configuration

The DiameterSentinel configuration includes:

Parameters Value Description

CreditFinalisationWaitingTime

Long

Number of milliseconds Sentinel will wait for receipt of a CCR-T after having received an ASA. If the CCR-T is not received within this timeframe Sentinel will send a synthesized CCR-T to the OCS to finalise the OCS-session and will simply terminate the client-session

SuppressAbortSessionRequest

Boolean

When false, the Diameter service sends received Abort-Session-Request messages on to the Diameter CTF client peer; when true, the Diameter service responds immediately with an ASA, without sending the Abort-Session-Request to the CTF peer, closing the CTF session, and sending a final CCR-T with zero used service units.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

DiameterSentinelConfigurationTable

Service configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API.

Sentinel for SIP

Note See Sentinel Common Configuration for configuration options applicable to all Sentinel services.

Activity Test Configuration for SIP

Description

Configuration name

Activity Test

Applicable contexts

SIP service

The Activity Test configuration determines when Sentinel will test for the continued liveness of a SIP session that has had a period of inactivity.

During the active call period, Sentinel runs a timer where the duration is based on the Activity Test configuration. The timer is stopped each time Sentinel receives a message from the external SIP UAC/UAS; and if the call is still active then the timer is restarted again. If the timer expires, Sentinel sends re-Invite messages to test that the connection to the external SIP UAC/UAS is still active. If the Activity Test fails, the session is terminated.

Note The configuration is in common with the SS7 service. See Activity Test Configuration.

Registrar Cassandra Subscriber Data Store Config

Description

The major configuration table for Sentinel VoLTE Registrar is RegistrarConfigurationTable and is scoped under Platform Operator Name. The following table shows the major parameters to configure Sentinel Volte Registrar.

Field Name Description

CassandraTTL

The time-to-live (ms) for each row in the Cassandra database

CassandraTracing

Whether tracing should be enabled for Cassandra queries

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API — see Sentinel Registrar Cassandra Subscriber Data Store REST API.

Registrar Configuration Table

Description

The major configuration table for Sentinel VoLTE Registrar is RegistrarConfigurationTable and is scoped under Platform Operator Name. The following table shows the major parameters to configure Sentinel Volte Registrar.

Field Name Description

AtcfUpdateTimeout

Time (ms) to wait before we consider the ATCF update has failed.

AtuSti

The ATU-STI the registrar should report.

CSRNPrefixForCorrelationMSISDN

Prefix to strip from CSRN to get the C-MSISDN.

ShHssDestinationHost

HSS destination host to use in Sh requests.

ShHssDestinationRealm

HSS destination realm to use in Sh requests.

ShOriginHost

Origin host to use in Sh requests.

ShOriginRealm

Origin realm to use in Sh requests.

SubscriberDataFacadeType

Indicates the data storage type: HssCache or Cassandra.

WriteAuditCdr

If audit CDRs should be written

AuditCdrPrivateIdFilter

A private-id for which an audit CDR should be written. This setting over-rides 'WriteAuditCdr'. Values of null or "" are ignored.

CdrStreamName

The cdr stream where audit CDRs are written

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API — see Sentinel Registrar REST API.

SDP Comparison for Rating Condition Change Determination

Description

Configuration name

SDP Media Codec Profile Table

Applicable contexts

SIP service

The SIP Sentinel SDP Media Codec Profile Table declares the codecs recognised by the SDP comparision function and the equivalence classes to which they belong.

The table is a configurable map of encoding name to charging equivalence class. Sentinel SIP inspects the SDP rtpmap lines to provide the rtpmap encoding name for purposes of looking up the charging equivalence class by encoding name key.

Encoding names with the same equivalence class will be considered equal in terms of charging.

Configuration

The Sentinel SIP configuration includes:

Parameters Description

EncodingName

the encoding name; typically represented in an rtpmap attribute (for example, G723)

EquivalenceClass

the equivalance class to which this codec belongs (for example, Audio8KHzSingleChannel)

Channels

the number of channels for the media attribute encoding (for example, 1)

ClockRate

the clock rate for the media attribute encoding (for example, 8000)

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

SDPMediaCodecProfileTable

SDP Media Codec equivalance class configuration

SentinelSelectionKey + EncodingName/ClockRate/Channels (for example, OpenCloud::::G723/8000/1)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API — see SIP Service Configuration REST API.

SIP Sentinel Configuration

Description

Configuration name

Sip Sentinel Configuration

Applicable contexts

SIP service

The SIP Sentinel Configuration defines the home network IDs and home country codes for a Sentinel selection key.

An example usage of this configuration is where the Sentinel SIP service feature DetermineIfRoamingFeature uses the HomeNetworkID to determine if a SIP Session is a roaming scenario.

Configuration

The Sentinel SIP configuration includes:

Parameters Description

HomeCountryCodeIDs

Indicates the home country codes for a network or platform operator as defined by the Sentinel selection key.

HomeNetworkIDs

Indicates the home network IDs for a network or platform operator as defined by the Sentinel selection key.

MaxEventDeliveryCycles

Indicates maxinum number of event delivery cycles. Used to prevent infinite loops of local events and abort session when it is exceeded.

IcscfUri

Indicates the SIP URI of the I-CSCF. Used when the AS needs to communicate directly with the I-CSCF.

ISOCode

Indicates the ISO country code for a network or platform operator as defined by the Sentinel selection key.

MCC

Indicates the Mobile Country Code for a network or platform operator as defined by the Sentinel selection key.

MNCs

Indicates the Mobile Network Codes list with same Mobile Country Code.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

SipSentinelConfigurationTable

Service configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API — see SIP Service Configuration REST API.

SIP Session Control Configuration

Description

Configuration name

SIP Session Control

Applicable contexts

SIP service

The SIP Session Control Configuration determines how the SIP Sentinel service controls the duration of sessions.

Configuration

The default behaviour of Sentinel is to: control session duration via SLEE timers.

If the configuration is missing or invalid, Sentinel defaults to ‘notControlled’ for the SipSessionControlMethod.

The SIP session control configuration includes:

Parameters Description

SipSessionControlMethod

Indicates how sessions should be controlled by the SIP Sentinel service. This may be set to ‘notControlled’ (if the service should not control session duration), or ‘controlViaSleeTimer’ (if session duration will be managed by SLEE timers).

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

SipSessionControlMethodTable

Service configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API — see SIP Session Control REST API.

SIP Third Party Call Configuration

Description

Configuration name

Sip Third Party Call Configuration

Applicable contexts

SIP service

The SIP Third Party Call Configuration determines how the SIP Sentinel service behaves when initiating SIP sessions in response to a non-SIP triggering, e.g. SIP sessions set up via HTTP requests.

Configuration

The SIP Third Party Call configuration is mostly used to determine the form of the INVITEs sent when a third party SIP session is initiated.

The SIP Third Party Call configuration includes:

Parameters Value Description

ExpiresHeader

Integer

to use for the Expires header.

MaxForwardsHeader

Integer

to use for the MaxForwards header.

RouteHeaderURI

String

contains the URI to use for the Route header.

Tip This configuration value can be overridden in SentinelSipSessionState to allow features to perform their own destination determination. e.g. for load balancing.

SupportedHeader

String

to use for the Supported header.

UserAgentHeader

String

to use for the User Agent header.

TransportAsEnum

The Transport type to use. This may currently be ‘udp’ or ‘tcp’.

IsSipURIUsed

Boolean

A value determining whether the SIP URI configuration value is used.

SipURIDomain

String

A value containing the SIP URI, if used. (See IsSipURIUsed boolean above).

NoAnswerApplicationTimer

Integer

A value determining how long before the ‘no answer’ timer will fire.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

SipThirdPartyCallConfigurationTable

Service configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API — see SIP Third Party Call REST API.

Sentinel for SS7

Note See Sentinel Common Configuration for configuration options that are applicable to all Sentinel services.
  • Activity Test Configuration for SS7 — The Activity Test configuration determines when Sentinel will test for the continued liveness of a dialog that has had a period of inactivity.

  • Call Information Report Configuration — The Call Information Report configuration determines if Sentinel will request Call Information Reports from the network for an SS7 first-party call and if call alerting time will be chargeable for Mobile Originating calls.

  • Handling GSM Call Forwarding Active on MTC

  • Relay Dialog Configuration — The Relay Dialog Configuration defines the destination SCCP address of the external network element for relayed dialogs.

  • Session Control Configuration — The Session Control Configuration determines how the charging shall be controlled during the session and whether Apply Charging Reports or Call Information Reports shall be used when the charging session to the OCS is finalised.

  • SS7 Call Configuration — The SS7 call configuration defines properties related to event requests and 3rd party call setup.

  • SS7 Diameter Configuration — The SS7 diameter configuration specifies the method used for event based charging scenarios.

Activity Test Configuration for SS7

Description

Configuration name

Activity Test

Applicable contexts

SS7 service

The Activity Test configuration determines when Sentinel will test for the continued liveness of a dialog that has had a period of inactivity.

During the active call period, Sentinel runs a timer where the duration is based on the Activity Test configuration. The timer is stopped each time Sentinel receives a message from the MSC such as an Apply Charging Report; and if the call is still active then the timer is restarted again. If the timer expires, Sentinel sends an Activity Test operation on the dialog to test that the connection to the MSC is still active. If the Activity Test fails, the session is terminated.

Note The configuration is in common with the SIP service. See Activity Test Configuration.

Call Information Report Configuration

Description

Configuration name

Call Information Report

Applicable contexts

SS7 service

The Call Information Report configuration determines if Sentinel will request Call Information Reports from the network for an SS7 first-party call and if call alerting time will be chargeable for Mobile Originating calls. Call Information Reports can be used for more accurate charging as they’re produced directly by the MSC/SSF controlling the call and are therefore not influenced by network or external resource latencies in the service.

Any Call Information Reports received by Sentinel are also included in the CDR produced for the call.

Configuration

The default behaviour of Sentinel is:

  • to request Call Information Reports from the network for both originating and terminating call parties

  • not to charge for call alerting time.

Note A-party or B-party Call Information Reports can be suppressed in order to reduce network traffic.

In the case where the terminating party report is not suppressed, Sentinel can use this report when finalising the amount of credit consumed by the subscriber. For a Mobile Originating (MO) call this report can also be used to charge the subscriber for the call alerting time.

The Call Information Report configuration includes:

Parameters Value Description

SuppressOriginatingPartyCallInformationReport

Boolean

Boolean, if true, stops Sentinel from sending a Call Information Report request for the originating call party.

SuppressTerminatingPartyCallInformationReport

Boolean

Boolean, if true, stops Sentinel from sending a Call Information Report request for the terminating call party.

CallAlertingTimeIsChargeable

Boolean

Boolean, if true, will cause Sentinel to also charge the subscriber for call alerting time (MO calls only). This option can only be set to true if SuppressTerminatingPartyCallInformationReport is also true.

CallAlertingTimePrereservationSeconds

The number of seconds of credit to pre-reserve in the initial credit reservation if call alerting time is chargeable. This value should be set to the maximum expected alerting time. This option is only relevant if CallAlertingTimeIsChargeable is set to true.

CirTimeout

The number of milliseconds to wait for CIRp before timeout and continuing the session. May be set between range 500 - 10000, with a default of 3000.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

CallInformationReportConfigurationTable

Service configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API — see Call Information Report REST API.

Handling GSM Call Forwarding Active on MTC

Identifying GSM call forwarding active

Sentinel sets the LatestEventReportIndicatesCallForwarded session state variable to true if tBusy is received on an MT call with ‘call forwarded’ information element included in the event report.

Tip For more information see Noldus 4.3.2.2 Call Forwarding Not Reachable — MS Switched Off. (Refer to Noldus footnote below.)

Handling GSM call forwarding active

The typical operator configuration is to send CAN + CUE when call forwarding is active on an MT call. To configure this behaviour in Sentinel, logic similar to the follow must be included in the EndSession feature execution point:

if session.LatestEventReportIndicatesCallForwarded {
    run ContinueAndClose
} else {
    run ReleaseAndClose
}

References

NOLDUS

CAMEL INTELLIGENT NETWORKS FOR THE GSM, GPRS AND UMTS NETWORK

Rogier Noldus

2006

John Wiley & Sons, Ltd

Relay Dialog Configuration

Description

Configuration name

Relay Dialog Configuration

Applicable contexts

SS7 service

The Relay Dialog Configuration defines the destination SCCP address of the external network element for relayed dialogs.

Configuration

The Relay Dialog Configuration includes:

Parameters Description

RelayDestinationSccpAddress

The destination SCCP address string of the external network element for relayed dialogs

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

RelayDialogConfigurationTable

Service configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API — see SS7 Relay Dialog ConfigurationProfile REST API.

SS7 Call Configuration

Description

Configuration name

SS7 Call Configuration

Applicable contexts

SS7 service

The SS7 call configuration defines properties related to event requests and 3rd party call setup.

Configuration

The SS7 Call Configuration includes:

Parameters Description

NoAnswerApplicationTimer

time (seconds) to use for the No Answer application timer when requesting event reports from the MSC

ThirdPartyCallSetupGmscAddress

SCCP address string of the GMSC used when setting up third party calls.

ThirdPartyCallSetupScfAddress

(optional) SCCP address string of the SCF used when setting up third party calls.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

SS7CallConfigurationTable

Service configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API — see SS7 Call Configuration REST API.

SS7 Diameter Configuration

Description

Configuration name

SS7 Diameter Configuration

Applicable contexts

SS7 service

The SS7 diameter configuration specifies the method used for event based charging scenarios.

Configuration

The SS7 Diameter Configuration includes:

Parameters Description

EventChargingMethod

One of:

  • reserveAndCharge (for ECUR)

  • chargeAndRefund (for IEC)

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

DiameterConfigurationTable

Service configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API — see SS7 Diameter Configuration REST API.

Session Control Configuration

Description

Configuration name

Session Control

Applicable contexts

SS7 service

The Session Control Configuration determines how the charging shall be controlled during the session and whether Apply Charging Reports or Call Information Reports shall be used when the charging session to the OCS is finalised.

Configuration

The default behaviour of Sentinel is to use Apply Charging Reports:

  • for controlling the charging for the duration for the session

  • when the CCR-T is sent to the OCS to finalise the credit control session.

The Session Control configuration includes:

Parameters Description

SessionControlMethod

Whether charging during the session shall be performed via internal SLEE Timer, via Apply Charging Reports from the MSC, or via Call Information Report once at the very end of the session. Valid options are:

  • protocolDefault — Use a sensible default for the currently executing protocol.

  • notControlled — Don’t control call duration.

  • controlViaSleeTimer — Periodically perform charging queries based on configurable session timer.

  • controlViaApplyCharging — Use ApplyCharging messages to drive charging interactions. Default for CAP session control.

  • controlViaSleeTimerWithFinalACR — Send an initial ApplyChargingRequest and expect a final ApplyChargingReport. Use session timer to control charging interactions mid-call in the same way as controlViaSleeTimer. Default for CS1+ session control.

  • controlViaCallInformationReport — Use CallInformationReport-based charging interaction method.

PreferredEndCallChargingEvent

Whether to use Apply Charging Report or Call Information Report for credit finalisation, in the case where both these events are available at call end. Valid options are: ‘useACR’, ‘useCIRp’.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

SessionControlMethodTable

Service configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The configuration can be provisioned using the Sentinel machine provisioning API — see SS7 Session Control REST API.

Sentinel Components

  • Resource adaptors — Sentinel comes with several resource adaptors that are used by features bundled with Sentinel and may also be used by new features added with the SDK.

  • Features — Sentinel comes with many existing features that can be used in feature execution scripts.

  • Utility components — Sentinel includes a number of utility software components that are used by features bundled with Sentinel and may also be used by new features added with the SDK.

  • Promotions — features in the mediation layer and related to promotions.

  • Mappers — Sentinel comes with many mappers that can be configured at various mapping points and scopes.

  • Address lists

  • SLEE usage parameter sets

Resource Adaptors

In the SLEE component model, a resource adaptor (RA) provides the interface between the application and the network. It adapts the physical resource to events which the SLEE can send and receive. Sentinel makes use of a number of resource adaptors, for purposes ranging from database connections to network integration.

OpenCloud Resource Adaptors used by Sentinel

Sentinel may install various Resource Adaptors and configure RA entities. This actual RAs and RA entities installed and configured varies based on which components are used.

The Resource Adaptors Entities may include:

  • diameterro-0 — adapts outbound sessions with multiple OCSes; speaks Diameter Gy and Ro

  • diameterro-1 — adapts inbound sessions with multiple Diameter clients; speaks Diameter Gy and Ro

  • cgin  — adapts inbound CAP sessions for CAMEL IN integration

  • http  — adapts inbound http triggers for things such as 3rd-party call initiation

  • cdr  — for writing of call detail records (or 3GPP Charging Data Records)

  • correlation-ra  — maps an item of data to a unique ID for lookup; currently used for call reorigination

  • dbquery-0  — manages relational database connections through JDBC

  • hector  — manages Cassandra connections

  • uid  — generates unique IDs for miscellaneous use by Sentinel features and services

  • sip-sis-ra  — adapts inbound SIP sessions for SIP network integration

Tip All these RAs can be viewed and configured using the Sentinel Element Manager. Future releases of Sentinel will have resource adaptors to support other protocols, such as Diameter CCA. Customers can also add their own resource adaptors, using the Sentinel SDK.

CGIN RA

The Sentinel SS7 service uses the CGIN RA for SS7 integration. For details on configuring the CGIN RA, see the CGIN documentation.

CDR Resource Adaptor

CDR resource adaptor entities

The Sentinel installer creates a CDR resource adaptor entity called cdr. This resource adaptor entity is used by all Sentinel services.

CDR resource adaptor configuration

Note Refer to the CDR RA Documentation for more information about the CDR RA.

The cdr resource adaptor entity is configured to use the cdr-stream profile of the CdrStreamConfiguration profile table by default.

The output behaviour of the CDR resource adaptor can be customised by modifying this profile in accordance with the CDR RA Documentation.

Sentinel configuration requirements

The cdr RA entity must be configured with CdrFileType=Binary.

For more information about CDRs in the Sentinel platform, refer to:

  • Working with CDRs section of this administration guide to learn about the content of Sentinel CDRs.

  • Customising CDRs in the Extending Sentinel with the SDK guide to learn how to customise the format of the CDRs that Sentinel creates, as well as customising the data included in the CDRs.

CGIN Resource Adaptor

CGIN resource adaptor entities

Note Refer to the CGIN documentation for more information about the CGIN resource adaptor.

There are two CGIN resource adaptor entities in Sentinel:

  • cginra — for CAP dialogs

  • cginmapra — for MAP dialogs.

CAP CGIN RA entity (cginra)

The cginra RA entity is used for initiating and third party CAP dialogs.

MAP CGIN RA entity (cginmapra)

The cginmapra is used by features to initiate MAP dialogs.

Configuring the local-sccp-address

Inter-operator MAP requests require an SSN of 147. The local-sccp-address of the cginmapra RA entity must be configured with sccp address including SSN=147.

Configuring the default-activity-timeout

By default the default-activity-timeout is set to 1800000 (30 minutes) by default. This is too long for the MAP features in Sentinel. It is recommended to set it to a shorter value in the cginmapra RA entity.

Set default-activity-timeout high enough so that the MAP invoke timeouts will be first, taking into account the granularity of signalware/telesys timers, but low enough that hung dialogs do not accumulate, which will cause the RA entity to run out of dialog identifiers while waiting for activity timeout to terminate the hung dialogs.

For instance, if Sentinel MAP features have a maximum invoke timeout of 5 seconds then 10 seconds (10000) would be sufficient for the default-activity-timeout.

Customising the CGIN RA entities used by Sentinel

It may be necessary to configure multiple RA entities to address specific operator network configuration requirements. Additional CGIN RA entities may be used in Sentinel for this purpose. Sentinel has the following link binding by default:

Link name Default Bound RA entity

sentinel-cgin

cginra

sentinel-cgin-atilookup

cginmapra

sentinel-cgin-flashsms

cginmapra

sentinel-cgin-mnplookup

cginmapra

sentinel-cgin-sribasiccall

cginmapra

A custom CGIN RA entity may be used by creating, configuring and binding the new RA entity.

Correlation Resource Adaptor

Correlation RA Overview

What is the Correlation RA?

There are situations where Sentinel must correlate two independent sessions. The Correlation RA allocates a correlation ID with the first session, that can then be used to process a second session. The Sentinel service may associate a blob of data with an allocated correlation ID.

The Correlation RA is used for two cases in Sentinel:

  1. Playing an announcement using ETC/ARI. In this case, the Correlation RA is used to allocate the correlation ID that is included in the ETC message, which is then present in the ARI message sent on a second dialog.

  2. Roaming Re-origination Feature. In this case, the Correlation RA is used to allocate a special routing address that is used in the Connect message on the initial dialog. A second re-originated dialog will be received by Sentinel for this special address. Sentinel uses the Correlation RA on the re-originated dialog to retrieve data that was associated with the special address via the first dialog. The associated data includes relevant details from the InitialDP of the initial dialog.

Below are procedures for [configuration], [monitoring], and [using].

Configuring a Correlation RA entity

A Correlation RA entity configuration consists of:

The following diagram shows the Reorigination Correlation RA entity.

correlation ra
Tip The Correlation resource adaptor supports live re-configuration, so the administrator may update the configuration properties of a Correlation resource adaptor entity that has already been created.

Correlation RA configuration properties

The Correlation RA configuration properties are:

Name

Type

Description

ConfigProfileTable

String

The SLEE profile table with an RA configuration profile for this RA entity.

ConfigProfile

String

The SLEE profile in the ConfigProfileTable with configuration for this RA entity.

CorrelationIdPoolProfileTable

String

The SLEE profile table with correlation ID pool definitions for this Correlation RA entity.

For example, the Reorigination Correlation RA entity has the following configuration:

[Rhino@localhost (#9)] listraentityconfigproperties reorigination-correlation-ra
Configuration properties for resource adaptor entity reorigination-correlation-ra:
 ConfigProfile (java.lang.String): ReoriginationCorrelationConfigProfile
 ConfigProfileTable (java.lang.String): CorrelationConfigTable
 CorrelationIdPoolTable (java.lang.String): ReoriginationCorrelationIdPools

Correlation RA entity configuration profile

The Correlation RA configuration profile has the following attributes:

Name

Type

Description

RequestTimeout

Int

The maximum time (measured in ms) the Correlation RA will spend trying to allocate a correlation ID.

CorrelationIDExpiryTimerPeriod

Int

The maximum time (measured in ms) that an active correlation ID is considered to be still valid.

NumberOfThreadPool

Int

How many threads the Correlation RA entity should use.

For example, the Reorigination Correlation RA entity has the following configuration:

[Rhino@localhost (#8)] listprofileattributes CorrelationConfigTable ReoriginationCorrelationConfigProfile
CorrelationIDExpiryTimerPeriod=55000
NumberOfThreadPool=5
RequestTimeout=5000

Correlation RA entity ID pools configuration

Each Correlation RA entity has one or more correlation ID pools.

  • a default ID pool (optional)

  • a set of named ID pools. Each named ID pool is identified by a set of prefixes for choosing/selecting the ID pool. From the Correlation RA standpoint, the prefixes can be any address string. The client to the RA provides an address that the RA uses via a longestPrefix match address list search to select the pool to use.

Each correlation ID pool is defined in a SLEE profile in an ID pools profile table. There is one correlation ID pools table per Correlation RA entity.

Tip The correlation resource adaptor entity will raise an alarm if there are no correlation ID pools configured, or if there are configuration errors with the correlation ID pools.

addressPrefixes

An array of address prefixes that corresponds to this pool. The default pool has an empty addressPrefixes array.

nodeIds

An array of node IDs for which this pool has correlation IDs.

isPreconfiguredCorrelationIdSetUsed

If true, configure this ID pool with a pre-configured set of correlation IDs, else derive the correlation IDs.

preconfiguredCorrelationIdSet

The preconfigured set of correlation IDs per node (delimited with ‘:’).

minCorrelationIDInCluster

The minimum correlation ID value used in the cluster. 0 to maxCorrelationIDInCluster

maxCorrelationIDInCluster

The maximum correlation ID value used in the cluster. 0 to (10^18-1)

correlationIDNumberOfDigits

The number of digits the correlation ID should have. Minimum of number of digits in maxCorrelationIDInCluster to 18 maximum.

correlationIDRangePerNode

The number of correlation IDs that can be used for each node in the cluster.

There are two possible configuration options for correlation ID pools.

A prescribed set of IDs for each node

Defines the prescribed correlation IDs for each node in the following way:

  • NodeIds[0] — PreconfiguredCorrelationIdSet[0] which is a ‘:’ separated string containing all the correlation IDs for NodeIds[0]

  • NodeIds[1] — PreconfiguredCorrelationIdSet[1] which is a ‘:’ separated string containing all the correlation IDs for NodeIds[1]

  • etc.

A range of correlation IDs (min, max) for each node

Defines the range of values used in each node in conjunction with the NodeIds attribute in the following way:

  • The node whose identifier is NodeIds[i] has a range of values of CorrelationIDRangePerNode[i]

  • Each cluster has a range of CorrelationIDs defined by: [MinCorrelationIDInCluster, MaxCorrelationIDInCluster]

These values are allocated to the different cluster nodes in the following way:

  • NodeIds[0] — [MinCorrelationIDInCluster …​ MinCorrelationIDInCluster + CorrelationIDRangePerNode[0]]

  • NodeIds[1] — [MinCorrelationIDInCluster + CorrelationIDRangePerNode[0] + 1 …​ MinCorrelationIDInCluster + +CorrelationIDRangePerNode[0] + 1 + CorrelationIDRangePerNode[1]]

  • etc.

The maximum number of correlation IDs defined in the range is 1,000,000.

Provisioning Interfaces

The Correlation RA configuration and ID pools are provisioned using the Sentinel REST API or web interface.

Monitoring Correlation RA entity statistics

Each Correlation RA entity collects the following statistics that may be monitored via the Rhino statistics client.

Counters

Name Description

correlationGets

Count of correlation IDs which have been requested via findCorrelationEntry()

localGets

Count of correlation queries which returned immediately (synchronous delivery) as the local RA had the data available.

remoteGets

Count of correlation queries which did not return immediately (asynchronous delivery) as the local RA did not have the data available.

remoteDelivery

Count of correlation queries which required delivering data to another correlation RA instance.

unknown

Count of correlation queries which could not be remotely delivered as the destination RA for a correlation ID was unknown.

Caution The count correlationGets should equal the sum of localGets + remoteGets.

These statistics can use used to create threshold-based alarms.

Using the Correlation RA

A feature uses the Correlation RA by invoking methods on the provider interface.

  • To store data for correlation, a feature calls either the getNewCorrelationID(byte[] correlationData) or the getNewCorrelationID(String associatedAddress, byte[] correlationData) method on the CorrelationProvider. These methods will store the correlation data locally, and return an identifier String (the correlation ID) which can later be used to access the data from elsewhere. This operation will flag the returned ID as ‘in use’ until it is freed (on query) or expires (on timeout).

  • To query the correlation data (for example, from another session) a feature calls the getCorrelationData(String correlationId) method on the CorrelationProvider. This returns a CorrelationResult which will either contain the requested data (if it is available locally), or a flag indicating that the data is not available locally.

  • If the data is available locally then it can be immediately access via the [synchronous] API call CorrelationResult.getCorrelationData()

  • If the data is only available for asynchronous delivery, CorrelationResult.isAvailableAsynchronously() will be true, and CorrelationResult.getCorrelationData() will return null. See the following section for how to handle [asynchronous] result delivery.

CorrelationProvider interface:

public interface CorrelationProvider {

    /**
     * Creates an activity used for async requests.
     *
     * @return
     * @throws StartActivityException
     */
    public CorrelationActivity createActivity() throws StartActivityException;

    /**
     * This returns immediately and will return a CorrelationResult. This will either contain the correlation data if this is available on
     * this node or else will contain a flag that says this is only available on another node. In the later case you should then call an
     * async request to get the data.
     *
     * @param correlationId the Correlation ID
     * @return the CorrelationResult
     * @throws UnknownCorrelationIdException if the correlation id is not known in this pool
     * @throws NoDataFoundException if there is no data found for the correlation id specified
     * @throws CorrelationIDExpiredException if the correlation id has expired
     */
    public CorrelationResult getCorrelationData(String correlationId) throws UnknownCorrelationIdException, NoDataFoundException, CorrelationIDExpiredException;

    /**
     * This will return the CorrelationResult. This method will block and only return when the CorrelationResult is available. If the data is only
     * available on a remote node this may take some time to return. This should only be used if synchronous behavior is required.
     *
     * @param correlationId
     * @return
     * @throws CorrelationRequestException
     */
    public CorrelationResult getCorrelationDataSynchronously(String correlationId) throws CorrelationRequestException;

    /**
     * Request a new Correlation ID from the default pool
     *
     * @param correlationData data to be correlated
     * @return a new Correlation ID with a correlation name that is not being used in any other session
     * @throws NoAvailableEntries if there is any problem accessing data
     */
    public String getNewCorrelationID(byte[] correlationData) throws NoAvailableEntriesException;

    /**
     * Request a new Correlation ID String from a correlation id pool associated with an address.
     *
     * @param associatedAddress an address that the correlation RA will use to select a pool from which to return a correlation id
     * @param correlationData data to be correlated
     * @return a new Correlation ID String with a correlation name that is not being used in any other session
     * @throws NoAvailableEntries if there is any problem accessing data
     */
    public String getNewCorrelationID(String associatedAddress, byte[] correlationData) throws NoAvailableEntriesException;

    /**
     * Determine if an id is a correlation id we know about
     * @param possibleCorrelationId an id we wish to check to see if it is a correlation id
     * @return true iff this id is a correlation id we know about
     */
    public boolean isValidCorrelationId(String possibleCorrelationId);
}

CorrelationResult interface:

public interface CorrelationResult {
    /**
     * Contains correlation data associated with the requested correlation ID or null if the
     * data is only available asynchronously.
     *
     * @return
     */
    public byte[] getCorrelationData();

    /**
     * String containing requested correlation ID.
     *
     * @return the String containing the Correlation ID
     */
    public String getCorrelationId();

    /**
     * If the correlation data is not available locally but is available via an asynchronous call.
     *
     * An asynchronous call can be made by creating a CorrelationActivity with the provider and then making
     * the asynchronous call on the CorrelationActivity.
     *
     * @return
     */
    public boolean isAvailableAsynchronously();
}

CorrelationActivity interface:

public interface CorrelationActivity {

    /**
     * Request the correlation data associated with the specified Correlation ID.
     *
     * The result will be fired as a {@link CorrelationResultEvent}
     * event on this activity.  Failed queries will be fired as a {@link CorrelationFailureEvent}.
     *
     * @param correlationId The Correlation ID
     */
    public void requestCorrelationData(String correlationId);

}

Handling synchronous results

Synchronous queries occur when the RA which is queried is also storing the queried information. In these circumstances, the data is included in the returned CorrelationResult from a query. The following example demonstrates how to handle synchronous return results:

private void syncRequest(byte [] correlationData) {
    //
    // Store some data against a new correlation ID.
    //
    String correlationId;
    try {
        correlationId = corrProvider.getNewCorrelationID(correlationData);
    } catch (NoAvailableEntriesException e) {
        // ... handle exception ...
        return;
    }

    // ... do work until correlation data is required again.

    // In practice, the following will usually be done in another transaction which only knows the correlation ID.
    // It is done inline here for the sake of simplicity.

    //
    // Query the saved correlation data.
    //
    try {
        CorrelationResult result = corrProvider.getCorrelationData(correlationId);
        byte [] corrData = result.getCorrelationData();
        if (corrData != null) {
           // Do something with data
        } else {
           if (result.isAvailableAsynchronously()) {
             // ... Here we could optionally proceed with an asynchronous correlation data query. See following example.
           }
        }
    } catch (UnknownCorrelationIdException e) {
        // ... handle exception ...
        return;
    } catch (NoDataFoundException e) {
        // ... handle exception ...
        return;
    } catch (CorrelationIDExpiredException e) {
        // ... handle exception ...
        return;
    }
}

Handling asynchronous results

Asynchronous result handling is required when the correlated data for the requested ID is only available from a non-local Correlation RA (that is, on a different Rhino node). After the correlation data is requested, the result is returned in a CorrelationEvent which is delivered to the service. This CorrelationEvents must be explicitly handled with a SLEE event handler.

Requesting correlation data asynchronously is done as follows:

  • Create a new correlation activity using CorrelationProvider.createActivity()

  • Get an ActivityContextInterface object for the activity.

  • Attach the SBB local object to the ACI.

  • Send the request using the requestCorrelationData(String) method on the activity.

  • Handle the result in an event handler for the com.opencloud.slee.resources.correlation.CorrelationResultEvent event.

  • Handle failures in an event handler for the com.opencloud.slee.resources.correlation.CorrelationFailureEvent event.

The follow example demonstrates the handling an asynchronous correlation query:

private void asyncRequest(String correlationId) {
    try {
        CorrelationActivity corrActivity = corrProvider.createActivity();
        ActivityContextInterface corrAci = corrACIFactory.getActivityContextInterface(corrActivity);
        corrAci.attach(getSbbLocalObject());
        corrActivity.requestCorrelationData(correlationId);
    }
    catch (StartActivityException e) {
        // ... handle exception ...
    }
}

public void onCorrelationResult(CorrelationResultEvent result, ActivityContextInterface aci) {
    aci.detach(getSbbLocalObject());
    byte [] corrData = result.getCorrelationData()
    // ... do something with the data ...
}

public void onCorrelationFailure(CorrelationFailureEvent failure, ActivityContextInterface aci) {
    aci.detach(getSbbLocalObject());
    // ... handle failure ...
}

Javadoc API

Javadoc for the Correlation RA is available here: Sentinel Correlation RA API 1.0.

DBQuery Resource Adaptor

DBQuery resource adaptor entities

The Sentinel installer creates a DBQuery resource adaptor entity called dbquery-0. The dbquery-0 resource adaptor entity is configured to connect to a local relational database.

Note See the DBQuery RA documentation for more about the DBQuery RA.

DBQuery database type

Before installing Sentinel, you can configure the DBQuery RA database type by adding the db.type property to sdk.properties or sdk.local.properties. Valid options for this property are postgres, oracle, and timesten. The Sentinel installation process compiles the DBQuery RA with the appropriate JDBC driver for that db.type.

Many features provided with Sentinel, and new features developed with the Sentinel SDK, may use the DBQuery resource adaptor.

Features that may use the DBQuery resource adaptor

The following features provided with Sentinel may be configured to use the DBQuery resource adaptor:

Note See Provisioning Configuration and Provisioning Data in TimesTen for how to manage data in an external database using the Sentinel Element Manager.

Diameter Resource Adaptor

Diameter RA documentation

Diameter resource adaptors

There are currently three diameter resource adaptor entities in Sentinel:

  • diameterro-0 — for OCS connections

  • diameterro-1 — for client connections

  • diameter-sentinel-internal — used as a message factory by mappers in Sentinel’s Diameter mediation layer.

diameterro-1 is available only to the Sentinel Diameter service. diameterro-0 and diameter-sentinel-internal are used by all Sentinel services.

Session timeouts

The default Sentinel configuration has a 10 minute timeout for diameterro-1 (client) and 13 minute timeout for diameterro-0 (OCS). This configuration ensures that if there are events dropped due to overload, the ActivityEndEvents fired on the RA entities will cause the client side to end first. The 3 minute gap is set to allow time for all the ActivityEndEvents on the client side to be delivered before any are fired on the OCS side due.

Diameter version configuration

The Diameter version spoken on the network to either the OCS or the Diameter client can be configured by setting two properties in the relevant resource adaptor. To change the version used in the OCS dialog, diameterro-0 should be reconfigured. Likewise, to change the version used on the client dialog (Sentinel Diameter only), diameterro-1 should be reconfigured. The Diameter version used by diameter-sentinel-internal should not be reconfigured, as it is tied to the internal implementation of Sentinel.

When reconfiguring the Diameter version of either of the external resource adaptors, two fields must be set - Slee3GPPVersion and 3GPPVersion. Slee3GPPVersion should always be set to Vcb0. This is the version of Diameter used by Sentinel internally. 3GPPVersion can be set to the desired protocol version to be used over the network, ranging from V820 to Vcb0.

Alternatively, the Diameter version spoken to the OCS can be set during installation.

OCS load balancing

Load balancing of OCS connections can be achieved using the diameterro-0 resource adaptor entity, by configuring multiple hosts within a realm and addressing messages to the realm only (not the host).

Example configuration for OCS load balancing

This example shows the diameterro-0 resource adaptor entity configured to load balance across two OCS nodes.

  • The resource adaptor entity config properties show that it is configured using a profile in the DiameterConfig table.

  • The config profile shows that the known OCS nodes are named diameterserver and diameterserver1.

  • The routing priority metric for both nodes is set to 1 to indicate equal priority, meaning that load balancing will be applied.

  • The DiameterMediationOcsConfigurationTable configuration profile at platform scope does not specify a host, so all outbound Diameter messages will not have the destination host set, but only the realm. This means the resource adaptor entity will round robin among all the hosts configured for the specified realm (in this case opencloud). However this behaviour can be overridden on a per-session basis by setting the OCSId field in session state using, for example, SubscriberDataLookup or a custom feature added with the SDK.

The following rhino-console session shows the complete configuration:

[Rhino@localhost (#0)] listraentityconfigproperties diameterro-0
Configuration properties for resource adaptor entity diameterro-0:
 3GPPVersion (java.lang.String): Vcb0
 BaseMessageApplicationID (java.lang.Integer): 0
 CertificateKeyStore (java.lang.String):
 CertificateKeyStorePassword (java.lang.String):
 CipherSuites (java.lang.String):
 ConfigurationProfile (java.lang.String): DiameterConfig/DiameterRoOcsProfile
 ConfigurationProfilePollTime (java.lang.Integer): 0
 ConnectTimeout (java.lang.Long): 30000
 ExtendedTransportConfiguration (java.lang.String):
 ExtensionAvpSet (java.lang.String): DiameterExtensions/Charging
 ExtensionAvpSetPollTime (java.lang.Integer): 0
 ExtensionMessages (java.lang.Boolean): true
 FireToServiceID (java.lang.String):
 ForceReconnectAfterDPR (java.lang.Boolean): true
 IOClientWorkers (java.lang.Integer): 0
 IOServerWorkers (java.lang.Integer): 0
 Quirks (java.lang.String):
 ReconnectDelay (java.lang.Long): 5000
 RequestTimeout (java.lang.Long): 2000
 SSLSessionTimeout (java.lang.Integer): 0
 ServiceContextId (java.lang.String): session@opencloud.com
 SessionTimeout (java.lang.Long): 780000
 SupportedVendorIds (java.lang.String):
 ThreadPoolSize (java.lang.Integer): 0
 TrustKeyStore (java.lang.String):
 TrustKeyStorePassword (java.lang.String):
 WatchdogTimeout (java.lang.Long): 30000
 WorkQueueSize (java.lang.Integer): 0
 slee-vendor:com.opencloud.rhino_max_activities (java.lang.Integer): 0
 slee-vendor:com.opencloud.rhino_replicate_activities (java.lang.String): none
[Rhino@localhost (#1)] listprofileattributes DiameterConfig DiameterRoOcsProfile
Action=LOCAL
AllowUnknownPeers=true
ApplicationId=0
ApplicationVendorId=0
EnableMultiNodeConfig=false
Host=diameterclient
ListenAddress={null}
NodeIDs={null}
PeerAddress=127.0.0.1
PeerConnectAtStartup=true
PeerHost=diameterserver
PeerPort=3868
PeerTable=<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE peer-table PUBLIC "-//Open Cloud Ltd.//DTD Diameter Peer Table Configuration 1.1.0//EN" "http://www.opencloud.com/dtd/diameter-peer-table-1.1.0.dtd">

<peer-table allowUnknownPeers="true">
    <!-- If allowUnknownPeers is true, then any peer may connect to this node.
         If allowUnknownPeers is not true, peers connecting to this node as clients must be defined in the Peer Table.-->
    <peer connectAtStartup="true">
        <hostname>diameterserver</hostname> <!-- Will accept connections from this peer -->
        <port>3868</port>
        <address>127.0.0.1</address>
        <tls>false</tls>
        <option>
            <option-name>TCP_NODELAY</option-name>
            <option-type>java.lang.Boolean</option-type>
            <option-value>true</option-value>
        </option>
    </peer>
    <peer connectAtStartup="true">
        <hostname>diameterserver1</hostname> <!-- Will accept connections from this peer -->
        <port>3868</port>
        <address>192.168.2.100</address>
        <tls>false</tls>
        <option>
            <option-name>TCP_NODELAY</option-name>
            <option-type>java.lang.Boolean</option-type>
            <option-value>true</option-value>
        </option>
    </peer>
</peer-table>
PeerUri={null}
PerNodeHosts={null}
PerNodeListenAddresses={null}
PerNodePorts={null}
PerNodeSecondaryAddresses={null}
Port=3869
Product=OpenCloud Diameter
ProductVendorId=19808
Realm=opencloud
RealmTable=<?xml version="1.0" encoding="UTF-8"?>
                 <!DOCTYPE realm-table PUBLIC "-//Open Cloud Ltd.//DTD Diameter Realm Table Configuration 1.1//EN"
                    "http://www.opencloud.com/dtd/diameter-realm-table-1.1.dtd">
                 <realm-table>
                    <realm>
                      <realm-name>opencloud</realm-name>
                      <application-route>
                        <application>
                          <application-id>4</application-id> <!-- 4=CCA -->
                          <vendor-id>0</vendor-id> <!-- optional, default is zero -->
                        </application>
                        <action>LOCAL</action>
                        <peer-ref>
                          <hostname>diameterserver</hostname>
                          <metric>1</metric>
                        </peer-ref>
                        <peer-ref>
                          <hostname>diameterserver1</hostname>
                          <metric>1</metric>
                        </peer-ref>
                      </application-route>
                    </realm>

                    <default-route>
                      <peer-ref>
                        <hostname>diameterserver</hostname>
                        <metric>1</metric>
                      </peer-ref>
                        <peer-ref>
                          <hostname>diameterserver1</hostname>
                          <metric>1</metric>
                        </peer-ref>
                    </default-route>

                  </realm-table>
SecondaryAddresses={null}
Transports=tcp
UseTLS=false
ValidDN={null}
Version=1
[Rhino@localhost (#2)] listprofileattributes DiameterMediationOcsConfigurationTable UNSET::::
DestinationHost={null}
DestinationRealm=opencloud
TimeoutDuration=2000

SIP SIS Resource Adaptor

SIP SIS resource adaptor entity (sip-sis-ra)

Note Refer to the SIS documentation for more information about the SIP SIS resource adaptor.

The sip-sis-ra is used for initiating and third-party SIP dialogs for both the Sentinel SIP Service and the Sentinel Subscription Service.

Link name Default Bound RA entity

sentinel-sip

sip-sis-ra

Sentinel and SIS

The sip-sis-ra interacts directly with the SIS, which is configured with compositions for the Sentinel SIP Service. The Sentinel SIP Service is triggered by all events from the SIP SIS RA entity. This behaviour is configurable. See the SIS documentation for more information about compositions and triggers.

Configuring SIS

Use the sis-console or SIS REM Module to modify the default SIS and sip-sis-ra configuration properties; see the SIS administration guide and SIS REM Module user guide for more details on managing the SIS instance.

Configuring the network interface

By default the sip-sis-ra is set to listen on localhost ports 5061 (secure) and 5060. It should be set to an external interface for network integration.

Unique ID Resource Adaptor

What is the Unique ID RA?

The Unique ID RA generates and returns guaranteed cluster-wide unique identifiers. New identifiers can be requested up to a limit of 512 per millisecond at a steady rate.

Note The identifiers are only guaranteed to be unique for a single Unique ID RA entity

Usage within Sentinel

The Sentinel SS7 Service uses the Unique ID RA to generate unique call reference numbers for non-SS7 triggered calls. All Sentinel services make a Unique ID RA provider available for injection into features, including custom features developed by third-party integrators using the Sentinel SDK. Sentinel Charge users can also make use of the Unique ID RA in their services.

Configuring the Unique ID RA entity

The Unique ID RA requires no configuration of any kind as it retrieves all the resources necessary for operation from Rhino. A Unique ID RA entity is ready for operation as soon as it is activated. The name of the standard RA entity used by Sentinel is uid.

Type and format of the IDs

The unique identifiers are of type java.lang.Long, utilising all 64 bits to maximize the range of unique identifiers possible.

Using the Unique ID RA

A feature or service uses the Unique ID RA by invoking the long generateUniqueID() method of the UniqueIDProvider interface. This method will block if the identifiers are requested continuously at a rate higher than 512 per millisecond.

Features

Sentinel comes with many features that can be used in feature execution scripts:

Feature category For…​

many networks

querying network elements and sending notifications

CAMEL networks

SIP

SIP networks

Diameter networks

testing

General Features

Sentinel includes many features that are useable in many networks:

Do Not Charge Session Feature

Description

Feature name

DoNotChargeSession

Applicable contexts

SS7 Service, SIP Service

SAS Support

No

Prerequisite Features

None

Notifies the Sentinel core to not charge the session. If Sentinel decides to let the session proceed, it will be a free session. Sentinel may still monitor the session unless another feature instructs Sentinel to not monitor the session (see DoNotMonitorSession feature). This is an initial trigger feature which can run before or after the credit check. If run before the credit check, it will prevent the credit check taking place and Sentinel will not establish a session with the OCS. If run after the credit check, it will cause Sentinel to finalize the OCS session reporting 0 used units.

Note

Immediate Event Charging behaviour

When Immediate Event Charging (IEC) is used (for example, for SMS) then running this feature post-credit-check can result in a refund being sent to the OCS if the session was previously charged. Running this feature pre-credit-check will result in no OCS interactions. Session termination methods such as ConnectAndClose and ContinueAndClose will not refund credit by default, so if a refund is required in those cases then this feature must be run post-credit-check.

Session state inputs and outputs

This feature does not read from or write to session state.

Error scenarios

This feature has no error conditions.

Feature responses

Response Reason

doNotChargeSession

intended behaviour

featureHasFinished

feature has finished

Configuration

This feature is not configurable.

Provisioning interfaces

This feature has no provisioning interfaces.

HTTP Determine Network Operator Feature

Description

Feature name

HttpDetermineNetworkOperator

Applicable contexts

SS7 Service, SIP Service, Sentinel Charge Example

SAS Support

No

Prerequisite Features

None

Extracts the name of the Network Operator from an HTTP request. This feature searches the request URL parameters for a name-value pair with name identified in the HttpParameterForHttpDetermineNetworkOperator field of the SentinelPlatformConfiguration. The feature then attempts to map the discovered value to a network operator name by looking it up in the SentinelHttpParameterToNetworkOperatorProfileTable. If the parameter is not found in the URL or there is no mapping available in the SentinelHttpParameterToNetworkOperatorProfileTable, a default network operator is used, as configured in the DefaultNetworkOperator field of the SentinelPlatformConfiguration.

For example, consider an HTTP trigger containing the following URL:

HttpDetermineNetworkOperator will query the name of the HttpParameterForHttpDetermineNetworkOperator in the SentinelConfigurationTable by selection key. In this case it returns “calledstationid”. The corresponding parameter value 00102 is then extracted from the URL, and the profile of the same name is retrieved from the HttpParameterToNetworkOperatorProfileTable. From this profile, the NetworkOperator is retrieved and stored in session state.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

A selection key to be populated with the network operator for this session

Runtime exception handled by feature runner

Outputs

Name Type Format Description

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>:<network>:::)

A Sentinel selection key with a non-empty network operator field

Error scenarios

Scenario Handling

Trigger is not an HTTP request

Report featureCannotStart

Finish

Malformed name-value pair in HTTP request

Increment CouldNotDetermineNetworkOperator stat

Use SentinelConfiguration defaultNetworkOperator

Configured name-value pair not found in request

Increment CouldNotDetermineNetworkOperator stat

Use SentinelConfiguration defaultNetworkOperator

No configured mapping found for value in SentinelHttpParameterToNetworkOperatorProfileTable

Increment CouldNotDetermineNetworkOperator stat

Use SentinelConfiguration defaultNetworkOperator

Feature responses

Response Reason

featureCannotStart

Trigger event must be an HttpRequest

featureHasFinished

feature has finished

Configuration

The SentinelHttpParameterToNetworkOperatorProfileTable:

Parameter Description

NetworkOperator

Network operator this profile’s name is mapped to

Relevant fields of the SentinelPlatformConfigurationTable:

Parameter Description

HttpParameterForHttpDetermineNetworkOperator

Name of the HTTP parameter to search for in the request URL

DefaultNetworkOperator

Network operator to fall back to if the HTTP parameter is not found in the request URL, or no mapping is found in the SentinelHttpParameterToNetworkOperatorProfileTable

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

SentinelHttpParameterToNetworkOperatorProfileTable

Mapping of HTTP parameter values to network operator names

HTTP parameter value (for example, 00102)

Provisioning interfaces

The feature is provisioned using the Sentinel HTTP Determine Network Operator REST API or web interface.

OcsParameterConfiguration Feature

Description

Feature name

OcsParameterConfiguration

Applicable contexts

SS7 Service, SIP Service, Diameter Service

SAS Support

No

Prerequisite Features

None

Sets the value of two session state fields related to determining the number of units to request from the OCS. These values can be used by mappers which produce CCRs as output in a decentralized unit-determination scenario.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Do not set RequestUnitsSeconds or RequestUnitsServiceSpecificReport featureHasFinished

Outputs

Name Type Format Description

RequestUnitsSeconds

Long

Positive integer

Number of seconds to request from OCS in a decentralized unit determination scenario

RequestUnitsServiceSpecific

Long

Positive integer

Number of service-specific units to request from OCS in a decentralized unit determination scenario

Error scenarios

Scenario Handling

Missing configuration profile

Use session state defaults

Feature responses

Response Reason

featureHasFinished

feature has finished

Configuration

The OcsParamConfigFeatureConfigProfileTable:

Parameter Type Description

RequestUnitsSeconds

Long

Units in seconds for Requested-Service-Unit/CC-Time Integer

RequestUnitsServiceSpecific

Long

Units as defined by the service for Requested-Service-Unit/CC-Service-Specific-Units Integer

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

OcsParamConfigFeatureConfigProfileTable

Selection of ocs parameters

SentinelSelectionKey (for example, OpenCloud:OpenCloud:::)

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Platform Operator is Network Operator Feature

Description

Feature name

PlatformOperatorIsNetworkOperator

Applicable contexts

All Services

SAS Support

No

Prerequisite Features

None

Updates the Sentinel selection key so that the network operator is the same as the configured platform operator. It is used in the single-tenancy case. This feature is an initial trigger feature which can be used as an alternative to any of the Determine Network Operator features. The implication of using this feature is that the platform will not support multi-tenancy configuration.

For example, upon initializing a session the selection key might look like:

Platform Operator Network Operator Session Type Plan Subscriber

OpenCloud

Then running PlatformOperatorIsNetworkOperator will result in a selection key that looks like:

Platform Operator Network Operator Session Type Plan Subscriber

OpenCloud

OpenCloud

The advantage of this is that in a single-tenancy scenario no work needs to be done to determine the network operator, but config data can still be scoped with a granularity finer than the network operator level.

Note This feature should be used in the single-tenancy case.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

Selection key including platform operator (for example, <platform>::::)

Platform operator to copy into NetworkOperator field of key

Runtime exception handled by feature runner

Outputs

Name Type Format Description

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

Selection key including network operator equal to platform operator (for example, <platform>:<platform>:::)

Platform operator has been copied into NetworkOperator field

Error scenarios

This feature always succeeds.

Feature responses

Response Reason

featureHasFinished

feature has finished

Configuration

This feature is not configurable.

Provisioning interfaces

This feature has no provisioning interfaces.

Session Tracing Activation Feature

This feature is used to determine if session tracing should be performed on this session or not, based on the subscriberId session state field.

Description

Feature name

SessionTracing

Applicable contexts

All services

SAS Support

No

Prerequisite Features

None

Two functions will be supported initially:

  • Prefix and exact match of the subscriber number based on Black/White lists

  • Percentage of Calls (not subscriber specific).

The subscriber number is determined by the SS7 Subscriber Determination Feature, Diameter Subscriber Determination Feature, or SIP Subscriber Determination Feature.

The address used for session tracing activation for each call type is the subscriber address associated with the call.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report featureCannotStart, featureHasFinished

Subscriber

String

SIP, Diameter, or SS7 Subscriber number format — see the respective Subscriber Determination features

The subscriber address for this session

Report featureCannotStart, featureHasFinished

Outputs

This feature does not write to SessionState.

Error scenarios

Scenario Handling

Missing entry in SessionTracingFeatureConfigProfileTable

Report featureCannotStart

Sessionstate Subscriber is null

Report featureCannotStart

Missing SessionTracingAddressPrefixList, addressListId, or addressList

Do not enable tracing

Feature responses

Response Reason

featureCannotStart

Configuration data is not found or subscriber address is not set in session state

featureHasFinished

feature has finished

Configuration

General feature configuration

Parameter Type Description

AverageNumberOfCallsToBeTraced

Integer

Calls per 10,000 traced: 0(0%), 1(0.01%), 10(0.1%), 100(1%), 1000(10%)

IsListScreeningModeUsed

Boolean

true/false. True selects list screening; false selects random tracing of sessions.

For the percentage of calls, a configuration profile will be maintained with the percentage of calls to be matched.

Percentage setting:

  • 0 — no calls are enabled

  • 1 — 1 in 10000 (or 0.01%) of calls are enabled

  • 10 — 10 in 10000 (or 0.1%) of calls enabled

  • 100 — 100 in 10000 (or 1%) of calls enabled

  • 1000 — 1000 in 10000 (or 10%) of calls enabled

  • No other configuration values valid

Note Any value above 10% of calls is out of the scope of this capability. 100% is already provided by the standard tracers.

Address list configuration

If list screening is activated, the Session Tracing Activation Feature uses a list of subscriberIds that, if matched to a session, will switch on tracing for the session. See Address lists for information on how to configure the address list data.

Tracing output

Tracing output will be sent to the parallel session branch of the trace key tree (that is, session.sentinel rather than sentinel). The level of the session tracing is determined by the trace levels of each key in that tree.

The session tracing prefix will be set to the value of subscriberId.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

SessionTracingFeatureConfigProfileTable

Session tracing configuration parameters

SentinelSelectionKey (for example, OpenCloud::::)

${PLATFORMOPERATOR}_Sentinel_AddressListConfigurationTable

Address list configuration

${SELECTIONKEY}:SessionTracing:AddressPrefixList

${PLATFORMOPERATOR}_Sentinel_AddressListEntryTable

Feature specific Address List entry table

${SELECTIONKEY}:SessionTracing:AddressPrefixList:${ADDRESS}

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Subscriber Data Lookup Feature

The Subscriber Data Lookup feature is a pre-credit check feature used to query subscriber-specific information from a relational database and store it in session state, for use by Sentinel features and mappers.

Description

Feature script name

SubscriberDataLookup

Applicable contexts

All services

SAS Support

No

Prerequisite Features

One of SS7 Subscriber Determination Feature, SIP Subscriber Determination Feature or Diameter Subscriber Determination Feature

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report featureCannotStart, featureHasFinished

Subscriber

String

SIP, Diameter, or SS7 Subscriber number format — see the respective Subscriber Determination features

The subscriber for this session whose data is to be retrieved from the subscriber database

Report featureCannotStart, featureHasFinished

Outputs

Name Type Format Description

Any sessionstate field

Supported types: String, Boolean, Integer, String[], Date[], Date

Any format

Data to be loaded into sessionstate from subscriber database

Error scenarios

Scenario Handling

Missing lookup type configuration

Report featureCannotStart

Sessionstate Subscriber is null

Report featureCannotStart

Exception while loading subscriber data from data source

Report featureCannotStart

No subscriber data found or empty record

Report featureFailedToExecute

Feature responses

Response Reason

featureCannotStart

invalid configuration

featureFailedToExecute

invalid subscriber

featureHasFinished

feature has finished

Configuration

Subscriber record field configuration:

The feature is configurable to allow additional fields to be added to the subscriber record and associate the additional or existing fields with with new or existing session state fields. These field definitions are configured in the ${SELECTIONKEY}SubscriberDataLookupFieldDefinitionProfileTable as follows:

Field Type Description

ColIdx

String

Indicates the column index of this field in a subscriber data record. Should match the profile name.

InsertParamIdx

int

Indicates the column index of this field in a subscriber data record. Should match the profile name.

ResFieldname

String

Name of the field when read into a result record

SessionStateFieldname

String

Name of the session state field this field should be loaded into

Type

String

The type of the field, both in session state and in the data source. Supported types: String, Boolean, Integer, String[], Date[], Date

UpdateParamIdx

int

Indicates the column index of this field in a subscriber data record. Should match the profile name.

The table of fields used for the mapping are scoped to the Sentinel selection key. The selection key may be configured at the following levels:

  • Platform operator

  • Network operator

  • Session type

  • The field definitions are configurable by Sentinel selection key. For example, different network operators will have different subscriber record fields. If a relational database is shared by multiple operators these different sets of subscribers will need to be provisioned in separate tables.

The Subscriber Data Lookup feature may retrieve the subscriber record from:

  • MySQL via JDBC

  • TimesTen via JDBC

  • Oracle via JDBC

  • Cassandra database (experimental).

  • JSLEE profiles (testing purposes)

Data source configuration

The choice of data source type is configured in the SubscriberDataLookupConfigProfileTable:

Field Type Description

LookupType

String

One of dbQuery, profile, profileIms, or Cassandra

Lookup type Description

dbQuery

Uses the dbquery-0 ra entity to perform the subscriber data query. This option is used for all the different RDBMS types such as MySQL, Oracle, and TimesTen. The type of database used and the associated settings are configured in the {{dbquery-0}}resource adaptor entity configuration. See DBQuery Resource Adaptor for further configuration information.

profile

Uses the ${PLATFORMOPERATOR}_SubscriberDataRecordProfileTable for the lookup. Only suitable for small sets of subscribers for testing and development purposes.

profileIms

Uses the ${PLATFORMOPERATOR}SubscriberDataImsPublicUserIdentityProfileTable and ${PLATFORMOPERATOR}SubscriberDataRecordProfileTable for the query.

Cassandra

Experimental.

SQL statement configuration

For flexibility and ease of integration, the Subscriber Data Lookup Feature is agnostic regarding external SQL data schemas. The SQL queries for a particular network operator are stored in a configuration profile scoped by Sentinel selection key to support the correct mapping.

SubscriberDataLookupSqlConfigProfileTable:

Field Type Description

LoadSQL

String

The SQL query for loading subscriber data from the data source. For example:

SELECT * FROM OpenCloud_Subscribers WHERE MSISDN = ?

ListSQL

String

The SQL query for listing Subscriber Data record ids (msisdns). For example:

SELECT MSISDN FROM OpenCloud_Subscribers ORDER BY MSISDN

InsertSQL

String

The SQL query for inserting a new Subscriber Data record. For example:

INSERT INTO OpenCloud_Subscribers
    (MSISDN,IMSI,FirstCall,subscriberlanguage,Account,SubscriptionType,ValidityStart,
    ValidityEnd,HomeZoneEnabled,HomeZoneList,ocsId,FriendsAndFamilyEnabled,FriendsAndFamilyList,
    ClosedUserGroupEnabled,ClosedUserGroupList,ClosedUserGroupPreferred,CUGIncomingAccessAllowed,
    CUGOutgoingAccessAllowed,CfBusy,CfNoReply,PromotionList,PromotionValidityStartDates,
    PromotionValidityEndDates)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)

UpdateSQL

String

The SQL query for updating a Subscriber Data record. For example:

UPDATE OpenCloud_Subscribers
    SET IMSI = ?,FirstCall = ?,subscriberlanguage = ?,Account = ?,SubscriptionType = ?,
        ValidityStart = ?,ValidityEnd = ?,HomeZoneEnabled = ?,HomeZoneList = ?,ocsId = ?,
        FriendsAndFamilyEnabled = ?,FriendsAndFamilyList = ?,ClosedUserGroupEnabled = ?,
        ClosedUserGroupList = ?,ClosedUserGroupPreferred = ?,CUGIncomingAccessAllowed = ?,
        CUGOutgoingAccessAllowed = ?,CfBusy = ?,CfNoReply = ?,PromotionList = ?,
        PromotionValidityStartDates = ?,PromotionValidityEndDates = ?
    WHERE MSISDN = ?

DeleteSQL

String

The SQL query for deleting a Subscriber Data record. For example:

DELETE FROM OpenCloud_Subscribers WHERE MSISDN = ?

loadByImsPublicUserIdentitySQL

String

SQL statement for loading a subscriber data record by a subscriber’s IMS public user identity; for example:

SELECT subs.* FROM @platform.operator.name@_Subscribers subs
    INNER JOIN @platform.operator.name@_SubscriberImsPublicUserIdentity sipids
    ON subs.MSISDN = sipids.SubscriberId
    WHERE sipids.ImsPublicUserId = ?

listImsPublicUserIdentitiesSQL

String

SQL statement for listing a subscriber’s IMS public user identities based on their subscriber ID

insertImsPublicUserIdentitySQL

String

SQL statement for inserting a new IMS public user identity for a subscriber

deleteImsPublicUserIdentitySQL

String

SQL statement for deleting a single IMS public user identity for a subscriber

deleteAllImsPublicUserIdentitiesForSubscriberSQL

String

SQL statement for deleting all of a subscriber’s IMS public user identities

useImsPublicUserIdentities

boolean

Use IMS Public User Identity SQL statements?

DatabaseRequestTimeout

int

The timeout period for any SQL query. Must be greater than 0

AsynchronousQuery

boolean

Uses DBQuery RA events to return result sets if true otherwise blocks the staging thread waiting for DatabaseRequestTimeout period using futures.

Subscriber data schema

The subscriber data schema contains the following mandatory fields (i.e. a field definition for these MUST be present as part of the Subscriber Record Field configuration) for all service types:

Parameter name Parameter type Description

MSISDN

String

Identifies the subscriber record

Language

String

Language code set during first call handling

Account

String

Account code required by the OCS

The default Sentinel SS7 Service configuration will include the following fields in addition to the mandatory fields:

Parameter name Parameter type Description

IMSI

String

Required by some service features

OCSId

String

Id of the OCS for this subscriber

SubscriptionType

String

identifes the subscription type of the subscriber

ValidityStart

String

Time and timezone of subscription validity. See Subscriber Validity Feature

ValidityEnd

String

Time and timezone of subscription validity. See Subscriber Validity Feature

HomeZoneEnabled

Boolean

True when HomeZone feature is activated for this subscriber. See Home Zone Feature

HomeZoneList

String[]

List of zones for this subscriber. See Home Zone Feature

FriendsAndFamilyEnabled

Boolean

true when HomeZone feature is activated for this subscriber. See Friends and Family Feature

FriendsAndFamilyList

String[]

List of zones for this subscriber. See Friends and Family Feature

ClosedUserGroupEnabled

Boolean

true when HomeZone feature is activated for this subscriber. See Closed User Group Feature

ClosedUserGroupList

String[]

List of zones for this subscriber. See Closed User Group Feature

ClosedUserGroupPreferred

Integer

List of zones for this subscriber. See Closed User Group Feature

CUGIncomingAccessAllowed

Boolean

See Closed User Group Feature

CUGOutgoingAccessAllowed

Boolean

See Closed User Group Feature

CfBusy

String

Forwarding number on busy. See Default Call Forwarding Feature

CfNoReply

String

Forwarding number on no reply. See Default Call Forwarding Feature

PromotionList

String array

Used by the subscriberIsEligible promotion script function. See Scripted Promotions Feature

PromotionValidityStartDates

String[]

Used by the subscriberIsEligible promotion script function. See Scripted Promotions Feature, and Subscriber Validity Feature for the date format

PromotionValidityEndDates

String[]

Used by the subscriberIsEligible promotion script function. See Scripted Promotions Feature, and Subscriber Validity Feature for the date format

The default Sentinel Diameter Service configuration will include the following fields in addition to the mandatory fields:

Parameter name Parameter type Description

CURRENTLY NONE

In the case where a subscriber is a user of both SS7 and Diameter services, the record will contain fields from both; but the Subscriber Data Lookup feature will only load data from fields associated with the selection key.

Example:

MSISDN

34600000001

Language

English

Account

6325

IMSI

346000000021234

OCSId

1

SubscriptionType

No

ValidityStart

1299193200664

ValidityEnd

3161070000000

HomeZoneEnabled

false

HomeZoneList

[WgtnCBD]

FriendsAndFamilyEnabled

false

FriendsAndFamilyList

[34600000001]

ClosedUserGroupEnabled

false

ClosedUserGroupList

[CUG1Profile]

ClosedUserGroupPreferred

1

CfBusy

34600000002

CfNoReply

34600000003

PromotionList

[FreeOffpeakVoice]

PromotionValidityStartDates

[1299193200664]

PromotionValidityEndDates

[3161070000000]

IMS

Public User Identities

Parameter Name Parameter type Description

ImsPublicUserId

String

an IMS public user identity

SubscriberId

String

subscriber ID used as key to the subscriber data table

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

${PLATFORMOPERATOR}_SubscriberDataRecordProfileTable

Per subscriber data records — use only for very small subscriber sets

MSISDN

${PLATFORMOPERATOR}_SubscriberDataImsPublicUserIdentityProfileTable

IMS public user identity to subscriber ID table — use only for very small subscriber sets

IMS Public User Identity, for example sip:user34600000002@opencloud.com

SubscriberDataLookupConfigProfileTableName

Field configuration and session state mapping

SentinelSelectionKey (for example, OpenCloud::::)

SubscriberDataLookupSqlConfigProfileTableName

SQL statement configuration

SentinelSelectionKey (for example, OpenCloud::::)

${SELECTIONKEY}_SubscriberDataLookupFieldDefinitionProfileTable

Table for mapping sql columns to session state; note that the SELECTIONKEY part has ‘^’ as separator character in this case for the table name!

Any name unique to the table

Database schemas

Database schemas for TimesTen and Oracle are available in the Sentinel release package.

Provisioning interfaces

The SubscriberDataLookup feature subscriber records and configuration may be provisioned using the Sentinel Subscriber Data REST API or web interface for the records and feature configuration.

Additional database support

For additional database support, please contact OpenCloud.

Subscriber Validity Feature

Description

Feature script name

SubscriberValidity

Applicable contexts

All services

SAS Support

No

Prerequisite features

SubscriberDataLookup

The Subscriber Validity feature performs a check that a subscriber is within a validity period within two inclusive dates. If the start date is not present, all dates prior to the end date are considered valid. If the end date is not present, then all dates from the start date are considered valid.

The validity dates are set on a per-subscriber basis.

If the current date at session initiation is within the valid period for the subscriber, the feature will have no effect on the call.

If the current date at session initiation is outside the valid period for the subscriber, the feature will release the call.

OCS interface

This feature has no interaction with the OCS (except for preventing the initial credit check by releasing the session).

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

ValidityStart

long

The time in UTC milliseconds from the epoch

Start of the subscriber’s validity period

value ⇐0 implies validity until ValidityEnd

ValidityEnd

long

The time in UTC milliseconds from the epoch

End of the subscriber’s validity period

value ⇐0 implies validity from ValidityStart

Outputs

This feature does not write to sessionstate.

Error scenarios

Scenario Handling

Invalid subscriber

Report featureFailedToExecute

Feature responses

Response Reason

featureFailedToExecute

invalid subscriber

featureHasFinished

feature has finished

Configuration

There are no general, feature-wide configuration parameters for this feature.

The subscriber validity fields are read using the Subscriber Data Lookup Feature.

Parameter Type Description

ValidityStart

String

Time and timezone of subscription validity

ValidityEnd

String

Time and timezone of subscription validity

  • The format of these parameters must follow the ISO 8601 standard, specifically the YYYY-MM-DDThh:mm:ss±hh:mm format.

  • ValidityEnd must be: the same day as ValidityStart or later; not set.

  • ValidityStart must be: the same day as ValidityEnd or earlier; not set.

Example:

ValidityStart

2011-03-04T12:00:00+02:00

ValidityEnd

2070-03-04T00:00:00-08:00

If neither ValidityEnd nor ValidityStart are set, the session is valid.

Provisioning interfaces

The Subscriber Validity Feature is provisioned using the Subscriber Data Lookup Feature.

Query And Notification Features

Sentinel includes many features for querying network elements and sending notifications:

ATI Lookup Feature

The ATI Lookup feature performs a MAP AnyTimeInterrogation lookup.

Description

Feature name

ATILookup

Applicable contexts

SS7 service

SAS Support

No

Prerequisite Features

Determine ATI Lookup Number Feature

The MAP AnyTimeInterrogation lookup is based on the address selected by a previous execution of the Determine ATI Lookup Number Feature. The ATI request contents and destination HLR are determined by the configuration associated with the feature.

The ATI response is saved in the Sentinel session state.

Feature parameters

The ATI Lookup feature supports the following parameters that may be passed in a feature execution script run statement:

Name Description

configQualifier

An additional string appended to the SentinelSelectionKey when determining the configuration profile used by the feature. For example, if the original configuration profile was OpenCloud::::, then the configuration profile used for a configQualifier parameter of “Config1” would be OpenCloud:::::Config1.

Session State inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

See error handling for ATILookupFeatureConfigProfileTable

ATILookupNumber

String

MSISDN string

Subscriber MSISDN to perform the ATI lookup for

See error handling

Outputs

Name Type Format Description

AnyTimeInterrogationRes

com.opencloud.slee.resources.cgin.map.MAPAnyTimeInterrogationRes

MAPAnyTimeInterrogationRes

The ATIResponse from the HLR for the ATILookup

Error scenarios

Scenario Handling

Missing entry in ATILookupFeatureConfigProfileTable

Increment SendFailures stat
Report featureFailedToExecute

Null sessionstate ATILookupNumber

Increment SendFailures stat
Report featureFailedToExecute

Error parsing ATILookupNumber

Increment SendFailures stat
Report featureFailedToExecute

Null sessionstate HLRAddress

Increment SendFailures stat
Report featureFailedToExecute

Null sessionstate GSMSCFAddress

Increment SendFailures stat
Report featureFailedToExecute

Failed to send request Increment

SendFailures stat
Report featureFailedToExecute

ATIResponse missing SubscriberInfo.MnpInfo

Increment MalformedResponses and ReceivedResponses stats
Do not set sessionstate AnyTimeInterrogationRes
End and detach from dialog

Feature responses

Response Reason

featureFailedToExecute

ATI response timeout or failed sending request

featureHasFinished

feature has finished

Configuration

The ATI Lookup configuration includes:

Parameters Type Description

SccpOriginatingAddress

SCCP address

Will be used as the TCAP Calling Party Address in dialogs initiated towards the HLR and MSC. May be null, in which case the local SCCP address configured for the platform is used. Example: type=c7,ri=gt,digits=34607012345,nature=national,national=true

InvokeTimeout

Long

AnyTimeInterrogation invoke timeout in milliseconds (for example, 5000). A ‘0’ value results in CGIN RA defaults being used.

RouteOnSubscriberNumber

Boolean

‘true’ will route based on the selected ATILookupNumber.

GSMSCFAddress

AddressString

Return address for responses (such as address of Sentinel)

HLRAddress

SCCP address

Static HLR address, or dynamic address template used when performing dynamic routing.

QueryLocationInfo

Boolean

Whether to include location info query in the ATI request.

QuerySubscriberState

Boolean

Whether to include subscriber state query in the ATI request.

QueryIMEI

Boolean

Whether to include IMEI query in the ATI request.

QueryMSClassmark

Boolean

Whether to include MS Classmark query in the ATI request.

HLR routing determination

The destination HLR for the MAP AnyTimeInterrogation request is determined based on routeOnSubscriberNumber configuration value. If true, the HLRAddress will not be considered a static address, and will instead be used as a template into which the ATILookupNumber (set by the Determine ATI Lookup Number Feature) digits are copied to determine the HLR address to route to.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

ATILookupFeatureConfigProfileTable

Feature configuration

SentinelSelectionKey (such as OpenCloud::::)

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Determine ATI Lookup Number Feature

Description

Feature name

DetermineATILookupNumber

Applicable contexts

SS7 service

SAS Support

No

Prerequisite Features

The Determine ATI Lookup Number feature is an initial trigger feature used to configure a subsequent execution of the ATI Lookup Feature. The feature extracts one of the CalledPartyNumber, CallingPartyNumber, or CalledPartBCDNumber from a CAP InitialDP, or the subscriber from session state, and saves it for later use.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report
featureCannotStart

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

InitialDP which triggered this session

Report
featureCannotStart

CallType

com.opencloud.sentinel.common.CallType

Session type of this call for determining from configuration which party address to look up

Report
featureCannotStart

Outputs

Name Type Format Description

ATILookupNumber

String

MSISDN string

The subscriber address to perform the ATI Lookup for

Error scenarios

Scenario Handling

Missing entry in DetermineATILookupNumberConfigProfileTable

Report featureCannotStart

Session state InitialDPArg is null

Report featureCannotStart

Session state InitialDPArg not CAP

Report featureCannotStart

Session state CallType is null

Report featureCannotStart

No configured lookup party for call scenario

Report featureCannotStart

Feature responses

Response Reason

featureCannotStart

invalid or missing configuration

featureHasFinished

feature has finished

Configuration

The Determine ATI Lookup Number configuration includes:

Parameters Type Description

MobileOriginatingParty

LookupPartyEnum

The party to use for the subsequent ATI Lookup (via the ATI Lookup Feature) for mobile originating calls.

MobileTerminatingParty

LookupPartyEnum

The party to use for the subsequent ATI Lookup (via the ATI Lookup Feature) for mobile terminating calls.

MobileForwardedParty

LookupPartyEnum

The party to use for the subsequent ATI Lookup (via the ATI Lookup Feature) for mobile forwarded calls.

Each LookupPartyEnum property may be set to one of the following values:

Value name Description

CallingPartyNumber

Indicates to set the ATI Lookup number from the InitialDP.CallingPartyNumber

CalledPartyNumber

Indicates to set the ATI Lookup number from the InitialDP.CalledPartyNumber

CalledPartyBCDNumber

Indicates to set the ATI Lookup number from the InitialDP.CalledPartyBCDNumber

SessionSubscriber

Indicates to set the ATI Lookup number from the Sentinel session subscriber.

Using this value requires a previous execution of the SS7 Subscriber Determination Feature.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

DetermineATILookupNumberConfigProfileTable

Feature configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Determine MNP Lookup Number Feature

Description

Feature name

DetermineMNPLookupNumber

Applicable contexts

SS7 service

SAS Support

No

Prerequisite Features

The Determine MNP Lookup Number feature is an initial trigger feature used to configure a subsequent execution of the MNP Lookup Feature. The feature extracts one of the CalledPartyNumber, CallingPartyNumber, or CalledPartBCDNumber from a CAP InitialDP, or the subscriber from session state, and saves it for later use.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report featureCannotStart

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

InitialDP which triggered this session, from which the lookup number will be read

Report featureCannotStart

CallType

com.opencloud.sentinel.common.CallType

Session type of this call for determining from configuration which party address to lookup

Report featureCannotStart

Outputs

Name Type Format Description

MNPLookupNumber

String

MSISDN string

The subscriber address to perform the MNP Lookup for

Error scenarios

Scenario Handling

Missing entry in DetermineMNPLookupNumberConfigProfileTable

Report featureCannotStart

Sessionstate InitialDPArg is null

Report featureCannotStart

Sessionstate InitialDPArg not CAP

Report featureCannotStart

Sessionstate CallType is null

Report featureCannotStart

No configured lookup party for call scenario

Report featureCannotStart

Feature responses

Response Reason

featureCannotStart

invalid or missing configuration

featureHasFinished

feature has finished

Configuration

The Determine MNP Lookup Number configuration includes:

Parameters Type Description

MobileOriginatingParty

LookupPartyEnum

The party to use for the subsequent ATI Lookup (via the MNP Lookup Feature) for mobile originating calls

MobileTerminatingParty

LookupPartyEnum

The party to use for the subsequent ATI Lookup (via the MNP Lookup Feature) for mobile terminating calls

MobileForwardedParty

LookupPartyEnum

The party to use for the subsequent ATI Lookup (via the MNP Lookup Feature) for mobile forwarded calls

Each LookupPartyEnum property may be set to one of the following values:

Value name Description

CallingPartyNumber

Indicates to set the MNP Lookup number from the InitialDP.CallingPartyNumber

CalledPartyNumber

Indicates to set the MNP Lookup number from the InitialDP.CalledPartyNumber

CalledPartyBCDNumber

Indicates to set MNP ATI Lookup number from the InitialDP.CalledPartyBCDNumber

SessionSubscriber

Indicates to set the MNP Lookup number from the sentinel session subscriber. Using this value requires a previous execution of the SS7 Subscriber Determination Feature

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

DetermineMNPLookupNumberConfigProfileTable

Feature configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Determine SRI Lookup Number Feature

Description

Feature name

DetermineSRILookupNumber

Applicable contexts

SS7 service

SAS Support

No

Prerequisite features

The Determine SRI Lookup Number feature is an initial trigger feature used to configure a subsequent execution of the SRI for Basic Call Routing Feature. The feature extracts one of the CalledPartyNumber, CallingPartyNumber, or CalledPartBCDNumber from a CAP InitialDP, or the subscriber from session state, and saves it for later use.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report featureCannotStart

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

InitialDP which triggered this session, from which the lookup number will be read

Report featureCannotStart

CallType

com.opencloud.sentinel.common.CallType

Session type of this call for determining from configuration which party address to lookup

Report featureCannotStart

Outputs

Name Type Format Description

SRILookupNumber

String

MSISDN string

The subscriber address to perform the SRI Lookup for

Error scenarios

Scenario Handling

Missing entry in DetermineSRILookupNumberConfigProfileTable

Report featureCannotStart

Sessionstate InitialDPArg is null

Report featureCannotStart

Sessionstate InitialDPArg not CAP

Report featureCannotStart

Sessionstate CallType is null

Report featureCannotStart

No configured lookup party for call scenario

Report featureCannotStart

Feature responses

Response Reason

featureCannotStart

invalid or missing configuration

featureHasFinished

feature has finished

Configuration

The Determine SRI Lookup Number configuration includes:

Parameters Type Description

MobileOriginatingParty

LookupPartyEnum

The party to use for the subsequent SRI Lookup (via the SRI for Basic Call Routing Feature) for mobile originating calls.

MobileTerminatingParty

LookupPartyEnum

The party to use for the subsequent SRI Lookup (via the SRI for Basic Call Routing Feature) for mobile terminating calls.

MobileForwardedParty

LookupPartyEnum

The party to use for the subsequent SRI Lookup (via the SRI for Basic Call Routing Feature) for mobile forwarded calls.

Each LookupPartyEnum property may be set to one of the following values:

Value name Description

CallingPartyNumber

Indicates to set the SRI Lookup number from the InitialDP.CallingPartyNumber

CalledPartyNumber

Indicates to set the SRI Lookup number from the InitialDP.CalledPartyNumber

CalledPartyBCDNumber

Indicates to set the SRI Lookup number from the InitialDP.CalledPartyBCDNumber

SessionSubscriber

Indicates to set the SRI Lookup number from the Sentinel session subscriber. Using this value requires a previous execution of the SS7 Subscriber Determination Feature.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

DetermineSRILookupNumberConfigProfileTable

Feature configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Flash SMS Notification Feature

This feature is a pre-credit-check, post-credit-check, or end-session feature.

Description

Feature name

FlashSms

Applicable contexts

  • SS7 service

SAS Support

No * Diameter service * SIP service

Prerequisite features

A feature to set the NotificationMessage and NotificationAddress session state variables

The notification information will be accessed from the NotificationMessage session state variable which was set by a prior feature. The supported data coding schemes are GSM_7BIT and UCS2 — the message will be sent using the GSM_7BIT coding scheme if it can be represented in the 7-bit alphabet; otherwise, the UCS2 coding scheme will be used.

The notification message will be sent to (in order of precedence):

  • Address in NotificationAddress session state variable (if set)

  • Address in Subscriber session state variable.

If neither of these variables are set then the message will not be sent.

The feature checks the IMSI and MSCAddress session state fields. When both are set the feature will not perform an SendRoutingInformationForSM but use the MSCAddress session state field instead.

Note MTForwardSM will return success if the handset is available and message delivered. If it’s not, then a error response will be returned that the message was not deliverable (absent subscriber, and so on). As the call is either in progress or has just ended, the message will be deliverable in the vast majority of cases so no special behaviour is required in the error cases after sending MTForwardSM. Sentinel will not attempt to retry sending the message if there is an error delivering the message for any reason.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Increment SmsDeliveryFailures, return

IMSI

String

IMSI

The subscriber’s IMSI address, which may require an SRI lookup if null

Perform an SRI lookup

MSCAddress byte[]

SCCP address

The subscriber’s current MSC address, which may require an SRI lookup if null

Perform an SRI lookup

NotificationMessage

String

Arbitrary text

The textual content of the flash SMS

Increment SmsDeliveryFailures, return

NotificationAddress

String

MSISDN

The flash SMS destination address

Fall back to session state Subscriber address

Subscriber

Outputs

Name Type Format Description

IMSI

String

IMSI

Determined through SRI lookup if previously null

MSCAddress

byte[]

SCCP address

Determined from SRI lookup if previously null

Error scenarios

This table applies if an SRI is required:

Scenario Handling

Null sessionstate selection key

Increment SmsDeliveryFailures

Missing entry in FlashSmsFeatureConfigProfileTable

Increment SmsDeliveryFailures

No notification address or subscriber address

Increment SmsDeliveryFailures

Null TemplateHlrSccpAddress in FlashSMS config

Increment SmsDeliveryFailures

Exception sending SRI

Increment SmsDeliveryFailures

OpenRefuse from HLR

Increment HlrSS7ProviderErrors or HlrSS7UserErrors
Increment SmsDeliveryFailures
Close dialog
Increment HlrSS7Errors

Abort from HLR

Increment HlrProviderAborts or HlrUserAborts
Increment SmsDeliveryFailures
Increment HlrAbortsReceived

Timeout waiting for HLR response

Increment HlrTimeouts
Increment HlrSS7ProviderErrors or HlrSS7UserErrors
Increment SmsDeliveryFailures
Close dialog

Exception closing dialog in any HLR dialog failure scenario

Increment SmsDeliveryFailures
Increment HlrSS7Errors

This table applies if the SRI succeeds or is not required:

Scenario Handling

No notification address or subscriber address in sessionstate

Increment SmsDeliveryFailures

Null sessionstate MSCAddress

Increment SmsDeliveryFailures

Null sessionstate IMSI

Increment SmsDeliveryFailures

Null sessionstate NotificationMessage

Increment SmsDeliveryFailures

Exception sending mtForwardSM request

Increment SmsDeliveryFailures

MessageEncodingFailure sending mtForwardSM request

Increment SmsDeliveryFailures
Increment EncodingFailure

OpenRefuse from MSC

Increment MscSS7ProviderErrors
or MscSS7UserErrors
Increment SmsDeliveryFailures
Close dialog
Increment MscSS7Errors

Abort from MSC

Increment MscProviderAborts or MscUserAborts
Increment SmsDeliveryFailures
Increment MscAbortsReceived

Timeout waiting for MSC response

Increment MscTimeouts
Increment MscSS7ProviderErrors or MscSS7UserErrors
Increment SmsDeliveryFailures
Close dialog

Feature responses

Response Reason

featureHasFinished

feature has finished

Configuration

The Flash SMS Notification configuration includes:

Parameter Type Description

SccpOriginatingAddress

SCCP address

Will be used as the TCAP Calling Party Address in dialogs initiated towards the HLR and MSC. May be null in which case the local SCCP address configured for the platform will be used. Example: type=c7,ri=gt,digits=34607012345,nature=national,national=true

InvokeTimeout

Long

SRIforSM and MTForwardSM invoke timeouts in milliseconds (for example, 5000). A 0 value results in CGIN RA defaults being used.

TemplateHlrSccpAddress

SCCP address

A template address that will be used to address the HLR. Global title digits in the template address will be replaced with the relevant notification address. The encoding scheme will also be updated, if relevant for the GT indicator type, to indicate BCD_ODD or BCD_EVEN, depending on the number of address digits.

TemplateMscSccpAddress

SCCP address

A template address that will be used to address the MSC. Global title digits in the template address will be replaced with the MSC address from session state. The encoding scheme will also be updated, if relevant for the GT indicator type, to indicate BCD_ODD or BCD_EVEN, depending on the number of address digits.

SMSAddressOriginatingAddress

SMSAddress

Local SCCP address (for example, address=64600000002,nature=INTERNATIONAL,numberingPlan=ISDN)

AddressStringServiceCentreAddress

AddressString

Service centre address (for example, address=643434,nature=INTERNATIONAL,numberingPlan=ISDN)

ShortMsgMTApplicationContext

TcapApplicationContext

The MAP application context to be used for the dialog towards the MSC. Must be one of:

  • shortMsgMT-RelayContext-v1-ac

  • shortMsgMT-RelayContext-v2-ac

  • shortMsgMT-RelayContext-v3-ac

  • shortMsgMT-Relay-VGCS-Context-v3-ac

Call flow

There are two MAP requests as party of the MTForwardSM process:

  1. Obtaining the routing information from the HLR.

  2. Sending the MT SMS.

The first step is performed by sending an SendRoutingInformationForSM request to the HLR to determine the routing information for the MT Forward SM. This step is not performed if the IMSI and MSCAddress session state fields are set.

The HLR SCCP Address will be based on the MSISDN of the subscriber. (See MAP SPEC Section 4 Requirements concerning the use of SCCP and TC/4.1.3.3 The Home Location Register (HLR) — refer to MAP SPEC footnote). The MSISDN will be retrieved from SessionState.NotificationAddress or SessionState.Subscriber.

hlrSccpAddress.address={SessionState.NotificationAddress or SessionState.Subscriber)
hlrSccpAddress.nature=International
hlrSccpAddress.numberingPlan=ISDN
hlrSccpAddress.routingIndicator=(GT for extra/inter-PLMN, GT or SPC for intra-PLMN) default 0 (GT)
hlrSccpAddress.GTI=0100 (Global title indicator = 0100 (Global title includes translation type, numbering plan, encoding scheme and nature of address indicator)
hlrSccpAddress.type=C7
hlrSccpAddress.ssnIndicator=1 (MAP SSN always included)
hrlSccpAddress.ssn=(configured per network) default 6
hrlSccpAddress.pc=(configured per network) default not set
hlrSccpAddress.tt=0 (not used)
imsi = RoutingInfoForSM-Res.imsi
msc-number = RoutingInfoForSM-Res.locationInfoWithLMSI.networkNode-Number
IF RoutingInfoForSM-Res.locationInfoWithLMSI.gprsNodeIndicator not present OR
   (RoutingInfoForSM-Res.locationInfoWithLMSI.gprsNodeIndicator present AND
    RoutingInfoForSM-Res.LocationInfoWithLMSI.additional-Number is sgsn-Number) THEN
    mscAddress = RoutingInfoForSM-Res.LocationInfoWithLMSI.networkNode-Number
else
    mscAddress = RoutingInfoForSM-Res.LocationInfoWithLMSI.additional-Number
Note RoutingInfoForSM-Res.locationInfoWithLMSI.networkNode-Number renamed from msc-Number between R96 and R97. The networkNode-number can also contain an sgsn-number or IP-SM-GW number or SMS Router number.

The second step is to send the MTForwardSM:

Field Value

destination SCCP address

msc-number from the SRIforSM or MSCAddress session state field

sm-RP-DA.imsi

use the imsi from the SRIforSM or the IMSI session state field

sm-RP-OA.serviceCentreAddress

Sentinel address for response messages

sm-RP-UI

SMSDeliver as below

moreMessagesToSend

not set

extensionContainer

not set

smDeliveryTimer

not set

smDeliveryStartTime

not set

SMSDeliver:

Field Value

onlyHeader

not set

replyPath

false

userDataHeaderIndicator

true

statusReportIndication

false

moreMessagesToSend

NONE

loopPrevention

false

originatingAddress

configurable address — probably some service number

protocolId

0 (TelematicDevice.IMPLICIT)

dataCodingScheme

{MessageClass=SPARE_0, MessageCoding determined by encoded text, supports GSM_7BIT or UCS2}

serviceCentreTimeStamp

current time

userDataLength

length of encoded text based on data coding scheme

userData

encoded text

The SMS PDU of the message sent will be taken from the notification session state variables.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

FlashSmsFeatureConfigProfileTable

Selection of database implementation and rating group for the feature.

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

MAP SPEC

Digital cellular telecommunications system (Phase 2+); Mobile Application Part (MAP) specification (3GPP TS 09.02 version 5.17.0 Release 1996)

ETSI/3GPP

2002-03

ETSI

MNP Lookup Feature

Description

Feature name

MNPLookup

Applicable contexts

SS7 service

SAS Support

No

Prerequisite features

Determine MNP Lookup Number Feature

The MNP (Mobile Number Portability) Lookup Feature performs a MAP AnyTimeInterrogation MNP lookup based on the address selected by a previous execution of the Determine MNP Lookup Number Feature. The MNP ATI destination HLR is determined by the configuration associated with the feature. The party to look up is based on the MNPLookupNumber saved into session state by the Determine MNP Lookup Number Feature.

The MNP response is saved in the sentinel session state.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Increment SendFailures stat Report featureFailedToExecute Return

MNPLookupNumber

String

MSISDN

Address to perform the MNP lookup for

Increment SendFailures stat Report eatureFailedToExecute Return

Outputs

Name Type Format Description

MNPInfo

com.opencloud.slee.resources.cgin.map.MAPMNPInfoRes

MAP-MS-DataTypes.MNPInfoRes

The MNP lookup result

Error scenarios

Scenario Handling

Missing entry in MNPLookupFeatureConfigProfileTable

Increment SendFailures stat
Report featureFailedToExecute

Null sessionstate MNPLookupNumber

Increment SendFailures stat
Report featureFailedToExecute

Error parsing MNPLookupNumber

Increment SendFailures stat
Report featureFailedToExecute

Null MNPSRFSccpAddress configured in MNPLookupFeatureConfigProfileTable

Increment SendFailures stat
Report featureFailedToExecute

Null GSMSCFAddressString configured in MNPLookupFeatureConfigProfileTable

Increment SendFailures stat
Report featureFailedToExecute

Exception while trying to send ATIRequest

Increment SendFailures stat
Report featureFailedToExecute

OpenRefuse from MNP SRF

Close dialog Increment SS7ProviderErrors or SS7UserErrors

Abort from MNP SRF

Close dialog
Increment SS7Aborts

Timeout waiting for MNP SRF response

Close dialog
Increment SS7Timeouts

Feature responses

Response Reason

featureFailedToExecute

Missing sessionstate or configuration data, exception while sending ATIRequest or error response from MNP SRF

featureHasFinished

feature has finished

Configuration

The MNP Lookup configuration includes:

Parameters Type Description

OriginatingSccpAddress

SCCP address

Will be used as the TCAP Calling Party Address in dialogs initiated towards the HLR and MSC. May be null in which case the local SCCP address configured for the platform will be used. Example: type=c7,ri=gt,digits=34607012345,nature=national,national=true

InvokeTimeout

Long

AnyTimeInterrogation invoke timeout in milliseconds (for example, 5000). A 0 value results in CGIN RA defaults being used.

GSMSCFAddress

AddressString

Return address for responses (for example, address of Sentinel)

MNPSRFSccpAddress

SCCP address

Static address of an MNP SRF.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

MNPLookupFeatureConfigProfileTable

Feature configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning Interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

SRI for Basic Call Routing Feature

Description

Feature name

SRIForBasicCallRouting

Applicable contexts

SS7 service

SAS Support

No

Prerequisite features

Determine SRI Lookup Number Feature

The SRI For Basic Call Routing feature performs a MAP SendRoutingInformation lookup based on the address selected by a previous execution of the Determine SRI Lookup Number Feature. The SRI request contents and destination HLR are determined by the configuration associated with the feature.

The SRI response is saved in the SendRoutingInfoRes field defined in the com.opencloud.sentinel.feature.common.sribasiccall.SRIForBasicCallRoutingSessionState Sentinel session state interface.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Increment SendFailures stat Report featureFailedToExecute Report featureHasFinished Return

SRILookupNumber

String

MSISDN

Address for which to perform SRI lookup

Return

Outputs

Name Type Format Description

SendRoutingInfoRes

com.opencloud.slee.resources.cgin.map.MAPSendRoutingInfoRes_v3

MAP-CH-DataTypes.SendRoutingInfoRes-v3

The result of the SRI lookup

Error scenarios

Scenario Handling

Missing profile entry in SRIForBasicCallRoutingFeatureConfigProfileTable

Increment SendFailures stat
Report featureFailedToExecute
Report featureHasFinished

Exception creating MSISDN string using sessionstate SRILookupNumber

Report featureHasFinished

Null HLRAddress or GsmScfAddress in config profile

Increment SendFailures stat
Report featureFailedToExecute
Report featureHasFinished

Exception sending SRI request to HLR

Increment SendFailures stat
Report featureFailedToExecute
Report featureHasFinished

OpenRefuse from HLR

Close dialog
Increment SS7ProviderErrors or SS7UserErrors
if sriConfig.failOnError report featureFailedToExecute
Report featureHasFinished

Abort from HLR

Close dialog
Increment SS7Aborts
if sriConfig.failOnError report featureFailedToExecute
Report featureHasFinished

Timeout waiting for HLR response

Close dialog
Increment SS7Timeouts
if sriConfig.failOnError report featureFailedToExecute
Report featureHasFinished

Feature responses

Response Reason

featureHasFinished

feature has finished

featureFailedToExecute

unclassified

Session State interface

Uses the SRILookupNumber as the MSISDN for the query. If this is not set the feature continues without affecting the call.

The SendRoutingInfoRes result is stored in the SendRoutingInfoRes field defined in the com.opencloud.sentinel.feature.common.sribasiccall.SRIForBasicCallRoutingSessionState session state interface.

The IMSI from the SendRoutingInfoRes is stored in the IMSI field defined in the com.opencloud.sentinel.common.ImsiSessionState session state interface.

Configuration

The SRI For Basic Call Routing configuration includes:

Parameters Type Description

SccpOriginatingAddress

SCCP address

Will be used as the TCAP Calling Party Address in dialogs initiated towards the HLR and MSC. May be null in which case the local SCCP address configured for the platform will be used. Example: type=c7,ri=gt,digits=34607012345,nature=national,national=true

InvokeTimeout

Long

SendingRoutingInformation invoke timeout in milliseconds (for example, 5000). A 0 value results in CGIN RA defaults being used.

Map3Supported

Boolean

if ‘true’ will use locationInfoRetrievalContextv3-ac, if ‘false’ locationInfoRetrievalContext-v2-ac

HLRAddress

SCCP address

HLR address for the SRI

GSMSCFAddress

AddressString

Return address for responses (e.g. Sentinel address)

PrePagingSupported

Boolean

When true sets the Pre_pagingSupported flag in the SRI

FailOnError

Boolean

When true the feature will respond on error with a featureFailedToExecute to the Sentinel core, when false the feature will continue without reporting error to the core.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

SRIForBasicCallRoutingFeatureConfigProfileTable

Feature configuration

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

CAMEL Features

Sentinel includes many features for CAMEL networks:

Accept Protocol Feature

This feature allows the dialog processing to proceed if the application context is acceptable.

Description

Feature name

AcceptProtocol

Applicable contexts

SS7 Service

SAS Support

No

Prerequisite features

None

Dialogs with unacceptable application contexts are refused with the reason code USER_ACN_NOT_SUPPORTED.

The acceptable application contexts are:

  • cap_v1_gsmSSF_to_gsmSCF-AC

  • cap-v2-gsmSSF-to-gsmSCF-AC

  • capssf_scfGenericAC (CAP3)

  • cap3_sms_AC

This feature also sets the SessionType parameter to call or sms.

The feature notifies the Sentinel core if the dialog is a voice (includes data, video fax) or sms dialog.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Runtime exception handled by feature runner

Outputs

Name Type Format Description

SessionType

com.opencloud.sentinel.common.SessionType

One of: call, sms

Session type determined from application context

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>:<network>:<session type>::)

Updated selection key including session type determined from application context

Protocol

com.opencloud.sentinel.common.SentinelProtocol

One of: cap_v1, cap_v2, cap_v3, cap_v4, etsi_inap_cs1, map_rel4, call_control

Session protocol determined from application context

Error scenarios

Scenario Handling

Trigger not instance of DialogOpenRequestEvent

Report featureCannotStart

Feature responses

Response Reason

refuseDialog

User ACN not supported

featureCannotStart

Trigger event is not a DialogOpenRequestEvent

markSessionType

mark the session type (one of: call, sms, diametermediation, sipcall, unset) in session state

featureHasFinished

feature has finished

Configuration

This feature is not configurable.

Provisioning interfaces

This feature has no provisioning interfaces.

Call Barring Feature

The Call Barring feature is a network operator barring feature. That is, it is intended for barring/allowing calls to specific numbers at network and plan scope.

Description

Feature name

CallBarring

Applicable contexts

SS7 service

SAS Support

No

Prerequisite features

It is run pre credit check, early in the feature list (but always after the emergency number feature). If the barring algorithm returns a match, then the feature returns an instruction to the Sentinel core to release the call and close with no further intervention from Sentinel.

The default release cause value is CLASS1_CALL_REJECTED. This value may be overridden by configuration.

Note This feature is for network operator wide barring. It is not a per subscriber barring feature.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, '<platform>::::')

For selecting configuration data

Report featureCannotStart, featureHasFinished

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP-DataTypes.InitialDPArg

InitialDP which triggered this session, from which the CalledPartyBCDNumber will be read

Report featureCannotStart, featureHasFinished

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Barring will only be performed for mobile originating calls

Report featureCannotStart, featureHasFinished

Outputs

This feature does not write to session state.

Error scenarios

Scenario Handling

Trigger not instance of DialogOpenRequestEvent

Report featureCannotStart

Null sessionstate SentinelSelectionKey

Report featureCannotStart

InitialDP not CAP

Report featureCannotStart

Null sessionstate CallType

Report featureCannotStart

InitialDP does not contain a CalledPartyBCDNumber

Report featureCannotStart

Feature responses

Response Reason

featureCannotStart

SessionState SentinelSelectionKey is not set, protocol is not CAP, session type has not been set, or InitialDP does not contain a CalledPartyBCDNumber

releaseCallAndCloseDialog

call is barred

featureHasFinished

feature has finished

Determining if a call is to be barred

The Call Barring feature analyses the InitialDP to determine whether to request barring of the call:

IF call is not a mobile originating call THEN
    do not barr call
    RETURN
ENDIF

IF idp.calledPartyBCDNumber does not match using longest prefix match in black list THEN
    do not barr call
    RETURN
ENDIF

IF idp.calledPartyBCDNumber does not match using longest prefix match in white list THEN
        barr call
    RETURN
ENDIF

do not barr call

Triggers and application contexts

Application Contexts:

  • cap-v2-gsmSSF-to-gsmSCF-AC

  • capssf_scfGenericAC (CAP3).

The InitialDP will be triggered on DP2 (Collected_Info).

Typical call flow

  • MSC ---- OpenRequest -→ Sentinel

  • MSC ---- IDP(Cdpn=123) -→ Sentinel

  • MSC ←-- OpenAccept --- Sentinel

  • MSC ←-- Release(cause) --- Sentinel

Configuration

The CallBarring feature configuration profile includes the following attributes:

Parameters Type Description

ReleaseCause

Integer

Release cause to be set for barred calls

The feature also maintains two Sentinel address lists: a black list and a white list containing the barring configuration. Numbers are matched using longest prefix.

  • The black list defines numbers to be barred.

  • The white list defines numbers to be allowed and overrides the black list.

The feature applies the barring configuration to all subscribers with the matching Sentinel selection key.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

CallBarringFeatureConfigProfileTable

CallBarring feature configuration parameters

SentinelSelectionKey (for example, OpenCloud::::)

Black and White List configuration profile naming

Configuration Profile Table Name Description Profile Naming

${PLATFORMOPERATOR}_Sentinel_AddressListConfigurationTable

Address list configuration

${SELECTIONKEY}:CallBarring:BlackList or ${SELECTIONKEY}:CallBarring:WhiteList

${PLATFORMOPERATOR}_Sentinel_AddressListEntryTable Feature specific

Address List entry table

${SELECTIONKEY}:CallBarring:BlackList:${ADDRESS}, ${SELECTIONKEY}:CallBarring:WhiteList:${ADDRESS}

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Call Forwarding Detection Feature

Description

Feature script name

CallForwardingDetection

Applicable contexts

SS7 service

SAS Support

No

Prerequisite Features

ClassifyCallScenario

The CallForwardingDetection feature analyses an MT initialdp to determine if early call forwarding applies for this call. If call forwarding is pending, the call will be allowed to continue with no charging or monitoring of the call.

This feature prevents an unnecessary credit check with the OCS and unnecessary monitoring of the call when the outcome is already determined.

IF initialdp.gsm-forwardingPending is set AND initialdp.gsm-forwardingPending is true THEN
   instruct call to continue with no monitoring and no charging.
ELSE
   allow the call to proceed without any affect from this feature
ENDIF
If the SessionType of the call is not MobileTerminating then this feature must end without affecting the call.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

InitialDPArg

com.opencloud.slee.resources.cgin.callcontrol.CCInitialDPArg

InitialDP which triggered this session.

If CAP1, the call is not eligible for forwarding detection. If CAP2 or higher, it is eligible.

Report featureCannotStart, featureHasFinished

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Session type of this call — if MobileTerminating, the call is eligible for call forwarding detection

Assume eligibility for call forwarding detection

Outputs

This feature does not write to session state.

Feature responses

Response Reason

doNotMonitorSession

if call is a MT call and hasGsm_ForwardingPending is set

doNotChargeSession

if call is a MT call and hasGsm_ForwardingPending is set

featureHasFinished

feature has finished

Interaction with call forwarding supplementary service

The gsm-forwardingPending indicator will be present when the GMSC has determined one of the following applies:

  • unconditional call forwarding or conditional call forwarding not

  • call forwarding not reachable — MS switched off

  • call forwarding not reachable — no paging response.

For more information, see Noldus 4.3.2.1 Early Call Forwarding. (Refer to Noldus footnote below.)

OCS interface

No interaction with OCS from this feature except via MFC.

Triggers and application contexts

Application Contexts:

  • cap-v2-gsmSSF-to-gsmSCF-AC

  • capssf_scfGenericAC (CAP3)

The InitialDP will be triggered on DP12 (Terminating_ Attempt_Authorized).

Configuration

This feature is not configurable.

Provisioning interfaces

This feature has no provisioning interfaces.

NOLDUS

CAMEL INTELLIGENT NETWORKS FOR THE GSM, GPRS AND UMTS NETWORK

Rogier Noldus

2006

John Wiley & Sons, Ltd

Classify Call Scenario Feature

Description

Feature name

ClassifyCallScenario

Applicable contexts

SS7 service

SAS Support

No

Prerequisite Features

None

The Classify Call feature is a pre credit check feature early in the feature list (but always after the emergency number feature). The feature classifies the call’s Session Type, Roaming Indicator, and Service Type, which are stored in session state variables for future features.

Session type

The call’s session type is classified as one of:

  • MobileOriginating

  • MobileTerminating

  • MobileForwarded.

A CallType enum is defined to represent the values, and the session type is stored in session state variable CallType.

The session type is determined based on the following pseudo code:

Function DetermineSessionType(initialDP)

    /* make an assumption on insufficient information that originating */
    IF initialDP.eventTypeBCSM not set
    THEN
        return MobileOriginating
    ENDIF

    /* Originating or terminating eventTypeBCSM? */
    IF initialDP.eventTypeBCSM is one of {origAttemptAuthorized, collectedInfo, analyzedInformation, routeSelectFailure,
                                          oCalledPartyBusy, oNoAnswer, oAnswer,  oMidCall,oDisconnect, oAbandon}
    THEN
        isOriginatingEventTypeBCSM = true
    ELSE
        isOriginatingEventTypeBCSM = false
    ENDIF

    IF NOT isOriginatingEventTypeBCSM
    THEN
        return MobileTerminating
    ENDIF

    IF isOriginatingEventTypeBCSM AND initialDP.redirectingPartyID is set
    THEN
        return MobileForwarded
    ENDIF

    IF isOriginatingEventTypeBCSM AND initialDP.redirectingPartyID not set
    THEN
        return MobileOriginating
    ENDIF

    return Unknown

Roaming indicator

The call’s roaming indicator is classified as one of:

  • Roaming

  • NotRoaming.

The roaming indicator is stored in session state variable RoamingIndicator as a Boolean.

The roaming indicator is determined based on the following pseudo code:

Function DetermineRoaming(initialDP)
    IF initialDP.LocationInformation.VLR-Number prefix in (operator VLR number prefix list) THEN
       return isNotRoaming
    ELSE
       return isRoaming
    ENDIF
Note

In the case of an MT call, the location information may be reported; but this is dependent on an HLR setting (MAP PSI during MT processing).

For MO calls, the LocationInformation relates to the calling party. For the MT case, it relates to the called party.

The feature maintains a profile address list of home VLR numbers. If the VLR number is in this list, the call is not roaming.

Service type

The call’s service type is classified as one of:

  • Voice

  • Video

  • Data

  • Fax

A ServiceType enum is defined to represent the values, and the service type is stored in session state variable ServiceType.

The service type is determined based on the following pseudo code:

Function DetermineServiceType(initialDP)

    IF initialDP.ext-basicServiceCode == ext-Teleservice THEN

       CASE initialDP.ext-basicServiceCode.ext-Teleservice
           Telephony(11):
           EmergencyCalls(12):
           VoiceGroupCall(91):
           VoiceBroadcast(92):
               return VOICE
           Alternate speech and fax group 3(61):
           Automatic fax group 3(62):
               return FAX
       ENDCASE

    ENDIF

    IF initialDP.ext-basicServiceCode is ext-BearerService THEN
        IF initialDP.ext-basicServiceCode.ext-BearerService == Asynchronous data bearer services (30) THEN
           return VIDEO
        ELSE IF initialDP.ext-basicServiceCode.ext-BearerService == synchronous data bearer services (20) THEN
           return DATA
        ENDIF
    ENDIF

    /* assume voice if no match */
    return VOICE

Session State inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report featureCannotStart, featureHasFinished

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP1InitialDPArg

InitialDP which triggered this session, which will be analysed to classify the session

Report featureCannotStart, featureHasFinished

Outputs

Name Type Format Description

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

The type of this session

RoamingIndicator

Boolean

true if roaming, false if non-roaming or indeterminate

Indicates whether this call is roaming or non-roaming

ServiceType

com.opencloud.sentinel.common.ServiceType

One of: Voice, Data, Fax, Video, Unknown

Indicates the service type of this session

Error scenarios

Scenario Handling

Null sessionstate InitialDPArg

Report featureCannotStart

Null sessionstate SentinelSelectionKey

Report featureCannotStart

InitialDPArg not CAP

Report featureCannotStart

Session type could not be determined

featureFailedToExecute

Roaming status could not be determined

featureFailedToExecute

Service type could not be determined

featureFailedToExecute

Feature responses

Response Reason

featureCannotStart InitialDP has not been set in session state, SessionState Sentinel

SelectionKey is not set or InitialDP is not CAP

featureFailedToExecute

unclassified error

featureHasFinished

feature has finished

Configuration

The ClassifyCall feature configuration consists of the BearerService and TeleService configuration profiles.

BearerService configuration

Parameter Type Description

BearerServiceCode

Integer

The bearer service value

BearerService

ServiceType

The ServiceType associated with the bearer service value

TeleService configuration

Parameter Type Description

TeleServiceCode

Integer

The tele service value

TeleService

ServiceType

The ServiceType associated with the tele service value

Each ServiceType attribute can be one of the following: Voice, Data, Fax, Video, Unknown.

For roaming determination, Classify Call uses an address list for matching VLR addresses. See Address Lists for how to configure data for the address list.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

${PLATFORMOPERATOR}_Sentinel_AddressListConfigurationTable

Address list configuration

${SELECTIONKEY}:ClassifyCallScenario:HomeVLR

${PLATFORMOPERATOR}_Sentinel_AddressListEntryTable Feature specific

Address List entry table

${SELECTIONKEY}:ClassifyCallScenario:HomeVLR:${ADDRESS}

BearerServiceConfigProfileTable

BearerService configuration

SentinelSelectionKey + ':' + BearerServiceCode (for example, OpenCloud:::::32)

TeleServiceConfigProfileTable

TeleService configuration

SentinelSelectionKey + ':' + TeleServiceCode (for example, OpenCloud:::::45)

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Closed User Group Feature

Description

Feature script name

ClosedUserGroup

Applicable contexts

SS7 service

SAS Support

No

Prerequisite features

The Closed User Group (CUG) feature indicates to the OCS any CUGs that apply to the current session, and optionally restricts a subscriber to sessions within a CUG. The subscriber can be a member of multiple groups, with the group sizes being a maximum of 1,000 entries. The feature has similar functionality to the CUG Closed User Group (CUG) Supplementary Services GSM TS 02.85.

CUG will also have the following features.

  • Supports MOC, MFC, MTC, Network-Initiated.

  • If feature is enabled for the subscriber, and there is no preferential CUG and no CUG specified, then reject the session.

  • The subscriber may provide a CUG index to select which CUG will override the preferential CUG for the session.

  • Set which AVPs and CDR fields contain the CUGs that the session matches. (AVPs presumed to be set by the mapper.)

Each CUG has the following attributes:

  • Rating group

  • Incoming Access (IA) — an arrangement which allows a member of a CUG to receive calls from outside the CUG

  • Outgoing Access (OA) — an arrangement which allows a member of a CUG to place calls outside the CUG.

Note

The ICB and OCB capabilities of the CUG Supplementary Service are not supported:

  • Incoming Calls Barred Within A CUG (ICB) — an access restriction that prevents a CUG member from receiving calls from other members of that group

  • Outgoing Calls Barred Within A CUG (OCB) — an access restriction that prevents a CUG member from placing calls to other members of that group.

Outgoing access

The CUG to use for a call will be determined as follows:

IF CUGToUse is not set AND subscriber's CUGPreferred is set THEN
   CUG for call is CUGPreferred
   RETURN
ENDIF

IF CUGToUse is set but invalid index for subscriber's CUGList THEN
   reject call
   RETURN
ENDIF

CUG for call is CUGList[CUGToUse]

The algorithm to check if the session is within a CUG:

IF numberToCheck exact or longest prefix matches in CUG table THEN
   add CUG name to sessionState.CUGMatchedList list
   add Rating group to sessionState CUGMatchedRatingGroupList list
ENDIF

The number to check include prefix matches:

Call type Number to check against CUG list

MOC

CalledPartyBCDNumber

MFC

CalledPartyNumber

MTC

CallingPartyNumber

NetworkInitiated(Callback)

Leg #4 Address

Emergency

N/A

MOSMS

DestinationSubscriberNumber

In all cases the normalised number will be used for the check.

The CUG feature will not include any logic to determine if the CUG entries are legal. This will be the requirement of the provisioning system.

Any errors encountered during the execution of this feature, such as configuration errors or missing subscriber data, will have no effect: no tariff will be set. The call will be allowed to continue with no effect to the call. (Dependent on error — the rule above specifies rejecting the call if invalid index.)

Session State inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report featureCannotStart, featureHasFinished

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP-DataTypes.InitialDPArg

InitialDPArg which triggered this session if it is a call

Set ClosedUserGroupCall session state field to false (indicating that this is not a closed user group call)
Increment ClosedUserGroupSubscriberDataError
Report featureHasFinished

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Determines how to perform CUG analysis

Report featureCannotStart, featureHasFinished

SessionType

com.opencloud.sentinel.common.SessionType

One of: call, sms

For mobile originating sessions, distinguish call or sms CUG analysis

Report featureCannotStart, featureHasFinished

CAP3InitialDPSMSArg

com.opencloud.slee.resources.cgin.cap_v3.CAP3InitialDPSMSArg

CAP-SMS-ops-args.InitialDPSMSArg

InitialDPSMSArg which triggered this session if it is an sms

Set ClosedUserGroupCallsession state field to false (indicating that this is not a closed user group call)
Increment ClosedUserGroupSubscriberDataError
Report featureHasFinished

ClosedUserGroupEnabled

Boolean

true or false

Whether the subscriber has closed user group support enabled

Equivalent behaviour if null or false
Increment ClosedUserGroupNotEnabled
Set ClosedUserGroupCall session state field to false
Report featureHasFinished

ClosedUserGroupList

String[]

Array of closed user group names

The closed user groups this subscriber belongs to

Increment ClosedUserGroupNotEnabled
Set ClosedUserGroupCall session state field to false
Report featureHasFinished

ClosedUserGroupPreferred

Integer

Any integer from 0 — ClosedUserGroupList.length

Indexes this subscriber’s preferred closed user group in their ClosedUserGroupList

Set ClosedUserGroupCall session state field to false
Report featureCannotStart
Increment ClosedUserGroupSubscriberDataError
Report releaseCallAndCloseDialog, featureHasFinished

ClosedUserGroupToUse

Integer

Null or any integer from 0 — ClosedUserGroupList.length

Index which overrides ClosedUserGroupPreferred if set

Set ClosedUserGroupSelectedGroupName session state field to ClosedUserGroupPreferred

Outputs

Name Type Format Description

ClosedUserGroupCall

Boolean

true or false

Indicates whether this session is a closed user group call

ClosedUserGroupSelectedGroupName

String

May be null if ClosedUserGroupCall is false or CUG analysis failed

Name of the selected closed user group

RatingGroup

Long

May be null if ClosedUserGroupCall is false or CUG analysis failed

ID of the selected rating group

Error scenarios

Scenario Handling

Null sessionstate SentinelSelectionKey

Report featureCannotStart

Null sessionstate CallType

Report featureCannotStart

Null sessionstate SessionType

Report featureCannotStart

Null sessionstate ClosedUserGroupPreferred

Report featureCannotStart
Increment ClosedUserGroupSubscriberDataError
Report releaseCallAndCloseDialog

SessionState: CUG preferred id is invalid

Set sessionstate ClosedUserGroupCall to false
Report featureCannotStart
Increment ClosedUserGroupSubscriberDataError
Report releaseCallAndCloseDialog

OtherPartyAddress could not be set successfully

Set sessionstate ClosedUserGroupCall to false
Increment ClosedUserGroupSubscriberDataError

No CUG Group was selected

Set sessionstate ClosedUserGroupCall to false
Increment NonClosedUserGroupCall Report releaseCallAndCloseDialog No CUG Profile was found for group

Feature responses

Response Reason

featureCannotStart

Invalid session state or configuration

releaseCallAndCloseDialog

CUG preferred ID is null, CUG preferred ID is invalid, no CUG Group was selected, call not allowed, or no CUG Profile was found for group

featureIssuedWarning

OtherPartyAddress has not been set or no CUG Group was selected

featureHasFinished

feature has finished

Configuration

Each ClosedUserGroup’s configuration includes:

a general configuration profile (1 entry):

Parameter Type Description

Name

String

Name of the the CUG

Description

String

Description of the CUG

RatingGroup

Long

Rating group to associate with the CUG

RestrictIncomingAccess

Boolean

Global per-subscriber override to restrict incoming calls from non-CUG members

RestrictOutgoingAccess

Boolean

Global per-subscriber override to restrict outgoing calls to non-CUG members

a list of numbers (configured as address lists; 0..N entries):

Parameter Values

Number

Normalized number

The CUG number list is provisioned in international format:

  • 6421678956

  • 6492324856

  • 64800123456 (0800 123456)

a per-subscriber configuration (held in session state and retrieved by, for example, the Subscriber Data Lookup Feature; 1 entry):

Parameter Type Values

CUGEnabled

Boolean

true/false

CUGPreferred

Integer

CUG Index (for example, 0)

CUGList

String[]

List of CUG names (for example, CUG1,CUG17,CUG_OPENCLOUD)

CUGIncomingAccessAllowed

Boolean

true/false

CUGOutgoingAccessAllowed

Boolean

true/false

OCS interface

In the case of Diameter Ro, a proprietary AVP will be set to indicate:

  • the specific CUG group tariff code(s) (SessionState.CUGTariffGroup)

  • the CUG name (SessionState.CUGName)

  • type of access (SessionState.CUGAccessType with values IntraCUG, IncomingAccess, OutgoingAccess)

The AVP mapping will be determined as part of the vendor-specific integration requirements for the OCS.

Triggers and application contexts

Application Contexts:

  • cap-v2-gsmSSF-to-gsmSCF-AC

  • capssf_scfGenericAC (CAP3)

The InitialDP will be triggered on DP2 (Collected_Info).

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

ClosedUserGroupCUGsProfileTable

CUG general configuration

${SELECTIONKEY}:${CUGName} (for example, OpenCloud:Opencloud::::CUG1Profile)

${PLATFORMOPERATOR}_Sentinel_AddressLisConfigurationTable

Address list configuration

${SELECTIONKEY}:ClosedUserGroup:${CUGName} (for example, OpenCloud:Opencloud::::ClosedUserGroup:CUG1Profile)

${PLATFORMOPERATOR}_Sentinel_AddressListEntryTable

Feature specific Address List entry table

${SELECTIONKEY}:ClosedUserGroup:${CUGName}:${ADDRESS} (for example, OpenCloud:Opencloud::::ClosedUserGroup:CUG1Profile:34600000001)

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Connect and Close Feature

Description

Feature name

ConnectAndClose

Applicable contexts

SS7 Service

SAS Support

No

Prerequisite Features

None

This is an initial trigger feature which calls connectAndClose() on the feature endpoint.

Session State inputs and outputs

This feature does not read from or write to session state.

Error scenarios

This feature has no error conditions.

Feature responses

Response Reason

featureHasFinished

feature has finished

Configuration

This feature is not configurable.

Provisioning interfaces

This feature has no provisioning interfaces.

Continue and Close Feature

Description

Feature name

ContinueAndClose

Applicable contexts

SS7 Service

SAS Support

No

Prerequisite Features

None

This is an initial trigger feature which calls continueAndClose() on the feature endpoint.

Session State inputs and outputs

This feature does not read from or write to session state.

Error scenarios

This feature has no error conditions.

Feature responses

Response Reason

featureHasFinished

feature has finished

Configuration

This feature is not configurable.

Provisioning interfaces

This feature has no provisioning interfaces.

Do Not Monitor Session Feature

Description

Feature name

DoNotMonitorSession

Applicable contexts

SS7 Service

SAS Support

No

Prerequisite Features

None

This is an initial trigger feature which instructs Sentinel core not to monitor the call. Sentinel will send a Continue and close the dialog.

Session State inputs and outputs

This feature does not read from or write to session state.

Error scenarios

This feature has no error conditions.

Feature responses

Response Reason

doNotMonitorSession

intended behaviour

featureHasFinished

feature has finished

Configuration

This feature is not configurable.

Provisioning interfaces

This feature has no provisioning interfaces.

Emergency And Special Number Feature

Description

Feature name

EmergencyAndSpecialNumber

Applicable contexts

SS7 service

SAS Support

No

Prerequisite Features

None

The Emergency and Special Number Feature is used as a pre credit check feature early or first in the feature list, to allow the call to continue immediately with no further intervention from Sentinel.

The feature will continue the call with no further intervention in the following cases:

  • MOC: initialDP.calledPartyBCDNumber is an exact match with a number in the provisioned table

  • MTC/MFC: initialDP.calledPartyNumber is an exact match with a number in the provisioned table

  • Any: initialDP.ext-basicServiceCode == ext-Teleservice AND initialDP.ext-basicServiceCode.ext-Teleservice == EmergencyCalls(0x12).

Session State inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report featureCannotStart, featureHasFinished

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP-DataTypes.InitialDPArg

InitialDP which triggered this session

Report featureCannotStart, featureHasFinished

Outputs

Name Type Format Description

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Call type will be overwritten as EmergencyCall if the call is to a special or emergency number, otherwise it will be left as is

Error scenarios

Scenario Handling

InitialDPArg is not CAP

Report featureCannotStart

Null sessionstate SentinelSelectionKey

Report featureCannotStart

Feature responses

Response Reason

featureCannotStart

Protocol is not CAP or SessionState SentinelSelectionKey is not set

continueAndCloseDialog

is a call to a special or emergency number

featureHasFinished

feature has finished

Configuration

The feature maintains a table of emergency or special numbers (using AddressLists) which are compared to the Called Party Number.

Error handling

If there are any errors attempting to execute this feature, such as a configuration error, the feature will end handling and allow Sentinel to continue handling the call as if it was NOT an emergency call.

Call flow

MSC ---- IDP(Cdpn=111) --> Sentinel
MSC <---   Continue    --- Sentinel

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

${PLATFORMOPERATOR}_Sentinel_AddressListConfigurationTable

Address list configuration

${SELECTIONKEY}:EmergencyAndSpecialNumber:AddressList

${PLATFORMOPERATOR}_Sentinel_AddressListEntryTable

Feature specific Address List entry table

${SELECTIONKEY}:EmergencyAndSpecialNumber:AddressList:${Address}

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Friends and Family Feature

Description

Feature name

FriendsAndFamily

Applicable contexts

  • SS7 service

SAS Support

No * Diameter Mediation Service

Prerequisite features

Subscriber Data Lookup Feature

The Friends and Family (FnF) feature sets a special OCS tariff code if a subscriber is making a call to a number in their FnF list. If the other party’s number is in the FnF list, Sentinel will send the configured FnF tariff code (=rating group) while performing charging to OCS. The subscriber for the call type will have been determined using the SS7 Subscriber Determination Feature. When the MSC triggers Sentinel, the FnF list is retrieved for the subscriber. The number to check in the FnF list for the subscriber is shown in the table below:

Call type Number to check against FnF list

MOC

CalledPartyBCDNumber

MTC

CallingPartyNumber

MFC

CalledPartyNumber

NetworkInitiated(Callback)

Leg #4 Address

Emergency

N/A

MOSMS

DestinationSubscriberNumber

In all cases the normalized number will be used for the check.

It is expected that a subscriber’s Friends and Family list will be limited to a small number (such as 5). No logic will be implemented in the Profile/Database or Feature to enforce this limit. Any limit required by the operator will be enforced by the system provisioning the feature.

Any errors encountered during the execution of this feature, such as configuration errors or missing subscriber data, will have no effect on the call. No tariff will be set. The call will be allowed to proceed with other features.

Session State inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Runtime exception handled by the feature runner

FriendsAndFamilyEnabled

Boolean

true or false

Indicates whether Friends and Family is enabled for this subscriber

Runtime exception handled by the feature runner

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP-DataTypes.InitialDPArg

InitialDP which triggered this session if it is a call — may be null if sms

If SessionType is call, Report featureCannotStart, featureHasFinished

InitialDPSMSArg

com.opencloud.slee.resources.cgin.cap_v3.CAP3InitialDPSMSArg

CAP-SMS-ops-args.InitialDPSMSArg

InitialDPSMS which triggered this session if it is an sms — may be null if call

If SessionType is sms, Report featureCannotStart, featureHasFinished

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Calltype used for determining which party number is the other party address

Report featureCannotStart, featureHasFinished

SessionType

com.opencloud.sentinel.common.SessionType

One of: call, sms

Decide whether to inspect InitialDPSMSArg or InitialDPArg session state field when determining other party address

Runtime exception handled by the feature runner

FriendsAndFamilyList

String[]

Array of addresses

List of friends and family numbers

Set IsFriendsAndFamilyCall session state field to false
Increment NonFriendsAndFamilyCall
Report featureHasFinished

Outputs

Name Type Format Description

IsFriendsAndFamilyCall

Boolean

true or false

Indicates whether this session is a friends and family call

RatingGroup

Long

May be null if IsFriendsAndFamilyCall is false or FNF analysis failed

ID of the selected rating group

Error scenarios

Scenario Handling

Sessionstate CallType is null

Report featureCannotStart

Other Party address could not be determined

Report featureIssuedWarning

Feature responses

Response Reason

featureCannotStart

Call type is not set in the session state

featureIssuedWarning

OtherPartyAddress has not been set

featureHasFinished

feature has finished

OCS interface

In the case of Diameter Ro, a proprietary AVP will be set to indicate the FnF tariff code to the OCS. This will be determined as part of the vendor-specific integration requirements for the OCS.

Configuration

Friends and Family feature general configuration parameters

Parameter Type Description

LookupMethod

LookupTypeEnum

The method to be used to lookup the zone; one of: [profile,dbQuery]

RatingGroup

Long

General Rating Group for FnF

Subscriber FriendsAndFamily data (determined by, for example, the SubscriberDataLookup feature)

Parameter Type Values

FriendsAndFamilyEnabled

Boolean

true when HomeZone feature is activated for this subscriber. See Friends and Family Feature.

FriendsAndFamilyList

String[]

list of numbers in normalized format (for example, 6421678956,6421345444,6421343333)

The Friends and Family list is provisioned in normalized format, such as:

  • 6421678956

  • 6492324856

  • 64800123456 (0800 123456)

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

FriendsAndFamilyFeatureConfigProfileTable

Selection of database implementation and rating group for the feature

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Home Zone Feature

Description

Feature script name

HomeZone

Applicable contexts

SS7 service

SAS Support

No

Prerequisite features

The Home Zone feature determines if the subscriber is within a defined set of home zones on originating calls.

The subscriber zones table is used to determine the list of zones that the subscriber is registered in.

The location type criteria is determined from the initialdp.locationInformation.cellGlobalIdOrServiceAreaIdOrLAI and set to one of SAI, CGI, or LAI.

Then the zones table is used to determine if the location from the initialdp is in one of the registered zones for the subscriber.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

HomeZoneEnabled

Boolean

true or false

Whether the subscriber has home zone support enabled

Runtime exception handled by the feature runner

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report featureCannotStart, featureHasFinished

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP-DataTypes.InitialDPArg

InitialDP which triggered this session if it is a call

Report featureCannotStart, featureHasFinished

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Only mobile originating calls eligible for home zone

Report featureCannotStart, featureHasFinished

HomeZoneList

String[]

Array of zone names

The subscriber’s home zones

Set InHomeZone session state field to false
Report featureHasFinished

Outputs

Name Type Format Description

InHomeZone

Boolean

true or false

Indicates whether the subscriber is calling from their home zone

Error scenarios

Scenario Handling

Sessionstate

CallType is null Set Sessionstate InHomeZone to false
Report featureCannotStart

Sessionstate InitialDPArg is null

Set Sessionstate InHomeZone to false
Report featureCannotStart

Feature responses

Response Reason

featureCannotStart

Call type is not set in the session state or InitialDP Arg is not set in the session state

featureHasFinished

feature has finished

Configuration

Home Zone has a single general configuration parameter:

Parameter Type Description

LookupMethod

LookupTypeEnum

The method to be used to lookup the zone; one of: [profile,dbQuery]

The storage of zone information is as follows:

Field Type Description

Name

String

Name of the zone referenced by subscriber specific zone configuration

LocationTypes

LocationTypeEnum[]

Each entry to be be one of: [SAI, CGI or LAI]

LocationDescriptions

String[]

Location descriptions

MCC

String[]

MCC may have values between 100 and 999

MNC

String[]

MNC may have values between 10 and 999

LAC

Integer[]

LAC may have values between 1 and 65533 (FFFD) and 65535 (FFFF) (excludes 0 and 65534 (FFFE) for which no valid LAI exists)

CIOrSAC

Integer[]

CI may have values between 0 and 65535 (FFFF); SAC may have values between 0 and 65535 (FFFF)

Example Zones Table

ZoneName LocationType MCC MNC LAC CIorSAC Location description

WgtnCBD

SAI

530

01

11

22

Vodafone NZ location

WgtnCBD

CGI

530

01

01

01

Vodafone NZ location

WgtnCBD

LAI

530

01

01

Vodafone NZ location

AkldCBD

LAI

530

02

02

Vodafone NZ location

Where LocationType=SAI or CGI then MCC, MNC, LAC, and CIorSAC are mandatory

Where LocationType=LAI then MCC, MNC, and LAC are mandatory. CIorSAC must not be set.

Subscriber Zones Table

Field Description

HomeZoneEnabled

true or false

HomeZoneList

List of home zones from the zones table for this subscriber

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

HomeZoneFeatureConfigProfileTable

Feature configuration. Currently for the selection of database implementation for the zones table

SentinelSelectionKey (for example, OpenCloud::::)

HomeZoneFeatureSqlProfileTable

SQL statement configuration

SentinelSelectionKey (for example, OpenCloud::::)

HomeZoneFeatureZonesProfileTable

Zone table if profiles selected

SentinelSelectionKey:ZoneName (for example, OpenCloud::::WgtnCBD)

Database schemas

Database schemas for TimesTen and Oracle are available in the Sentinel release package.

Provisioning interfaces

The feature is provisioned using the Sentinel Home Zone REST API or web interface.

Play Announcement Feature

The Play Announcement feature plays an announcement to the calling party during call establishment or after the called party disconnects. The announcement is played by the MSC/GMSC gsmSRF.

Description

Feature name

PlayAnnouncement

Applicable contexts

SS7 service

SAS Support

No

Prerequisite features

The id of the announcements to be played is set in the AnnouncementID session variable. If the AnnouncementID session variable is not set (null) or set to 0, no announcement is played and the feature returns without error or side effect to the dialog.

Another feature must be executed prior to the PlayAnnouncement feature to set the AnnouncementID.

All announcements which are played by the feature are appended to the PlayedAnnouncementIDs session variable. This list of announcements is used by the standard CDR mappers and may be used in custom CDR mappers.

The announcement can be played using one of the following modes:

  • Using ConnectToResource only, to connect to an SRF integrated with the controlling MSC.

  • Using EstablishTemporaryConnection and an assisting dialog to connect to a non-integrated SRF.

  • Using Connect to redirect the call to an IVR or announcement device. When using this mode the call ceases to be controlled via Sentinel.

If desired the announcement mode can be configured based on address lists matching the global title digits in the dialog’s CallingPartyAddress, the triggering MSC address, the subscriber address (as determined by Sentinel), or the subscriber’s IMSI. Alternatively the announcement can always be played using the same announcement mode.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

AnnouncementID

Integer

Any integer

ID of the announcement that is to be played

Increment MissingAnnouncementIDs
Report featureHasFinished

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report featureCannotStart, featureHasFinished

CanRelayDialog

boolean

true or false

True if the assisting dialog has not been accepted yet

Not nullable

ResponderSccpAddress

com.opencloud.slee.resources.cgin.SccpAddress

SccpAddress

The SCCP Address to use as the responding address in the Open Response instead of the address provided by the stack, or null to leave the address unchanged

Use the address provided by the stack

LatestEventReportBCSM

com.opencloud.slee.resources.cgin.callcontrol.CCEventReportBCSMArg

CC-DataTypes.EventReportBCSMArg

Once the first event report has been received abandon is no longer required

Abandon will be armed

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Session type of this call for determining from configuration which party address to lookup

Report featureCannotStart, featureHasFinished

LatestOcsAnswer

org.jainslee.resources.diameter.ro.types.CreditControlAnswer

Credit-Control-Answer

Announcements can reference variables based on latest CCA see Configuration

No action

Outputs

Name Type Format Description

CanRelayDialog

boolean

true or false

True if the assisting dialog has not been accepted yet

Error scenarios

Scenario Handling

Null CorrelationProvider

Increment ConfigurationErrors
Report featureFailedToExecute

Sessionstate SentinelSelectionKey is null

Increment InputParameterErrors
Report featureFailedToExecute

ACI not provided to the announcement feature

Increment InputParameterErrors
Report featureFailedToExecute

No profile for selection key and AnnouncementID in AnnouncementProfileTable

Increment InputParameterErrors
Report featureFailedToExecute

No profile for selection key in AnnouncementConfigProfileTable

Increment InputParameterErrors
Report featureFailedToExecute

Null TariMillis in AnnouncementConfigProfile

Increment InputParameterErrors
Report featureFailedToExecute

Exception invoking RequestReportBCSM on dialog

Increment ErrorsArmingAbandon
Report featureFailedToExecute

Dialog object not provided to the announcement feature in the activity context interface

Increment InputParameterErrors
Report featureFailedToExecute

Invalid type configured for the announcement ID (Should be tone, message or messages)

Increment InputParameterErrors
Report featureFailedToExecute

TooManyInvokesException or ProtocolException whiling sending CTR or PlayAnnouncement

Increment ErrorsSendingCTRAndPA
Report featureFailedToExecute

Received SS7 Abort

Increment Ss7Aborts
If assisting dialog open, send DFC, close assisting dialog as prearranged end, release Correlation ID and clear Correlation ID Input
Report featureFailedToExecute

Received SS7 Error

Increment Ss7Errors
If assisting dialog open, send DFC, close assisting dialog as prearranged end, release Correlation ID and clear Correlation ID Input
Report featureFailedToExecute

Received Abandon or Disconnect

If assisting dialog open, send DFC, close assisting dialog as prearranged end, release Correlation ID and clear Correlation ID Input
Report featureFailedToExecute

Tari expiry

If not useAssistingDialog, Increment TariExpiries If assisting dialog open, send DFC, close assisting dialog as prearranged end, release Correlation ID and clear Correlation ID Input
Report featureFailedToExecute

Feature responses

Response Reason

featureFailedToExecute

ss7Error

featureHasFinished

feature has finished

Configuration

Announcement configuration

Announcements are referenced by id. The configuration of each announcement id is provisioned in the following table:

Parameter Type Description

Description

String

Description of the announcement

Id

Integer

Announcement ID

AnnouncementType

AnnouncementTypeEnum

The announcement type, one of [message, tone, messages]

Value

Integer[]

Value of the message/tone ID (or IDs if 'announcementType' is 'messages') to be played.

ToneDuration

Integer

Duration of a tone announcement in seconds. Valid values: not set, 0 - 65535. Note: 0 means infinite duration. (This is an Integer4 ASN.1 type).

VariableCcaPaths

String[]

An array of CCA xpath expressions

VariableTypes

String[]

An array of type names. Each entry has to be one of [integer, number, date, time, price]

AllowDisconnect

Boolean

Determines if automatic disconnect of the gsmSRF is allowed when the announcement is complete.

ResetTssf

Boolean

Indicates whether or not a ResetTimer operation will be sent before the announcement is played to reset the Tssf timer.

InvokeTimeout

Long

Invoke timeout in milliseconds. In conjunction with the Tssf Reset Margin it is used to set the invoke timeout of the PlayAnnouncement operation and to determine the value to reset the Tssf timer to via the ResetTimer operation before the announcement begins (if ResetTssf is true). 1000-3600000 milliseconds.

CtrConfig

String

Reference to resource configuration to use with ConnectToResource

IvrAddressCalledPartyNumber

CalledPartyNumber

The IVR address is only required if the announcement mode is CONNECT. It is specified in called party number string format, which includes comma-separated name value pairs with names one of: address, nature, numberingPlan, routingToInternalNetworkNumber. See CalledPartyNumber for more information.

Example announcement table configuration:

ID Description Type Value ToneDuration AllowDisconnect InvokeTimeout CtrConfig VariableCcaPaths VariableTypes

1

Play message "You have insufficient credit to make this call"

message

123

N

10000

srf1

2

Play tone

tone

23

250

N

1000

3

Play messages "You have insufficient credit to make this call", and "Call the topup line"

messages

123,124

N

10000

4

Play message with variable 1 assigned time granted

message

34

N

10000

[/MultipleServices
CreditControl

[ServiceId = 0]
/Granted-Service-Unit/CCTime]

[integer]

The Play Announcement feature may set variables based on fields from session state (latest CCA is supported). The Sentinel XPath Language Component is used to reference fields in the CCA. For example, /MultipleServicesCreditControl[ServiceId = 0]/GrantedServiceUnit/CCTime references the amount of time granted for service with id 0.

The CtrConfig is a reference to an entry in the Resource Config table with the ConnectToResource configuration.

Resource config

Parameter Type Description

Name

String

Name of this CtrConfig. It is used by the announcement configuration profile to reference this configuration.

ResourceAddressCalledPartyNumber

CalledPartyNumber

The resource address in called party number string format, which includes comma-separated name value pairs with names one of: address, nature, numberingPlan, routingToInternalNetworkNumber. See CalledPartyNumber for more information.

Example resource configuration profile:

Name

ResourceAddress

srf1

The ResourceAddress choice NONE is selected when the ResourceAddress is not set.

Announcement mode

The announcement mode determines how the announcement will be played:

Internally using ConnectToResource only, to connect to an SRF integrated with the controlling MSC.

Using EstablishTemporaryConnection and an assisting dialog to connect to a non-integrated SRF. There are two sub-modes of this mode:

Combined mode, where the assisting MSC address, SCF id, and correlation id are all combined into the assistingSSPIPRoutingAddress parameter of the EstablishTemporaryConnection operation argument.

Separate mode, where the assisting MSC address, SCF id, and correlation id all use separate fields in the EstablishTemporaryConnection operation argument.

Using Connect to redirect the call to an IVR or announcement device. When using this mode the call ceases to be controlled via Sentinel.

The announcement mode is determined first by address list interrogation (see table below), followed by the Sentinel Selection Key configuration if no matching address list configuration was found.

Address lists

The Play Announcement feature supports four different address lists for determining the announcement mode:

Address List Name Default Search Mode Description

OriginatingSccpAddressList

longest prefix match

Uses the the global title digits of the the incoming dialog’s CallingPartyAddress.

MscAddressList

longest prefix match

Uses the address string of the MSCAddress parameter of the incoming InitialDP or InitialDPSMS.

SubscriberAddressList

exact match

Uses the subscriber address for the session.

SubscriberImsiList

exact match

Uses the subscriber IMSI for the session.

The address lists actually searched by the Play Announcement feature are determined by the Sentinel Selection Key configuration. The default search mode for each list can be changed via the configuration for the corresponding address list. An address list will only be searched if the feature can determine a suitable address for the lookup. For example, if the incoming dialog has no global title digits in the CallingPartyAddress then the OriginatingSccpAddressList will not be searched, even if specified in the configuration.

Sentinel selection key configuration

Various other parameters related to playing the announcement are set in a configuration that may be scoped to the Sentinel selection key:

Parameter Type Description

AnnouncementLists

AnnouncementList[]

A list of Address List names specifying which address lists to search for the announcement mode. The address lists will be searched in the order given in this list.

Default Mode

AnnouncementMode

The announcement mode to use if address list lookup fails to find an announcement mode. One of [INTERNAL, ETC_COMBINED, ETC_SEPARATE, CONNECT]

Assisting SSP IP Routing Address Generic Number

GenericNumber

Address of the Assisting MSC. Only required if using an ETC announcement mode.

Combined Mode SCF ID

String

The SCF ID of Sentinel to use in ETC_COMBINED mode. Only required if using an ETC_COMBINED announcement mode.

Separate Mode SCF ID

Byte[]

The SCF ID of Sentinel to use in ETC_SEPARATE mode. Only required if using an ETC_SEPARATE announcement mode.

Use Correlation Delimiter

Boolean

Flag indicating if a delimiter digit (hex 'b') should be used between the assisting MSC address and the SCF ID when using the ETC_COMBINED mode. Only relevant if using this mode.

Tssf Reset Margin

Integer

The number of seconds added to the announcement duration used to reset the Tssf timer using the ResetTimer operation during announcement playing. This is just a safety margin.

Tari Millis

Long

The Tari timer value in milliseconds

Announcement playing signalling flows

If AllowDisconnect=false or is not set or has invalid value, the PlayAnnouncement.disconnectFromIPForbidden is set to true and the announcement component will send the DFC; otherwise it will not.

The call flow to be used (AllowDisconnect=true):

MSC <---- RT ----- Sentinel
MSC <---- CTR ---- Sentinel
MSC <---- PA ----- Sentinel
MSC <- DELIMITER - Sentinel
MSC ----- SRR ---> Sentinel
MSC - DELIMITER -> Sentinel

The call flow to be used (AllowDisconnect=false):

MSC <---- RT ----- Sentinel
MSC <---- CTR ---- Sentinel
MSC <---- PA ----- Sentinel
MSC <- DELIMITER - Sentinel
MSC ----- SRR ---> Sentinel
MSC <---- DFC ---- Sentinel
MSC <- DELIMITER - Sentinel

In the case of multiple announcements, all the play announcements in the list will be sent together to the gsmSRF. The FSM will handle all of the SRR expected from the gsmSRF before returning.

The call flow to be used (all AllowDisconnect=false):

MSC <---- CTR ---- Sentinel
MSC <---- PA ----- Sentinel
MSC <---- PA ----- Sentinel
MSC ----- SRR ---> Sentinel
MSC ----- SRR ---> Sentinel
MSC <---- DFC ---- Sentinel

Error handling

The Play Announcement feature may encounter a number of different errors, for example:

  • required configuration state may be missing

  • required configuration parameters may be invalid

  • operation errors sent by the initiating or assisting MSC may be encountered

In all error cases the feature returns the featureFailedToExecute result and exits. A feature script can test for this condition and react accordingly, for example the script could allow the call to continue regardless, or could release the call instead.

Examples of some error call flows:

SRR expected but not received:

MSC <---- CTR ---- Sentinel
MSC <---- PA(requestAnnouncementComplete=true) ---- Sentinel
Invoke timeout
MSC ----> PE(NO_LINKED_RESPONSE) ---> Sentinel

This is the standard case when requestAnnouncementComplete=false (that is, no SRR expected but we still get the provider error due to the protocol definition)

MSC <---- CTR ---- Sentinel
MSC <---- PA(requestAnnouncementComplete=n) ---- Sentinel
Invoke timeout
MSC ----> PE(NO_LINKED_RESPONSE) ---> Sentinel

Reject:

MSC <---- CTR ---- Sentinel
MSC <---- PA ---- Sentinel
MSC ----> PE(REMOTE_REJECT) ---> Sentinel

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

AnnouncementProfileTable

Announcement configuration profiles

SentinelSelectionKey:id (for example, OpenCloud::::15)

AnnouncementResourceConfigProfileTable

ConnectToResource resource configuration

SentinelSelectionKey:ctrConfigName (for example, OpenCloud::::srf1)

AnnouncementConfigProfileTable

Additional resource configuration

SentinelSelectionKey:configName (for example, OpenCloud::::config)

${PLATFORMOPERATOR}PlayAnnouncementAddressListConfigurationTable

Address list configuration

${SELECTIONKEY}:PlayAnnouncement:${AddressListName}

${PLATFORMOPERATOR}PlayAnnouncementAddressListEntryTable

Feature specific Address List entry table

${SELECTIONKEY}:PlayAnnouncement:${AddressListName}:${ADDRESS}

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Prefix and Suffix Analysis Feature

Sentinel has a set of configurable prefix and suffix lists, scoped by Sentinel selection key, which are used for number analysis.

Description

Feature name

PrefixAndSuffixAnalysis

Applicable contexts

  • SS7 service

SAS Support

No * Diameter Mediation Service

Prerequisite features

If a prefix or suffix is matched, the directive associated with the prefix is used.

The directives are: strip prefix/suffix or retain prefix/suffix, and set session parameter with configured value.

Where the directive is strip, the new called party number will be sent in a connect.

Note Subsequent features may make additional changes to the called party number, so the final address sent in the connect will be dependent on those features.
Parameter Description

Address

Prefix or suffix to match

Description

ListId

${SELECTIONKEY}:PrefixAndSuffixAnalysis::SpecialPrefixList
${SELECTIONKEY}:PrefixAndSuffixAnalysis:SpecialSuffixList

ParameterName

Session state field to set (for example, AnnouncementID). Field name is in Java identifier format, and follows the rules of Java identifiers (such as not being a Java keyword).

ParameterType

boolean, integer, long, string

ParameterValue

Value to write to session state. Must be formatted correctly for the value specified in the Parameter Type field

PrefixDirective

strip, retain

Example of prefix analysis configuration:

Prefix/suffix address Directive Session Parameter Parameter Type Parameter Value Description

1234

STRIP

CLI

String

SUPPRESS

555

STRIP

TARIFF

String

Cheap-International-Calling

*591

STRIP

PROFILE

Integer

1

Profile selection

*592

STRIP

PROFILE

Integer

2

Profile selection

*593

STRIP

PROFILE

Integer

3

Profile selection

*594

STRIP

PROFILE

Integer

4

Profile selection

.

STRIP

Strip ST (end of pulsing) digit

Prefix may contain the following characters: 0-9, *, #, a, b, c, and . (period) . The expected decoding of a network address is specific to the number.

CalledPartyBCDNumber (MO calls):

Decoded character

0

1

2

3

4

5

6

7

8

9

*

#

a

b

c

Encoded hexadecimal

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

CalledPartyNumber (MF/MT calls):

Decoded character

0

1

2

3

4

5

6

7

8

9

*

#

.

Encoded hexadecimal

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

Session State inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report featureCannotStart, featureHasFinished

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.

CAP1InitialDPArg

CAP-DataTypes.InitialDPArg InitialDP which triggered this session

Report featureCannotStart, featureHasFinished

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Session type of this call for determining which party address to analyse

Report featureCannotStart, featureHasFinished

Outputs

Name Type Format Description

DestinationHasChanged

boolean

true or false

True if the IDP CdPA number address has been modified

ServiceType

com.opencloud.sentinel.common.ServiceType

One of: Voice, Data, Fax, Video, Unknown

Indicates the service type of this session

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP-DataTypes.InitialDPArg

Updated InitialDPArg if destination has changed

Other session state fields see Description see Description This feature can update other session state fields according to configuration data when a prefix or suffix match is found

Error scenarios

Scenario Handling

Sessionstate SentinelSelectionKey is null

Report featureCannotStart

Sessionstate InitialDPArg is null

Report featureCannotStart

Sessionstate InitialDPArg is not CAP

Report featureCannotStart

Attempt to set non-existent SessionState parameter

Report featureFailedToExecute

Feature responses

Response Reason

featureCannotStart

SessionState SentinelSelectionKey is not set, InitialDP Arg is not set in session state or InitialDP Arg is not an instance of CAP1InitialDPArg

featureFailedToExecute

Attempt to set non-existent SessionState parameter

featureHasFinished

feature has finished

Multiple subscriber profile selection

The Prefix and Suffix Analysis feature supports multiple subscriber profile selection. See Noldus​[1] pp.219 5.2.9 Multiple Subscriber Profile.

MSP uses suffixes with the following digit string for the called party number, for dynamic profile selection: <Directory Number>59n # SEND , where n identifies the profile.

Configuration

Prefix and Suffix Analysis uses Sentinel AddressLists for configuration data. See Address Lists for how to provide the configuration data.

Configuration profile naming

Configuration Profile Table Name

Description

Profile Naming

${PLATFORMOPERATOR}_PrefixAndSuffixAnalysisFeature_AddressListConfigurationTable

Address list configuration

${SELECTIONKEY}:PrefixAndSuffixAnalysis:SpecialPrefiList or ${SELECTIONKEY}:PrefixAndSuffixAnalysis:SpecialSuffixList

${PLATFORMOPERATOR}_PrefixAndSuffixAnalysisFeature_AddressListEntryTable

Feature specific Address List entry table

${SELECTIONKEY}:PrefixAndSuffixAnalysis:SpecialPrefixList:${ADDRESS}

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

NOLDUS

CAMEL

INTELLIGENT NETWORKS FOR THE GSM, GPRS AND UMTS NETWORK

Rogier Noldus

2006

John Wiley & Sons, Ltd

Relay Dialog During Dialog Analysis Feature

Description

Feature name

RelayDialogDuringDialogAnalysis

Applicable contexts

SS7 service

SAS Support

No

Typical feature execution points

DirectAccess_SessionStart, DirectAccess_SessionAccept

Prerequisite features

None

The Relay Dialog During Dialog Analysis feature requests Sentinel core to relay the received dialog to another network element.

Session state inputs and outputs

This feature does not read from or write to session state.

Feature responses

Response Reason

relayDialog

the dialog should be relayed

featureHasFinished

feature has finished

Call flow

MSC ---- OpenRequest --> Sentinel
MSC ----- InitialDP ---> Sentinel
                         Sentinel ---- OpenRequest --> New Network Element
                         Sentinel ----- InitialDP ---> New Network Element
MSC <----------------- OpenAccept -------------------- New Network Element

Configuration

This feature is not configurable.

Provisioning interfaces

This feature has no provisioning interfaces.

Relay Dialog During Initial Trigger Analysis Feature

Description

Feature name

RelayDialogDuringInitialTriggerAnalysis

Applicable contexts

SS7 service

SAS Support

No

Typical feature execution points

Any of the initial trigger feature execution points such as DirectAccess_SessionPreCreditCheck

Prerequisite features

None

This feature requests Sentinel core to relay the received dialog to another network element.

Session state inputs and outputs

This feature does not read from or write to session state.

Error scenarios

This feature has no error conditions.

Feature responses

Response Reason

relayDialog

the dialog should be relayed

featureHasFinished

feature has finished

Call flow

The InitialDP may have been altered by features. For example, the calling and called party numbers in the InitialDP may have been normalised to an international format. The InitalDP relayed to the new network element will contain any such changes.

MSC ---- OpenRequest --> Sentinel
MSC ----- InitialDP ---> Sentinel
                         Sentinel ---- OpenRequest --> New Network Element
                         Sentinel ----- InitialDP' --> New Network Element
MSC <----------------- OpenAccept -------------------- New Network Element

Configuration

This feature is not configurable.

Provisioning interfaces

This feature has no provisioning interfaces.

Release Call and Close Dialog Feature

Description

Feature name

ReleaseCallAndCloseDialog

Applicable contexts

SS7 service

SAS Support

No

Prerequisite Features

Optional: Any feature setting the UserReleaseCause session state field

The Release Call And Close Dialog feature is a very simple feature that instructs Sentinel to release the call or SMS and close the dialog with the MSC. The following release cause codes are used by default:

  • for calls:

    • when used during Initial Trigger handling: CLASS_1_CALL_REJECTED (21)

    • when used during End Session handling: CLASS_1_NORMAL_CALL_CLEARING (16)

  • for SMSes:

    • if the latest OCS reply (if any) indicates an unknown user, then: UNKNOWN_SUBSCRIBER (30)

    • otherwise: RESERVED (11)

If a different release cause code is needed, another feature can be run before the Release Call And Close Dialog feature to set the CCUserReleaseCause or CCUserReleaseCause session state variable. If this session state variable is set, the Release Call And Close Dialog feature uses the cause value it specifies instead of the default. If the value set is not within the valid range of cause codes, the default cause code as specified above will be used instead.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

CCUserReleaseCause

com.opencloud.slee.resources.in.datatypes.cc.Cause

CAP-DataTypes.Cause

Release Cause to use for call control session release

Report featureCannotStart, featureHasFinished

SMSUserReleaseCause

com.opencloud.slee.resources.in.datatypes.sms.RPCause

CAP-DataTypes.RPCause

Release Cause to use for SMS session release

Report featureCannotStart, featureHasFinished

LatestOcsAnswer

org.jainslee.resources.diameter.ro.types.CreditControlAnswer

Credit-Control-Answer

For determining release cause code if the UserReleaseCause is not set

Use default call release cause CLASS1_NORMAL_CALL_CLEARING

SessionType

One of: call, sms

Session type of this call for choosing how to determine cause code from LatestOcsAnswer

Runtime exception handled by the feature runner

Outputs

This feature does not modify session state.

Error scenarios

This feature has no error conditions.

Feature responses

Response Reason

releaseCallAndCloseDialog

intended behaviour

featureHasFinished

feature has finished

Configuration

This feature is not configurable.

Roaming Default Call Forwarding Feature

Description

Feature name

RoamingDefaultCallForwarding

Applicable contexts

SS7 service

SAS Support

No

Prerequisite features

Roaming Default Call Forwarding (RDCF) applies only to roaming MTC calls. It defines roaming-specific forwarding addresses for ‘Busy’, ‘No reply’ cases to prevent tromboning of forwarded calls to numbers in the subscriber’s HPLMN.

The ‘Busy’, ‘No Reply’ cases are triggered when the event report BCSM returns busy or no answer.

RDCF issues a ‘Connect’ to forward the call. The following parameters are set in the ‘Connect’:

Parameter Value Description

destinationRoutingAddress

SessionState.{CfBusy,CfNoReply}

Set based on the forwarding case from session state

redirectingPartyID

SessionState.Subscriber

Sets to the address of the served subscriber

originalCalledPartyID

IF initialdp.originalCalledPartyID not set THEN
    set to initialdp.calledPartyBCDNumber
ELSE
    do not set
ENDIF

redirectionInformation.redirectingReason

USER_BUSY / NO_REPLY / UNCONDITIONAL / MOBILE_UNREACHABLE

Set based on reason for the forward.

redirectionInformation.RedirectionCounter

Set to Maximum Value (configurable)

Setting the counter to the maximum value has the effect of suppressing call forwarding in the VMSC, and preventing tromboning.

redirectionInformation.redirecting

CALL_DIVERTED

oCSIApplicable

true

Needed to ensure that MF call is triggered.

In the case of a subscriber configuration error which causes the feature to be unable to forward the call, the feature will allow the Sentinel core to continue without affecting the call, but will report the error to the core.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Runtime exception handled by feature runner

LatestEventReportBCSM

com..opencloud..slee..resources..cgin..callcontrol..CCEventReportBCSMArg

CCEventReportBCSMArg

Argument of the latest event report BCSM received

Report featureCannotStart, featureHasFinished

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v2.CAP2InitialDPArg

CAP-DataTypes.InitialDPArg

InitialDP which triggered this session

Runtime exception handled by feature runner

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Session type of this call for determining which party address to lookup

Call is considered not eligible for call forwarding — report featureHasFinished

RoamingIndicator

Boolean

true or false

Indicates whether this session is roaming

Runtime exception handled by feature runner

CfBusy

String

MSISDN

Call forwarding destination address when subscriber line is busy

If CfNoReply also null, increment FeatureNotEnabledForSubscriber
If EventTypeBCSM is tCalledPartyBusy, increment NoForwardingNumber and do not forward call

CfNoReply

String

MSISDN

Call forwarding destination address when subscriber does not answer

If CfBusy also null, increment FeatureNotEnabledForSubscriber
If EventTypeBCSM is tNoAnswer, increment NoForwardingNumber and do not forward call

Subscriber

String

MSISDN

For recording RedirectingPartyNumber in the connect arg if call forwarding is triggered

Runtime exception handled by feature runner

Outputs

Name Type Format Description

CCConnectArg

com.opencloud.slee.resources.cgin.cap_v2.CAP2ConnectArg

CAP-DataTypes.ConnectArg

The connect arg Sentinel will use when forwarding the call. Not updated if RDCF fails or is disabled.

Error scenarios

Scenario Handling

MappingException while mapping destination routing address to connect arg

Report featureFailedToExecute

Feature responses

Response Reason

featureCannotStart

latestEventReportBCSM is not set or Initial DP Arg is missing the CdPA BCD number

featureFailedToExecute

Error while forwarding a roaming MT call

connectAndCloseDialog

successful attempt to forward the call

featureHasFinished

feature has finished

Interaction with call-forwarding supplementary service

See ETSI TS 100 543/GSM 03.82 Call Forwarding (CF) supplementary services.

RDCF will suppress the call forwarding supplementary service for the subscriber (if configured) in the busy and no answer cases. Unconditional and not reachable cases which do not cause tromboning are not affected by this feature.

Note Please see Call Forwarding Detection Feature for detection and handling of the early call forwarding case, where the idp is received and call forwarding is pending.

OCS interface

No interaction with OCS from this feature except via MFC.

Triggers and application contexts

Application Contexts:

  • cap-v2-gsmSSF-to-gsmSCF-AC

  • capssf_scfGenericAC (CAP3).

The InitialDP will be triggered on DP12 (Terminating_ Attempt_Authorized).

Configuration

RDCF feature-wide configuration parameters

Parameter Type Description

MaxRedirectionCounter

Integer

The maximum value for use in connect.redirectionInformation.RedirectionCounter

Subscriber RDCF Table

Parameter Type

CfBusy

CalledPartyNumber

CfNoReply

CalledPartyNumber

The the RDCF list is provisioned in international format, such as:

  • 6421678956

  • 6492324856

  • 64800123456 (0800 123456)

The subscriber forwarding numbers will be provisioned using a text format, such as that used for CalledPartyNumber; for example:

address=641234567,NATURE=INTERNATIONAL,numberingplan=isdn,routingToInternalNetworkNumber=allowed

The internal format used by Sentinel will be the binary encoding.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

RoamingDefaultCallForwardingFeatureConfigProfileTable

Configuration properties

SentinelSelectionKey (for example, OpenCloud::::)

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Roaming Reorigination Feature

The Reorigination feature is used as a way of handling triggers from roaming subscribers on networks that use CAPv1, or networks that use CAPv2 or CAPv3 but are otherwise determined to be unsupported for direct call control from the VPLMN.

Description

Feature name

Reorigination

Applicable contexts

SS7 service

SAS Support

No

Prerequisite Features

Classify Call Scenario Feature

The reorigination capability is needed when:

  • Roaming partners are triggering calls with CAMELv1.

  • Roaming partners are triggering calls with CAPv2, and cannot send the ERB(disconnect) in the same TCAP message as the ACR)(see CAMEL2 issue).

  • The calling party number is lost in the ISUP signalling when traversing an international carrier. In this case Sentinel must store the calling party number and set it in the connect. As setting the calling party number is not supported in CAMEL, this capability requires INAP CS1, CS2, or a proprietary variant. See Noldus​[2] section 3.6.3 Short Number Dialling with CLI Guarantee pp.82. Currently not supported in Sentinel.

In these cases, the call is reoriginated to the HPLMN using a pool of special routing numbers. The reoriginated call is re-triggered from the HPLMN MSC.

The Reorigination feature should run at one of the pre credit check feature execution points for both the original InitialDP and the reoriginated InitialDP. The Reorigination feature uses the reorigination-correlation-ra to choose the special routing number, and to store data from the original InitialDP that should be correlated with the reoriginated InitialDP.

Tip See Correlation Resource Adaptor to understand how the reorigination-correlation-ra works and how it can be configured
Note If the dialog should not be reoriginated, or represent a reoriginated dialog, then the Reorigination feature will silently end to allow subsequent features to process the InitialDP.

The two phases of roaming reorigination

  • Reoriginating a session. The Reorigination feature analyses the InitialDP stored in session state to decide if it should be reoriginated. If the dialog should be reoriginated, then it chooses a free special routing address and routes the call to this special routing address. The reoriginated call may then be re-triggered from the HPLMN MSC

  • Receiving a reoriginated trigger.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report featureCannotStart, featureHasFinished

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP-DataTypes.InitialDPArg

InitialDP which triggered this session — CalledPartyBCDNumber may be used in identifying reoriginated calls and may be modified

Runtime exception to be handled by feature runner

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Session type of this call

Call will not be reoriginated or identified as reoriginated

RoamingIndicator

Boolean

true or false

Indicates whether this is a roaming call

Reorigination will not be attempted

Outputs

Name Type Format Description

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP-DataTypes.InitialDPArg

CalledPartyBCDNumber be restored or replaced if the call has or will be reoriginated

RoamingIndicator

Boolean

true or false

Will be set to true if this call is a reoriginated request, otherwise unchanged

CCConnectArg

com.opencloud.slee.resources.cgin.cap_v2.CAP2ConnectArg

CAP-DataTypes.ConnectArg

The connect arg Sentinel will use if the call is to be reoriginated — not modified otherwise

Error scenarios

Scenario Handling

Sessionstate SentinelSelectionKey is null

Report featureCannotStart

Invoked for a non CAP dialog

Report featureIssuedWarning

No available correlation entries

Report releaseCallAndCloseDialog

Could not find a mapper to build the ConnectArg

Report featureFailedToExecute

Error retrieving the correlated data to restore InitialDP

Report releaseCallAndCloseDialog

Feature responses

Response Reason

featureCannotStart SessionState

SentinelSelectionKey is not set

featureIssuedWarning

non CAP dialog

releaseCallAndCloseDialog

Error while restoring the original Called Party Address address, error while reoriginating: unsupported network, could not find a mapper to build the ConnectArg

connectAndCloseDialog

Attempt to trigger reorigination

featureHasFinished

feature has finished

Below are details of the two phases, followed by Call Flow, Configuration, Configuration Profile Naming, and Provisioning Interfaces.

Phase one: reoriginating a session

Reoriginating a session includes these steps:

Determining if a dialog should be reoriginated

The Reorigination feature analyses the InitialDP to determine if the dialog should be reoriginated. The Reorigination feature checks:

  1. if the dialog is for originating treatment. The first InitialDP will be triggered on DP2 (Collected Info). Terminating and forwarded dialogs are not reoriginated.

  2. if the application context is supported. Supported application contexts are:

    • cap_v1_gsmSSF_to_gsmSCF-AC

    • cap-v2-gsmSSF-to-gsmSCF-AC

    • capssf_scfGenericAC (CAP3).

  3. if the InitialDP VLR address is for a roaming party for which reorigination is supported. Roaming partners that do not support the ERB(Disconnect) + ACH guarantee are listed in a reorigination configuration table which includes the VLR addresses of the operator. The Reorigination service determines if the VLR address is present in the table, and if so triggers reorigination.

Processing a reoriginated session

If a session is to be reoriginated, the feature uses the Correlation RA to:

  • get an ID that is used to route the call to

  • associate some data with the correlation ID that can be used when the dialog is reoriginated.

The important steps are:

  1. Create the address we will use to select an id-pool.

  2. Create the data that we will associate with the correlation ID.

  3. Get a new correlation entry (passing the address and correlation data).

  4. Construct the outgoing connect arg.

Step one is achieved with a Mapper. The Reorigination feature looks for a mapper:

// a mapper that takes an {{InitialDP}} and generates a String.
final Mapper mapper = mapperLibrary.findMapper(selectionKey, initialDpArg.getClass(), String.class);

Sentinel includes a Mapper for this purpose — CAPInitialDPToCorrelationIdPoolAddress — that returns the MCC from location information in the InitialDP.

Note An alternative mapper that uses a different method for choosing an address to choose the id-pool can be written using the Sentinel SDK.

Step two is achieved with a Mapper. The Reorigination feature looks for a mapper:

// a mapper that takes an {{InitialDP}} and generates a {{byte\[\]}}.
final Mapper mapper = mapperLibrary.findMapper(selectionKey, cap1IdpArg.getClass(), byte[].class);

Sentinel includes a Mapper for this purpose, (CAPInitialDPArgToCorrelationData), that:

  • creates a new CAP1InitialDPArg object

  • copies the called party bcd number to the new cap 1 InitialDP

  • copies the bearer capability (if present) to the new cap 1 InitialDP

  • copies the redirecting party ID (if present) to the new cap 1 InitialDP

  • copies the redirection information (if present) to the new cap 1 InitialDP

  • copies the location information (if present) to the new cap 1 InitialDP

  • copies the extensions (if present) to the new cap 1 InitialDP

  • uses CGIN persist factory to turn this CAP1InitialDP → byte[].

Note An alternative mapper that uses a different method for building the correlated data to be associated with the correlation ID can be written using the Sentinel SDK. Step four uses a configuration profile selected from the ReoriginationConfigProfileTable to construct a new DRA, and a Mapper from the trigger class (for example, Cap2InitialDPArg) to a ConnectArg, to map it to an outgoing connect arg.

Phase two: receiving a reoriginated trigger

Receiving a reoriginated trigger includes these steps:

Determining if a dialog has been reoriginated

The reorigination feature analyses the InitialDP to determine whether the dialog is a reoriginated dialog; if:

  1. The reoriginated InitialDP will be triggered on DP3 (Analyzed Info).

  2. The application context is supported. Supported application contexts are:

    • cap-v2-gsmSSF-to-gsmSCF-AC

    • capssf_scfGenericAC (CAP3).

  3. The called party is a special routing number.

Note See Correlation Resource Adaptor to understand how the Correlation resource adaptor works and how it can be queried to see if the called party is a special routing number.

Processing a reoriginated trigger

If this session corresponds is a reoriginated trigger:

  • use the correlation ID (the called party number) to get the correlated data from the Correlation RA

  • restore fields from the original InitialDP (that is stored in the correlation data) into the reoriginated InitialDP.

This is achieved with a mapper. The reorigination feature looks for a mapper:

// a mapper that takes a {{byte\[\]}} and returns a {{CAP1InitialDPArg}}
final Mapper mapper = mapperLibrary.findMapper(selectionKey, byte[].class, CAP1InitialDPArg.class);

Sentinel core bundles a mapper for this purpose (CorrelationDataToCAPInitialDP) that:

  • uses CGIN persist factory to turn this byte[] into a CAP1InitialDPArg object

  • copies the cap 1 InitialDP called party bcd number to the reoriginated InitialDP

  • copies the cap 1 InitialDP bearer capability (if present) to the reoriginated InitialDP

  • copies the cap 1 InitialDP redirecting party ID (if present) to the reoriginated InitialDP

  • copies the cap 1 InitialDP redirection information (if present) to the reoriginated InitialDP

  • copies the cap 1 InitialDP location information (if present) to the reoriginated InitialDP

  • copies the cap 1 InitialDP extensions (if present) to the reoriginated InitialDP

  • sets the InitialDP session state field with the updated reoriginated InitialDP.

Note An alternative mapper that uses a different method for reconstructing the correlated data associated with the correlation ID can be written using the Sentinel SDK.
Tip

The mapper used to reconstruct the correlated data and update the reoriginated InitialDP should be thought of as the mirror to the mapper used in step two for processing the original InitialDP. If a custom method for choosing the data to associate with the correlation ID is built with the Sentinel SDK, then two new mappers are needed that:

  • take an InitialDP and generate a byte[]

  • take a byte[] and return a CAP1InitialDPArg.

Determining service type in reoriginated dialogs

The Classify Call Scenario Feature may not be able to correctly determine that a reoriginated dialog is roaming. To ensure that the roaming indicator is set correctly, the Reorigination service must set the service type to isRoaming.

Call flow

400

Configuration

Correlation RA configuration

Note See Correlation Resource Adaptor to understand how the correlation resource adaptor works and how it can be configured.

Feature configuration

A configuration profile table is used to configure the parameters of the new DRA sent out in the first connect (Phase 1).

Parameter Type Description

Nature

CalledPartyNumber.Nature

The address nature

NumberingPlan

CalledPartyNumber.NumberingPlan

The numbering plan of the address

RoutingToInternalNetworkNumber

CalledPartyNumber.RoutingToInternalNetworkNumber

either ALLOWED or NOT_ALLOWED

Address list configuration

A VLR address list table is maintained, for the service to identify roaming partners requiring reorigination. A VLR address entry is an extension of the standard Address list entry, the addition being a listing of the set of supported application contexts:

Parameter Type Description

OriginatingContextNames

String[]

Array of context names: cap_v1_gsmSSF_to_gsmSCF_AC, cap_v2_gsmSSF_to_gsmSCF_AC, capssf_scfGenericAC

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

${PLATFORMOPERATOR}_Reorigination_AddressListConfigurationTable

Address list configuration

${SELECTIONKEY}:Reorigination:VLRAddressList

${PLATFORMOPERATOR}_Reorigination_AddressListEntryProfileTable

Feature specific Address List entry table

${SELECTIONKEY}:Reorigination:VLRAddressList:${ADDRESS}

ReoriginationConfigProfileTable

new DRA parameters

${SELECTIONKEY} (for example, OpenCloud::::)

ReoriginationCorrelationIdPools

Sets of reorigination numbers

Arbitrary eg Pool-1, however must include at least one profile named DEFAULT

CorrelationConfigTable

reorigination-correlation-ra configuration

ReoriginationCorrelationConfigProfile — can be redefined in the reorigination-correlation-ra configuration properties

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

SMS Normalization Feature

Description

Feature script name

SMSNormalization

Applicable contexts

SS7 service MO SMS

SAS Support

No

Prerequisite features

Prefix And Suffix Analysis — where required

Uses the Normalization Component component to normalize the:

  • idp.CallingPartyNumber (MOSMS)

  • idp.DestinationSubscriberNumber (MOSMS)

The idp in session state is updated. All features executed after this feature will access the normalized numbers when accessing the idp in session state.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report featureCannotStart, featureHasFinished

CAP3InitialDPSMSArg

com.opencloud.slee.resources.cgin.cap_v3.CAP3InitialDPSMSArg

CAP-DataTypes.InitialDPSMSArg

InitialDPSMS which triggered this session, to which address normalization will be applied

Report featureCannotStart, featureHasFinished

Outputs

Name Type Format Description

DestinationHasChanged

boolean

true or false

Set to true only if InitialDPSMS is modified as a result of address normalization

CAP3InitialDPSMSArg

com.opencloud.slee.resources.cgin.cap_v3.CAP3InitialDPSMSArg

CAP-DataTypes.InitialDPSMSArg

Updated only if InitialDPSMS is modified as a result of address normalization

Error scenarios

Scenario Handling

Sessionstate CAP3InitialDPSMSArg is

null Report featureCannotStart

Initial DP SMS Arg is missing the CallingPartyNumber address

Report featureCannotStart

Initial DP SMS Arg is missing the DestinationSubscriberNumber address

Report featureCannotStart

Exception during number normalization

Report featureCannotStart

Feature responses

Response Reason

featureCannotStart

InitialDP SMS Arg is not set in the session state or Initial DP SMS Arg is missing the CallingPartyNumber address

featureHasFinished

feature has finished

Configuration

Configuration profile naming

Provisioning interfaces

SS7 Determine Network Operator Feature

Description

Feature name

SS7DetermineNetworkOperator

Applicable contexts

SS7 service

SAS Support

No

Prerequisite features

None

The SS7 Determine Network Operator Feature sets the network operator element of the Sentinel selection key for use in the selection of:

  • feature execution scripts

  • mappers

  • address lists.

This feature is needed for multi-tenancy scenarios. This feature is intended to be used in the direct access case.

The feature will set the Network Operator element of the Sentinel selection key, based on the value returned by the DetermineNetworkOperator function below.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data and updating network operator field

Report featureCannotStart, featureHasFinished

Outputs

Name Type Format Description

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>:<network>:::)

Only updated if network operator is determined

OriginatingSccpAddress

com.opencloud.slee.resources.cgin.SccpAddress

SccpAddress

Set to triggering DialogOpenRequestEvent originating address

ResponderSccpAddress

com.opencloud.slee.resources.cgin.SccpAddress

SccpAddress

Set to an address configured in Determine Network Operator address list

Error scenarios

Scenario Handling

Trigger event not a DialogOpenRequestEvent

Report featureCannotStart

Sessionstate SentinelSelectionKey is null

Report featureCannotStart

Trigger is null

Report featureCannotStart

DestinationAddress in DialogOpenRequestEvent is null

Report featureCannotStart

Could not match DestinationAddress in SS7DetermineNetworkOperatorGlobalTitleAddress

Increment CouldNotDetermineNetworkOperator
Report featureFailedToExecute

Feature responses

Response Reason

featureCannotStart

Trigger event must be DialogOpenRequestEvent, SessionState SentinelSelectionKey is not set, unsupported trigger, destination SCCP address not present in DialogOpenRequestEvent or destination SCCP GT address does not match and no default available

featureHasFinished

feature has finished

Selection

Function DetermineNetworkOperator(destinationSccpAddress.GT)

    IF destinationSccpAddress.GT not available THEN
        return default network operator value
    ENDIF

    IF destinationSccpAddress.GT address found in network operator selection table THEN
        RETURN network operator value from the matched selection table record match
    ELSE
        RETURN default network operator value
    ENDIF

The use of the destinationSccpAddress GT information is dependent on the subscriber’s HPLMN network configuration. It is possible that some networks may not pass the GT information set in the subscriber’s o-CSI or t-CSI.

Here is an example of SCCP address routing which includes the GT information:

application context: CAP-v2-gsmSSF-to-gsmSCF-AC
CAP OpenService Type: request/indication bitmask=0x1
CapOpenArg:
{
    applicationContext: 0 4 0 0 1 0 50 1
    nextBlockOpCode: not present
    originatingAddress:
    {
        P=C7, NI=0, RI=PCSSN, GTI=0,
              PC=5900, SSN=146
    }
    destinationAddress:
    {
        P=C7, NI=0, RI=PCSSN, GTI=4,
              SSN=146, TT=0, NP=1 (isdn), ES=2 (even),
              NAI=4 (international num), DIG=420603059300
    }
    gprsOriginatingReference: not present
    gprsDestinationReference: not present
    user information length: not present

}

For subscribers who are configured for intra-PLMN only, it is possible that the CSI may contain a gsmSCP address containing only PC/SSN. In this case, the feature cannot operate, as no GT information will be available.

Configuration

Network Operator Destination Global Title SCCP Address List Selection Table:

Parameter Type Example Values

Address

GT Address

642100000012

NetworkOperator

String

MVNO1

Example table:

Address NetworkOperator

642100000001

OpenCloud

642100000011

OpenNet

642100000022

CloudNet

The default network operator is stored in the Sentinel configuration table.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

${PLATFORMOPERATOR}_SS7DetermineNetworkOperator_AddressListConfigurationTable

Address list configuration

${SELECTIONKEY}:SS7DetermineNetworkOperator:GlobalTitleAddress

${PLATFORMOPERATOR}_SS7DetermineNetworkOperator_AddressListEntryTable

Feature-specific Address List entry table

${SELECTIONKEY}:SS7DetermineNetworkOperator:GlobalTitleAddress:${ADDRESS}

SentinelConfigurationTable

Sentinel configuration table (contains DefaultNetworkOperator)

SentinelConfiguration

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

SS7 Subscriber Determination Feature

Description

Feature name

SubscriberDetermination

Applicable contexts

SS7 Service

SAS Support

No

Prerequisite features

Classify Call Scenario Feature

The Subscriber Determination Feature is used to determine the subscriber address, based on parameters from the InitialDP and session state.

For the prefix and exact match of MSISDNs, the following matching will be performed:

Call Type Subscriber number

MOC (Voice, Video, Fax, Data)

initialDP.callingPartyNumber

MFC (Voice, Video, Fax, Data)

initialDP.redirectingPartyID

MTC (Voice, Video, Fax, Data)

initialDP.calledPartyNumber

MOSMS

initialDPSMS.callingPartyNumber

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP-DataTypes.InitialDPArg

InitialDP which triggered this session

Fall back to CAP3InitialDPSMSArg

CAP3InitialDPSMArg

com.opencloud.slee.resources.cgin.cap_v3.CAP3InitialDPSMSArg

CAP-DataTypes.InitialDPSMSArg

InitialDPSMS which triggered this session, to which address normalization will be applied

Irrelevant if InitialDPArg set, otherwise report featureFailedToExecute, featureHasFinished

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Session type of this call

Report featureFailedToExecute, featureHasFinished

Subscriber

String

MSISDN

The subscriber for this session

Proceed with subscriber determination

Outputs

Name Type Format Description

Subscriber

String

MSISDN

The subscriber address identified for this session

Error scenarios

Scenario Handling

InitialDPArg and InitialDPSMSArg not present or do not contain subscriber address

Report featureFailedToExecute

Feature responses

Response Reason

featureFailedToExecute

InitialDPArg and InitialDPSMSArg not present or do not contain subscriber address

featureHasFinished

feature has finished

Configuration

This feature is not configurable.

Provisioning interfaces

This feature has no provisioning interfaces.

SS7 Unconditional Reject Session Feature

Description

Feature name

UnconditionalRejectSession

Applicable contexts

Diameter Mediation Service

SAS Support

No

Prerequisite features

None

Unconditionally refuses the dialog with refuse reason set to USER_NO_REASON_GIVEN.

Session state inputs and outputs

This feature does not read from or write to session state.

Error scenarios

This feature always succeeds.

Feature responses

Response Reason

refuseDialog

intended behaviour

featureHasFinished

feature has finished

Configuration

This feature is not configurable.

Provisioning interfaces

This feature has no provisioning interfaces.

Set User Release Cause From Latest Event Report Feature

Description

Feature name

SetUserReleaseCauseFromLatestEventReport

Applicable contexts

SS7 service

SAS Support

No

Prerequisite features

None

The Set User Release Cause From Latest Event Report feature inspects the latest EventReportBCSM received by Sentinel and if possible sets the UserReleaseCause integer session state variable to a cause code value appropriate for that event report. This feature can then be followed by the Release Call and Close Dialog Feature to have that cause code included in the ReleaseCall operation sent to the MSC.

The UserReleaseCause session state variable is set depending on the eventTypeBCSM field of the latest EventReportBCSM argument:

  • for Route Select Failure:

    • if the EventReportBCSM contains event-specific information, then the release cause is obtained from the event-specific information;

    • otherwise a default of CLASS0_NO_ROUTE_TO_DESTINATION (3) is used.

  • for Called Party Busy:

    • if the EventReportBCSM contains event-specific information, then the release cause is obtained from the event-specific information;

    • otherwise a default of CLASS1_USER_BUSY (17) is used.

  • for No Answer:

    • a default of CLASS1_NO_ANSWER (19) is used.

  • for Disconnect

    • if the EventReportBCSM contains event-specific information, then the release cause is obtained from the event-specific information;

    • otherwise a default of CLASS1_NORMAL_CALL_CLEARING (16) is used.

For any other case, including the absence of an EventReportBCSM operation to inspect, the UserReleaseCause session state variable is left untouched.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

LatestEventReportBCSM

com.opencloud.slee.resources.cgin.callcontrol.CCEventReportBCSMArg

CC-DataTypes.EventReportBCSMArg

Latest event report

Do not set release cause
report featureHasFinished

Outputs

Name Type Format Description

UserReleaseCause

Integer

Any cause value, such as Cause.CauseValue.CLASS0_NO_ROUTE_TODESTINATION, Cause.CauseValue.CLASS1USER_BUSY, Cause.CauseValue.CLASS1_NO_ANSWER, Cause.CauseValue.CLASS1_NORMAL_CALL_CLEARING

The cause value extracted from the latest event report

Error scenarios

This feature always succeeds.

Feature responses

Response Reason

featureHasFinished

feature has finished

Configuration

This feature is not configurable.

Provisioning interfaces

This feature has no provisioning interfaces.

Short Code Feature

The Short Code feature is a pre-credit check feature early in the feature list (but always after the emergency number feature), to perform number translation on a set of short codes configured for the network.

Description

Feature name

ShortCode

Applicable contexts

SS7 service

SAS Support

No

Prerequisite features

Classify Call Scenario Feature

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data

Report featureCannotStart, featureHasFinished

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg \

CAP-DataTypes.InitialDPArg

InitialDP which triggered this session

Report featureCannotStart, featureHasFinished

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Session type of this call

Report featureCannotStart, featureHasFinished

Outputs

Name Type Format Description

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP-DataTypes.InitialDPArg

If short code matched and translation was successful

DestinationHasChanged

boolean

true or false

If short code matched and translation was successful

Error scenarios

Scenario

Handling

Sessionstate SentinelSelectionKey is null

Report featureCannotStart

Sessionstate InitialDPArg is null

Report featureCannotStart

InitialDP Arg is not CAP

Report featureCannotStart

Sessionstate CallType is null

Report featureCannotStart

InitialDP missing CalledPartyBCDNumber address

Report featureCannotStart

Feature responses

Response Reason

featureCannotStart

SessionState SentinelSelectionKey is not set, InitialDP Arg is not set in session state, InitialDP Arg is not an instance of CAP1InitialDPArg, Session Type is not set in the session state or Initial DP Arg is missing the CdPA BCD number

featureHasFinished

feature has finished

Configuration

Short Code feature configuration:

Parameters Type Description

MinLength

Integer

Minimum short code length

MaxLength

Integer

Maximum short code length

Example configuration:

MinLength

MaxLength

3

3

Short Code address list configuration:

The ShortCode address list entry is an extension of the standard Address list entry, the addition being the 'translatedAddress' field which is used for number translation:

Parameter Type Description

…​

…​

…​

TranslatedAddress

String

the value of the short code translated address (in international format)

Example configuration:

Address

TranslatedAddress

100

6422987654

200

6422123456

The shortCode address is a digit string which can contain any digits valid for the network.

TranslatedAddress is a digit string in international format.

The short code list applies to all subscribers scoped to Sentinel selection key.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

ShortCodeFeatureConfigProfileTable

Short code feature configuration

SentinelSelectionKey (for example, OpenCloud::::)

${PLATFORMOPERATOR}_ShortCode_AddressListConfigurationTable

Address list configuration

${SELECTIONKEY}:ShortCode:AddressList

${PLATFORMOPERATOR}_ShortCode_AddressListEntryTable

Feature specific Address List entry table

${SELECTIONKEY}:ShortCode:AddressList:${ADDRESS}

Provisioning interfaces

The feature is provisioned using the Sentinel REST API or web interface.

Validate InitialDP Feature

Description

Feature name

ValidateInitialDP

Applicable contexts

SS7 service

SAS Support

No

Typical feature execution points

DirectAccess_SessionPreCreditCheck

Prerequisite features

Classify Call Scenario Feature

The Validate InitialDP feature performs validation checks to ensure that the InitialDP has sufficient parameters to be handled correctly by Sentinel.

If the InitialDP is not valid, then the Valdiate InitialDP feature returns either continueAndClose or releaseAndClose to the Sentinel core. The choices of response and release cause are configurable. In the absence of configuration data, the default behaviour is releaseCallAndClose(Call-Rejected).

The validation performed includes:

  • check that InitialDP is present in session state

  • check that InitialDP is CAP

  • check that CallingPartyNumber is present in the InitialDP

  • if session type is mobile originating, check for presence of CalledPartyBCDNumber

  • if session type is mobile terminating or mobile forwarded, check for presence of CalledPartyNumber.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For selecting configuration data for ValidationFailedAction if InitialDP fails validation

Runtime exception handled by feature runner

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP-DataTypes.InitialDPArg

InitialDPArg which triggered this session

Report featureCannotStart, featureHasFinished

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Session type of this call for determining which party numbers should be present in InitialDPArg

Report featureCannotStart, featureHasFinished

Outputs

This feature does not modify session state.

Error scenarios

Scenario Handling

Sessionstate InitialDPArg is null

Report featureCannotStart

InitialDPArg is not CAP

Report featureCannotStart

Sessionstate CallType is null

Report featureCannotStart

Feature responses

Response Reason

featureCannotStart

InitialDP is not set in session state, InitialDP is not CAP or Session Type is not set in the session state

releaseCallAndCloseDialog

Configured to release on invalid InitialDP

continueAndCloseDialog

Configured to continue on invalid InitialDP

featureHasFinished

feature has finished

Configuration

The configuration allows two options on validation failure: releaseAndClose or continueAndClose. The release cause code may be configured.

Parameter Type Description

Action

String

one of: releaseAndClose or continueAndClose

ReleaseCause

Integer

cause code

Call flow

MSC ----- OpenRequest ----> Sentinel
MSC ------ InitialDP -----> Sentinel
MSC <----- OpenAccept ----- Sentinel
MSC <--- Release(cause) --- Sentinel

The release cause will be configurable (see cause values). The default will be a cause value of CLASS1_CALL_REJECTED.

Configuration profile naming

Configuration Profile Table Name Description Profile Naming

ValidateInitialDPFeatureConfigProfileTable

Configuration of behaviour on validation failure

SentinelSelectionKey (for example, OpenCloud:OpenCloud:call::)

Provisioning interfaces

The feature is provisioned using the Sentinel Features REST API or web interface.

Validate Third Party Call Request Feature SS7

Description

Feature name

Validate3rdPartyCallRequest

Applicable contexts

SS7 service

SAS Support

No

Typical feature execution points

This feature should run early in ThirdPartyAccess_SessionAccept

Prerequisite Features

None

The Validate 3rd Party Call Request Feature checks the received HTTP request to see if it is well formed. The SS7 service accepts HTTP requests in the following format:

http://<host>:<port>/sentinel-ss7?cgpa=642200001&cdpa=642200002

This feature checks for the presence of the cgpa and cdpa request parameters.

Note The SS7 service only accepts the HTTP request for processing if the path contains sentinel-ss7

Session state inputs and outputs

This feature does not read from or write to session state.

Error scenarios

Scenario Handling

IOException while retrieving HttpRequest content

Increment CouldNotProcessHttpRequest

Report

refuseDialog

Feature responses

Response Reason

refuseDialog

the request to set up a 3rd party call should be refused

featureHasFinished

feature has finished

Configuration

This feature is not configurable.

Provisioning interfaces

This feature has no provisioning interfaces.

Voice Call Normalization Feature

Description

Feature script name

Normalization

Applicable contexts

SS7 service voice call

SAS Support

No

Prerequisite features

Prefix and Suffix Analysis — where required

Uses the Normalization Component component to normalize the:

  • idp.CallingPartyNumber (MOC, MTC, MFC)

  • idp.CalledPartyBCDNumber (MOC)

  • idp.CalledPartyNumber (MTC, MFC)

The idp in session state is updated. All features executed after this feature will access the normalized numbers when accessing the idp in session state.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud.sentinel.common.SentinelSelectionKey

selection key (for example, <platform>::::)

For configuring normalizer

Runtime exception handled by feature runner

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP-DataTypes.InitialDPArg

InitialDPArg which triggered this session, to which address normalization will be applied

Report featureCannotStart, featureHasFinished

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Session type of this call

Report featureCannotStart, featureHasFinished

Outputs

Name Type Format Description

InitialDPArg

com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg

CAP-DataTypes.InitialDPArg

Updated only if InitialDPArg is modified as a result of address normalization

DestinationHasChanged

boolean

true or false

Set to true only if InitialDPSMS is modified as a result of address normalization