Description
Feature script name |
ClosedUserGroup |
---|---|
Applicable contexts |
SS7 service |
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.
The ICB and OCB capabilities of the CUG Supplementary Service are not supported:
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, |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
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) |
|
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 |
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) |
|
ClosedUserGroupEnabled |
Boolean |
true or false |
Whether the subscriber has closed user group support enabled |
Equivalent behaviour if null or false |
ClosedUserGroupList |
String[] |
Array of closed user group names |
The closed user groups this subscriber belongs to |
Increment ClosedUserGroupNotEnabled |
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 |
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 |
SessionState: CUG preferred id is invalid |
Set sessionstate ClosedUserGroupCall to false |
OtherPartyAddress could not be set successfully |
Set sessionstate ClosedUserGroupCall to false |
No CUG Group was selected |
Set sessionstate ClosedUserGroupCall to false |
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, |
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.