3 Background Processes on the SMS
This chapter provides a description of the programs or executables used by CCS as background processes on the SMS.
Executables are in the /IN/service_packages/CCS/bin directory.
Some executables have accompanying scripts that run the executables after performing certain cleanup functions. All scripts should be in the same directory as the executable.
For more information about the processes and systems that use these programs and executables, see System Overview.
WARNING:
It is a prerequisite for managing these core service functions that the operator is familiar with the basics of Unix process scheduling and management. Specifically, the following Unix commands:-
init (and inittab)
-
cron (and crontab)
-
ps
-
kill
CHECK_PC_DELETION
This procedure is run once a day through a script /IN/service_packages/CCS/bin/ccs_pc_delete.sh launched through the crontab of the ccs_oper user.
Do a crontab –e as ccs_oper to see the related entry in the crontab or to change the date of occurrence.
This procedure will fully delete any periodic charges that are ready for final deletion. This includes all references to the periodic charge in other tables and also all references to the associated balance type. Deletion of a periodic charge will include any references to the charge by the Subscriber Profile Manager.
acsCompilerDaemon
The acsCompilerDaemon generates the fast-lookup binary compiled control plan data which is then used by the ACS service logic to process calls at running time.
The acsCompilerDaemon runs continuously, polling the database to look for newly written control plans and control plan structures (for example, indicated by database field ACS_CALL PLAN.BUILD = B). It polls the database every “alertTimeout” seconds. Due to the way Oracle reacts to signals, signals are masked during the time the process is both waiting for an alert to occur and the time spent compiling control plans.
You need to configure acsCompilerDaemon for the CCS system to run successfully because CCS runs as an ACS service.
It is run by acs_oper in the acs.conf file.
For more information about ACS, control plans and the acs.conf file, see ACS Technical Guide.
Startup - Nonclustered
In a non clustered environment this task is started automatically by entry acs0 in the inittab, through the /IN/service_packages/ACS/bin/acsComplierDaemonStartup.sh shell script.
You can check if the process is running by using the Unix ps command. We assume that you are familiar with Unix processes and with the Unix commands to manage them.
ps -ef | grep acsCompilerDaemonacs 23857 23853 49 14:33:20 pts/5 0:00 acsCompilerDaemonWhen ACS is installed, the startup inittab entry is added by the install process. The inittab entry waits until Oracle has started and then runs.
Startup - Clustered
In a clustered environment this task is started automatically by the Sun Plex manager. The files required by the Sun Plex manager are located in the /opt/ESERVAcsCompilerDaemon directory.
This is configured by the acsCluster package, and will set up the use of the Sun Plex manager to start, stop, restart and move the failover processes to other nodes as required.
Parameters
The acsCompilerDaemon does not support any command line parameters; it is completely configured in the acs.conf file. For more information about the acs.conf file, see ACS Technical Guide.
Failure
SELECT ID from ACS_CALL_PLAN where BUILD='B';Under normal operation, control plans will only remain in the B state for a few seconds at most.
ccsBeOrb
The ccsBeOrb interface is responsible for updating and retrieving subscriber account states for other processes. Updates to an account are also made from this ORB interface to the other Voucher and Wallet Server in the pair.
About Configuring CORBA Connections for ccsBeOrb
The CorbaServices section in the eserv.config configuration file on the SMS node defines common connection parameters for CORBA services for ccsBeOrb. The CorbaServices configuration overrides the default and command-line values specified for CORBA listen ports and addresses. If you are using IP version 6 addresses, then you must include the CorbaServices section in the eserv.config file. However, this section is optional if you are using only IP version 4 addresses.
CorbaServices = {
AddressInIOR = "hostname"
ccsBeOrbListenPort = port
OrbListenAddresses = [
"ip_address1",
"ip_address2",
]
}Where:
-
hostname is the hostname or IP address to place in the IOR (Interoperable Object Reference) for the CORBA service.
-
port is the number of the port on which ccsBeOrb will listen. The ccsBeOrbListenPort parameter overrides the port number set by the listenPort parameter.
-
ip_address1,ip_address2 lists the IP addresses on which CORBA services listen for incoming requests. The list of IP addresses in the OrbListenAddresses parameter can include both IP version 6, and IP version 4 addresses. The OrbListenAddresses parameter overrides the IP address set by the listenHost parameter.
For more information about configuring CORBA services, see Service Management System Technical Guide.
Startup - Nonclustered
This task is started by entry ccs3 in the inittab, through the /IN/service_packages/CCS/bin/ccsBeOrbStartup.sh shell script.
You can check if the process is running by using the Unix ps command.
ps -ef | grep ccsBeOrbResult: The listed process is the compiler process.
ccsBeOrb Start-Up for Operational Implementation
The ccsBeOrb process is started automatically by placing it in the Unix Initialization table, inittab.
CCS_ROOT/bin/ccsBeORBResult: Placing the ccsBeOrb startup script in the inittab file ensures that if ccsBeOrb should die, it will be automatically restarted by the operating system within a few seconds.
Startup - Clustered
In a clustered environment this task is started automatically by the Sun Plex manager. The files required by the Sun Plex manager are located in the /opt/ESERVCcsBeOrb directory.
This is configured by the ccsCluster package and will set up the use of the Sun Plex manager to start, stop, restart and move the failover processes to other nodes as required.
Restart
Under certain circumstances, it is desirable to restart ccsBeOrb in order to pick up some configuration changes with minimal interruption to service. The most likely reasons for this would be:
-
A new ccsBeOrb program has been compiled and linked
-
Configuration file eserv.config has been modified
In this case, you can use ps to determine the process ID of the ccsBeOrb process, and use kill -TERM to terminate the process.
Shutdown
To terminate the ccsBeOrb, use the Unix command ps to identify the process number and terminate it manually. Or, you can use the provided shell script, kill_CCS_be_orb to simplify the task.
Configuration - eserv.config
ccsBeOrb is configured by the ccsBeOrb section of the eserv.config file. The structure of the section is shown below.
Note:
For more information about the configuration for the BeClient provided by the libBeClientIF library, see VWS Technical Guide.ccsBeOrb = {
beLocationPlugin = "lib"
oracleUserPass = "usr/pwd"
clientName = "name"
heartbeatPeriod = microsecs
messageTimeoutSeconds = seconds
maxOutstandingMessages = int
reportPeriodSeconds = seconds
connectionRetryTime = seconds
plugins = [
{
config="confStr",
library="lib",
function="str"
}
[...]
]
confStr = {
plugin configuration
}
notEndActions = [
{type="str", action="[ACK |NACK]"}
[...]
]
plugin configuration - see plug-in-specific config
stateConversions = {
A|P|D|F|S|T = "str"[,
...]
}
voucherStateConversions = {
A|F|R|C|D|H = "str"[,
...]
}
namingServer = {
host = "host",
port = port,
name = "str"
addHostPrefix = true|false
}
billingEngines = [
{
id = id,
primary = { ip="ip", port=port },
secondary = { ip="ip", port=port }
}
[...]
]
}
eserv.config Parameters
The ccsBeOrb supports the following parameters in the ccsBeOrb section of the eserv.config file.
Note:
This configuration section is also used by the ccsVWARSExpiry service library.billingEngines
| Syntax: |
|
| Description: | Overrides connection details that beLocationPlugin obtains from the database. |
| Type: | Parameter array. |
| Optionality: | Optional (beLocationPlugin finds connection details if not set). |
| Allowed: | Not Applicable. |
| Default: | Not Applicable. |
| Notes: | Identifies the Voucher and Wallet Servers and assigns their Internet connection details. |
| Example: |
|
id
| Syntax: | id = int |
| Description: | This unique identifier for this Voucher and Wallet Server configuration. |
| Type: | Integer. |
| Optionality: | Required, if this section is used. |
| Allowed: | Not Applicable. |
| Default: | Not Applicable. |
| Notes: | This parameter is part of the billingEngines parameter array. |
| Example: | id = 1 |
ip
| Syntax: | ip = "ip" |
| Description: | The Internet Protocol (IP) address of the Voucher and Wallet Server. |
| Type: | String. |
| Optionality: | Required. |
| Allowed: | IP version 4 (IPv4) addresses, IP version 6 (IPv6) addresses. |
| Default: | None. |
| Notes: |
This parameter is part of either the primary, or the secondary parameter group of the billingEngines parameter array. You can use the industry standard for omitting zeros when specifying IPv6 addresses. |
| Examples: |
|
port
| Syntax: | port = port |
| Description: | The port number associated with the address of the Voucher and Wallet Server. |
| Type: | Integer. |
| Optionality: | Required. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | This parameter is part of either the primary or secondary parameter group of the billingEngines parameter array. |
| Example: | port = 1500 |
primary
| Syntax: | primary = { ip="ip", port=port } |
| Description: | The primary parameter group defines the Internet Protocol (IP) address and associated port number of the primary Voucher and Wallet Server. |
| Type: | Parameter array. |
| Optionality: | Required, if this section is used. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | This parameter is part of the billingEngines parameter array. |
| Examples: |
|
secondary
| Syntax: | secondary = { ip="ip", port=port } |
| Description: | The secondary parameter group defines the Internet Protocol (IP) address and associated port number of the secondary Voucher and Wallet Server. |
| Type: | Array. |
| Optionality: | Required, if this section is used. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | This parameter is part of the billingEngines parameter array. |
| Examples: |
|
broadcastOptions
| Syntax: |
|
| Description: | Name of configuration section for the BeClient Broadcast plug-in libclientBcast. |
| Type: | Parameter array. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: |
libclientBcast is used by a range of processes which connect to the beServer, including:
For more information about libclientBcast, see libclientBcast. |
| Example: |
|
aggregateNAckCodes
| Syntax: |
|
| Description: | When this parameter is set, the BeClient waits for a response from all the VWS pairs in use and filters the responses from the broadcast request using the configured NAck codes. |
| Type: | Parameter array. |
| Optionality: | Not Applicable. |
| Allowed: | NVOU |
| Default: | None. |
| Notes: | When a voucher recharge request is broadcast, this ensures that all the available VWS pairs are checked for the required voucher before a voucher not found message is returned to the requesting process. |
| Example: | Not Applicable. |
clientName
| Syntax: | clientName = "name" |
| Description: | The unique client name of the process. |
| Type: | String. |
| Optionality: | Required. |
| Allowed: | Must be unique. |
| Default: | The host name of the local machine. |
| Notes: |
The server generates clientId from a hash of str. If more than one client attempts to connect with the same name, then some connections will be lost. This parameter is used by libBeClientIF. |
| Example: | clientName = "scpClient" |
connectionRetryTime
| Syntax: | connectionRetryTime = seconds |
| Description: | The maximum number of seconds the client process will wait for a connection to succeed before attempting a new connection. |
| Type: | Integer. |
| Optionality: | Required. |
| Allowed: | Not Applicable. |
| Default: | 5 |
| Notes: | This parameter is used by libBeClientIF. |
| Example: | connectionRetryTime = 2 |
heartbeatPeriod
| Syntax: | heartbeatPeriod = microsecs |
| Description: | The number of microseconds during which a Voucher and Wallet Server heartbeat message must be detected, or the BeClient process will switch to the other VWS in the pair. |
| Type: | Integer. |
| Optionality: | Required. |
| Allowed: |
|
| Default: | 3000000. |
| Notes: |
1000000 microseconds = 1 second. If no heartbeat message is detected during the specified time, client process switches to the other Voucher and Wallet Server in the pair. This parameter is used by libBeClientIF. |
| Example: | heartbeatPeriod = 10000000 |
listenHost
| Syntax: | listenHost = "hostname" |
| Description: | The name of the host or the IP address on which ccsBeOrb will listen for incoming CORBA requests. An empty string implies all addresses. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | If listenHost is not set, then it defaults to the IP address corresponding to the result of the hostname UNIX command. If both an IP version 4 (IPv4) and an IP version 6 (IPv6) address exists for the hostname, then the IPv6 address will be used. |
| Notes: | Not Applicable. |
| Example: | listenHost = "" |
listenPort
| Syntax: | listenPort = port |
| Description: | The number of the port on which ccsBeOrb will listen for incoming CORBA requests. |
| Type: | Integer. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | 0 |
| Notes: | The default (listenPort = 0) sets a random port. |
| Example: | listenPort = 10024 |
maxOutstandingMessages
| Syntax: | maxOutstandingMessages = num |
| Description: | The maximum number of messages allowed to be waiting for a response from the Voucher and Wallet Server. |
| Type: | Integer |
| Optionality: | Required |
| Allowed: | Not Applicable. |
| Default: | If this parameter is not set, the maximum is unlimited. |
| Notes: |
If more than this number of messages are waiting for a response from the Voucher and Wallet Server, the client process assumes the Voucher and Wallet Server is overloaded. In this event, the client process refuses to start new calls but continues to service existing calls. The messages are queued until the Voucher and Wallet Server has reduced its outstanding load. This parameter is used by libBeClientIF. |
| Example: | maxOutstandingMessages = 100 |
mergeWalletsOptions
| Syntax: |
|
| Description: | Configuration for the beClientIF plug-in. |
| Type: | Parameter group |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
allowedSourceWalletStates
| Syntax: | allowedSourceWalletStates = "str[...]" |
| Description: | The states the source wallet must be in to allow it to be merged with another wallet. |
| Type: | String. |
| Optionality: | Required. |
| Allowed: |
|
| Default: | None. |
| Notes: | At least one state must be included, or all merged will be disallowed. |
| Example: | allowedSourceWalletStates = "PA" |
oracleLogin
| Syntax: | oracleLogin = "usr/pwd" |
| Description: | The login details the BeClient should use to log in to the SMF database, when performing merge wallet functions. |
| Type: | String. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | / |
| Notes: | Not Applicable. |
| Example: | oracleLogin = "smf/smf" |
mergeBucketExpiryPolicy
| Syntax: | mergeBucketExpiryPolicy = "str" |
| Description: | Determines what happens when the source wallet and destination wallet have buckets of the same balance type. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: |
merge: Update the bucket in the destination wallet. The updated bucket will have the:
move: Create a new bucket in the destination wallet. The new bucket will have the same balance type, value and expiry date as the bucket from the source wallet. |
| Default: | merge |
| Notes: | Not Applicable. |
| Example: | mergeBucketExpiryPolicy = "move" |
mergeWalletExpiryPolicy
| Syntax: | mergeWalletExpiryPolicy = "str" |
| Description: | Determines the way expiry dates for merged wallets are managed. |
| Type: | String. |
| Optionality: | Optional. |
| Allowed: |
|
| Default: | best |
| Notes: | Not Applicable. |
| Example: | mergeWalletExpiryPolicy = "best" |
mergeWalletsTriggers
| Syntax: |
|
| Description: | Wallets of this type starts the merge wallets plug-in. |
| Type: | Array of strings. |
| Optionality: | Required. |
| Allowed: | MGW. |
| Default: | None. |
| Notes: | The Syntax must be typed exactly as shown in the example. |
| Example: | mergeWalletsTriggers = ["MGW "] |
messageTimeoutSeconds
| Syntax: | messageTimeoutSeconds = seconds |
| Description: | The time that the client process will wait for the server to respond to a request. |
| Type: | Integer. |
| Units: | Seconds. |
| Optionality: | Required. |
| Allowed: |
|
| Default: | 2 |
| Notes: |
After the specified number of seconds, the client process will generate an exception and discard the message associated with the request. This parameter is used by libBeClientIF. |
| Example: | messageTimeoutSeconds = 2 |
namingServer
| Syntax: |
|
| Description: | Registers with smsNamingServer so that screens can find the ccsBeOrb service. |
| Type: | Parameter group. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
addHostPrefix
| Syntax: | addHostPrefix = true|false |
| Description: | Whether or not to add the hostname as a prefix to the BeClient name when connecting to the beServer. |
| Type: | Boolean. |
| Optionality: | Optional (default used if not set). |
| Allowed: |
|
| Default: | true. |
| Notes: | Must be set to true. |
| Example: | addHostPrefix = false |
host
| Syntax: | host = "hostName" |
| Description: | The hostname of the machine ccsBeOrb is running on. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | localhost |
| Notes: | The host parameter is part of the namingServer parameter group. |
| Example: | host = "produsms01" |
name
| Syntax: | name = "clientName" |
| Description: | The name of the client. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | ccsBeClientOrb |
| Notes: |
The name parameter is provided for backwards compatibility with old screens. The name parameter is part of the namingServer parameter group. |
| Example: | name = "ccsBeClientOrb" |
port
| Syntax: | port = portNumber |
| Description: | The number of the port on which the client listens. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 5556 |
| Notes: | Not Applicable. |
| Example: | port = 5556 |
notEndActions
| Syntax: |
|
| Description: | The notEndActions parameter array is used to define the messages associated with dialogs that should not have their dialog closes, because the dialog is closed by default. This facilitates failover. |
| Type: | Parameter array. |
| Optionality: | Required. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: |
If the incoming dialog for a call closes and the last response received was of the notEndActions type, the client process sends an ABRT message. The ABRT message allows the VWS to remove the reservation. An example of this situation would be where slee_acs has stopped working. This parameter is used by libBeClientIF. For more information about slee_acs, see ACS Technical Guide. |
| Example: |
|
plugins
| Syntax: |
|
| Description: | Defines any client process plug-ins to run. Also defines the string which maps to their configuration section. |
| Type: | Parameter array. |
| Optionality: | Optional (as plug-ins will not be loaded if they are not configured here, this parameter must include any plug-ins which are needed to supply application functions; for more information about which plug-ins to load, see the BeClient section for the application which provides the BeClient plug-ins). |
| Allowed: | Not Applicable. |
| Default: | Empty (that is, do not load any plug-ins). |
| Notes: |
The libclientBcast plug-in must be placed last in the plug-ins configuration list. For more information about the libclientBcast plug-in, see VWS Technical Guide. This parameter is used by libBeClientIF. |
| Example: |
|
config
| Syntax: | config="name" |
| Description: | The name of the configuration section for this plug-in. This corresponds to a configuration section within the plugins section in the eserv.config file. |
| Type: | String. |
| Optionality: | Required (must be present to load the plug-in). |
| Allowed: | Not Applicable. |
| Default: | No default |
| Notes: | Not Applicable. |
| Example: | config="voucherRechargeOptions" |
function
| Syntax: | function="str" |
| Description: | The function the plug-in should perform. |
| Type: | String. |
| Optionality: | Required (must be present to load the plug-in). |
| Allowed: | Not Applicable. |
| Default: | No default |
| Notes: | Not Applicable. |
| Example: | function="makeVoucherRechargePlugin" |
library
| Syntax: | library="lib" |
| Description: | The filename of the plug-in library. |
| Type: | String. |
| Optionality: | Required (must be present to load the plug-in). |
| Allowed: | Not Applicable. |
| Default: | No default |
| Notes: | Not Applicable. |
| Example: | library="libccsClientPlugins.so" |
reportPeriodSeconds
| Syntax: | reportPeriodSeconds = seconds |
| Description: | The number of seconds separating reports of failed messages. |
| Type: | Integer. |
| Units | Seconds. |
| Optionality: | Required. |
| Allowed: | Not Applicable. |
| Default: | 10 |
| Notes: |
BeClient issues a failed message report:
VWS heartbeat detection must be enabled for the parameter to work. Set reportPeriodSeconds to more than heartbeatPeriod. This parameter is used by libBeClientIF. |
| Example: | reportPeriodSeconds = 10 |
stateConversions
| Syntax: |
|
| Description: | Converts from ESCHER encoding to a single character and back. |
| Type: | Array |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
voucherRechargeOptions
| Syntax: |
|
| Description: | Configures the voucher recharge plug-in. |
| Type: | Array |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
sendBadPin
| Syntax: | sendBadPin = true|false |
| Description: | Whether or not to increment the Bad PIN count for a failed voucher redeem. |
| Type: | Boolean. |
| Optionality: | Optional. |
| Allowed: |
|
| Default: | false. |
| Notes: |
This parameter:
|
| Example: | sendBadPin = false |
srasActivatesPreuseAccount
| Syntax: | srasActivatesPreuseAccount = true|false |
| Description: | Sets whether or not alternate subscribers can activate subscriber accounts which are in a pre-use state. |
| Type: | Boolean. |
| Optionality: | Optional. |
| Allowed: |
|
| Default: | true |
| Notes: |
This parameter is:
|
| Example: | srasActivatesPreuseAccount = false |
voucherRechargeTriggers
| Syntax: |
|
| Description: | This message triggers the voucher recharge plug-in. |
| Type: | Array. |
| Optionality: | Required. |
| Allowed: | VRW. |
| Default: | None. |
| Notes: | This parameter array is part of the voucherRechargeOptions parameter group. |
| Example: | Not Applicable. |
voucherServerCacheLifetime
| Syntax: | voucherServerCacheLifetime = seconds |
| Description: | Time in seconds to hold items in the voucher server ID cache. |
| Type: | Integer. |
| Optionality: | Optional. |
| Allowed: | Any positive decimal integer. |
| Default: | 600 (seconds). |
| Notes: | Not Applicable. |
| Example: | voucherServerCacheLifetime = 600 |
voucherServerCacheCleanupInterval
| Syntax: | voucherServerCacheCleanupInterval = seconds |
| Description: | Time in seconds between purges of the voucher server id cache. |
| Type: | Integer. |
| Optionality: | Optional. |
| Allowed: | Any positive decimal integer. |
| Default: | 60 (seconds) |
| Notes: | Not Applicable. |
| Example: | voucherServerCacheCleanupInterval = 60 |
voucherTypeRechargeOptions
| Syntax: |
|
| Description: | Configures the voucher type recharge plug-in. |
| Type: | Parameter group. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
srasActivatesPreuseAccount
| Syntax: | srasActivatesPreuseAccount = true|false |
| Description: | Sets whether or not alternate subscribers can activate subscriber accounts which are in a pre-use state. |
| Type: | Boolean. |
| Optionality: | Optional. |
| Allowed: |
|
| Default: | true. |
| Notes: |
This parameter is:
|
| Example: | srasActivatesPreuseAccount = false |
voucherTypeRechargeTriggers
| Syntax: |
|
| Description: | Starts the voucher type recharge plug-in. |
| Type: | Array. |
| Optionality: | Required. |
| Allowed: | VRW. |
| Default: | None. |
| Notes: | This parameter array is part of the voucherTypeRechargeOptions parameter group. |
| Example: | voucherTypeRechargeTriggers = ["VTR "] |
voucherStateConversions
| Syntax: |
|
| Description: | Converts from ESCHER encoding to a single character and back. |
| Type: | Array. |
| Optionality: | Required. |
| Allowed: |
|
| Default: | None. |
| Notes: | Not Applicable. |
| Example: |
|
Voucher and Wallet Plug-Ins
There are four plug-ins which provide functionality for the PIbeClient:
-
Voucher recharge (VRW)
-
Voucher type recharge (VTR)
-
Merge wallets (MGW)
Note:
The broadcast plug-in configuration must be placed last in the plugins configuration section.Each plug-in can have a configuration section. The name of this subsection will match the string provided for the config parameter in the plugins subsection.
voucherRechargeOptions = {
...
}
Broadcast Plug-In
The Broadcast PIbeClient plug-in overrides the beLocationPlugin that would normally load connection details from the database.
{
config="",
library="libccsClientPlugins.so",
function="makeBroadcastPlugin"
}
Note:
-
This plug-in must be the last in the plugins subsection.
-
This plug-in has no configuration.
-
The broadcast plug-in is required by the VRW and VTR plug-ins.
Example eserv.config
Here is an example ccsBeOrb section of the CCS section of the eserv.config.
ccsBeOrb = {
listenHost = ""
listenPort = 10024
clientName = "usmsprod01-ccsBeOrb"
heartbeatPeriod = 10000000
maxOutstandingMessages = 100
connectionRetryTime = 2
requestTimeoutSeconds = 0
plugins = [
{ # Voucher recharge (VRW) plugin
config="voucherRechargeOptions",
library="libccsClientPlugins.so",
function="makeVoucherRechargePlugin"
}
{ # Voucher Type recharge (VTR) plugin
config="voucherTypeRechargeOptions",
library="libccsClientPlugins.so"
function"makeVoucherTypeRechargePlugin"
}
{ # Merge Wallets plugin
config="mergeWalletsOptions",
library="libccsClientPlugins.so",
function="makeMergeWalletsPlugin"
}
{ # Broadcast plugin needed by VRW
config="broadcastOptions",
library="libclientBcast.so",
function="makeBroadcastPlugin"
}
]
broadcastOptions = {
aggregateNAckCodes = [
"NVOU"
]
}
voucherRechargeOptions = {
srasActivatesPreuseAccount = false
voucherRechargeTriggers = [
"VRW "
]
voucherServerCacheLifetime = 600
voucherServerCacheCleanupInterval = 60
sendBadPin = false
}
voucherTypeRechargeOptions = {
srasActivatesPreuseAccount=false
voucherTypeRechargeTriggers = ["VTR "]
}
mergeWalletsOptions = {
oracleLogin = "/"
mergeBucketExpiryPolicy = "merge"
mergeWalletExpiryPolicy = "best"
allowedSourceWalletStates = "PADS"
mergeWalletsTriggers = ["MGW "]
}
notEndActions = [
{type="IR ", action="ACK "}
{type="SR ", action="ACK "}
{type="SR ", action="NACK"}
{type="INER", action="ACK "}
{type="SNER", action="ACK "}
{type="SNER", action="NACK"}
]
stateConversions = {
A = "ACTV",
P = "PREU",
D = "DORM"
F = "FROZ",
S = "SUSP",
T = "TERM"
}
voucherStateConversions = {
A = "ACTV",
F = "FRZN",
R = "RDMD"
C = "CRTD"
D = "DLTD"
H = "RSVD"
}
namingServer = {
host = "usmsprod01",
port = 5556,
name = "ccsBeClientOrb"
}
billingEngines = [
{ id = 1,
primary = { ip="190.0.2.0", port=1500 },
secondary = { ip="190.0.2.1", port=1500 }
}
]
}
ccsCB10HRNAES
The ccsCB10HRNAES library is available only if you have purchased the Voucher Management license. For more information about this library, see Voucher Manager Technical Guide.
ccsCB10HRNSHA
The ccsCB10HRNSHA library is available only if you have purchased the Voucher Management license. For more information about this library, see Voucher Manager Technical Guide.
ccsCDRFileGenerator
ccsCDRFileGenerator takes EDRs created through the CCS UI and writes them to a flat file equivalent. This file of EDRs is then get loaded into CCS_BE_CDR by ccsCDRLoader.
Startup - Nonclustered
This task is started by entry ccs7 in the inittab, through the /IN/service_packages/CCS/bin/ccsCDRFileGeneratorStartup.sh shell script.
Startup - Clustered
In a clustered environment this task is started automatically by the Sun Plex manager. The files required by the Sun Plex manager are located in the /opt/ESERVCcsCDRFileGenerator directory.
This is configured by the ccsCluster package, and will set up the use of the Sun Plex manager to start, stop, restart and move the failover processes to other nodes as required.
Parameters
The ccsCDRFileGenerator section includes the following parameters from the CCS section of eserv.config:
ccsCDRFileGenerator = {
OutputDirectory = "/IN/service_packages/CCS/logs/CDR"
BaseName = "ccsCDRFileGenerator"
OracleUsernamePassword = "smf/smf"
SleepDuration = 60
BillingEngineID = 0
SCPID = 0
}
The available parameters are:
BaseName
| Syntax: | BaseName = "name" |
| Description: | Base name of the output files |
| Type: | String |
| Optionality: | Mandatory |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
BillingEngineID
| Syntax: | BillingEngineID = id |
| Description: | Billing Engine ID. |
| Type: | Integer |
| Optionality: | Optional (default used if not set) |
| Allowed: | Not Applicable. |
| Default: | 0 |
| Notes: | This should not match any actually installed BEID. |
| Example: | Not Applicable. |
OracleUsernamePassword
| Syntax: | OracleUsernamePassword = "usr/pwd" |
| Description: | Username and password used to connect to SMF database. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | "/" |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
OutputDirectory
| Syntax: | OutputDirectory = "dir" |
| Description: | Directory name where ccsCDRFileGenerator will write output files. |
| Type: | String. |
| Optionality: | Mandatory. |
| Allowed: | Not Applicable. |
| Default: | None |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
SCPID
| Syntax: | SCPID = id |
| Description: | ID of the SLC. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 0 |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
SleepDuration
| Syntax: | SleepDuration = secs |
| Description: | The number of seconds ccsCDRFileGenerator will pause before generating a new file. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 60 |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
TempOutputDirectory
| Syntax: | TempOutputDirectory = "dir" |
| Description: | The directory where the temporary files will be generated. |
| Type: | String. |
| Optionality: | Mandatory. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
ccsCDRLoader
The EDR loader (ccsCDRLoader) process periodically scans its input directory for EDR files. To the information it finds in these files, the process adds extra information derived from its plug-in libraries. It then writes the lot to the CCS_BE_CDR table in the database.
Some customers want to retain event data records outside the Convergent Charging Controller system. The FileWriterCDRLoaderPlugin therefore rewrites each EDR so that it contains the same information as the database. Rewritten EDRs are placed in an output directory. See overview Diagram.
Reprocessing Failed EDRs
If a CDR loader plug-in fails to process a particular EDR, then the ccsCDRLoader process carries out the following actions:
- Save the EDR to a file for reprocessing. Any processing changes prior to the plug-in that failed are retained.
- Add a special FAILED_PLUGIN tag holding the name of the plug-in which failed to the EDR.
- Report the plug-in error in the log file.
When reprocessing EDRs, the ccsCdrLoader carries out the following actions:
- If it finds an EDR that contains the FAILED_PLUGIN tag, then it iterates through the plug-in list until it finds the plug-in held in the FAILED_PLUGIN tag.
- ccsCDRLoader then processes the EDR starting from the failed plug-in.
Note:
You configure the location and maximum size of files that contain the failed EDRs by setting the errDir and maxPluginFailFileSize parameters in eserv.config.Oracle Configuration
ccsCDRLoader requires an SMF entry in the Oracle file tnsnames.ora. The entry should be in the following format:
SMF =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = hostname) (PORT = 1521))
(CONNECT_DATA = (SID = SMF)))
Where
hostname is the host name of the SMS machine.
If required, this entry may be modified depending on the individual platform and connection requirements.
Note:
For more information about configuring tnsnames.ora, see Oracle Net8 Admin Guide.Startup - Nonclustered
In a non clustered installation the ccsCDRLoader is started by an entry in the inittab, through the /IN/service_packages/CCS/bin/ccsCDRLoaderStartup.sh shell script.
Multiple Loaders
To allow multiple instances of the CDRLoader to run in parallel, two environment variables can be specified in the startup script for each CDRLoader to override the eserv.config parameters, for example:
Script 1:
/IN/service_packages/CCS/.profile-sms
CCSCDRLOADER_INDIR=/IN/service_packages/CCS/tmp/CDR1/CDR-in
export CCSCDRLOADER_INDIR
CCSCDRLOADER_OUTDIR=/IN/service_packages/CCS/tmp/CDR1/CDR-store
export CCSCDRLOADER_OUTDIR
exec /IN/service_packages/CCS/bin/ccsCDRLoader
Script 2:
/IN/service_packages/CCS/.profile-sms
CCSCDRLOADER_INDIR=/IN/service_packages/CCS/tmp/CDR2/CDR-in
export CCSCDRLOADER_INDIR
CCSCDRLOADER_OUTDIR=/IN/service_packages/CCS/tmp/CDR2/CDR-store
export CCSCDRLOADER_OUTDIR
exec /IN/service_packages/CCS/bin/ccsCDRLoader
Note:
To define a TZ that the NOTICE messages by ccsCDRLoader are logged in, add DEBUG_TZ environment variable in the ccsCDRLoaderStartupStartup.sh script before the exec statement. For example: export DEBUG_TZ=Asia/Kolkata.Startup - Clustered
In a clustered environment the ccsCDRLoader is started automatically by the Sun Plex manager. The files required by the Sun Plex manager are located in the /opt/ESERVCcsCDRLoader directory.
This is configured by the ccsCluster package at installation, and will set up the use of the Sun Plex manager to start, stop, restart and move the failover processes to other nodes as required.
ccsCDRLoader Command Line Parameters
The ccsCDRLoader process supports the following optional command line parameters:
ccsCDRLoader [--input_tz timeZone] [--vwars_range vwars_num[-vwars_num]] [--serverID ID] [--inDir dir] [--outDir dir]Where:
- [--input_tz timeZone] specifies the time zone in which date fields
will be present in the incoming CDR/EDR.
Timezome specified should be a UNIX time zone name. Applicable TZ conversion will be from input_tz value to FileWriterCDRLoaderPlugin.cdrTimeZone (eserv.config).
Note:
- No timezone conversion will happen if input_tz is not specified.
- If input_tz and FileWriterCDRLoaderPlugin.cdrTimeZone (eserv.config) values are same, then no conversion will take place.
Example syntax: ccsCDRLoader --input_tz GMT
- --vwars_range vwars_num[-vwars_num] specifies the
beVWARS number or number range for which EDR files will be processed. You must
specify non-negative numbers for the vwars_num values.
The EDR filenames must include the string "beVWARS-" followed by a beVWARS number within the specified range. EDR files with filenames that do not include this string are skipped. In addition, EDRs that are generated by the ccsCDRFileGenerator process will be matched only if the ccsCDRFileGenerator output filename contains the "beVWARS-" string. You configure the ccsCDRFileGenerator output filename to include this string by setting its BaseName parameter.
Example syntax: ccsCDRLoader --vwars_range 0-2
- --serverID ID (string) specifies the unique server ID for the input
files that will be processed by this instance of ccsCDRLoader. ccsCDRLoader matches
the server ID against any part of the EDR input filename, and not just the hostname
of the server that generated the EDR file.
Example syntax: ccsCDRLoader --serverID vws01
- --inDir dir specifies the path and directory location of the input
files. This value overrides the input directory configured for ccsCDRLoader in the
eserv.config configuration file.
Example syntax: ccsCDRLoader --inDir /IN/service_packages/CCS/logs/CDR-in
- --outDir dir specifies the path and directory location of the output
files. This value overrides the output directory configured for ccsCDRLoader in the
eserv.config configuration file.
Example syntax: ccsCDRLoader --outDir /IN/service_packages/CCS/logs/CDR-store/vws-0-2
ccsCDRLoader Plug-In Libraries
The ccsCDRLoader can be extended by installing plug-in libraries. This section lists the ccsCDRLoader plug-in libraries that are available as a standard. Other plug-in libraries may also be installed as required.
The plug-ins are included in the pluginLibs array.
AcsCustIdPlugin
This plug-in library checks the EDR for the presence of the ACS_CUST_ID tag. If it is not present, the plug-in looks up ACS_CUST_ID in the ACS_ACCT table on the VWS, using the ACCT_ID tag from the EDR to identify the correct record in the table.
This function is contained within the libAcsCustIdPlugin.so library, and is used if this library is referenced within the pluginLibs array.
Note:
This plug-in library does not accept any parameters.AcctHistPlugin
This plug-in library updates the CCS_ACCT_HIST_INFO table with account details, such as expiry date, when processing relevant EDRs.
This function is contained within the libAcctHistPlugin.so library.
See AcctHistPlugin Parameters for configuration details.
CDRStoreDBPlugin
This plug-in library updates the CCS_BE_CDR table with EDR details.
This function is contained within the libCDRStoreDBPlugin.so.
Note:
This plug-in library does not accept any parameters.CreditCardDetailsPlugin
This plug-in library, for CC_Recharge EDRs (type 9), updates the CCS_CREDIT_CARD_DETAILS table with the last recharge date.
This function is contained within the libCreditCardDetailsPlugin.so library.
Note:
This plug-in library does not accept any parameters.FileWriterCDRLoaderPlugin
The plug-in has two functions:
- FileWriterCDRLoaderPlugin rewrites each EDR file with the same information that
CDRStoreDBPlugin writes to the database.
After the EDR loader process reads an EDR file, other EDR loader plug-in libraries may add extra information. All of this information is then written to the database. Some customers want to extract event data records from the Oracle system and retain them elsewhere. The FileWriterCDRLoaderPlugin therefore rewrites each EDR so that it contains the same information as the database. Rewritten EDRs are placed in an output directory.
- Optionally, FileWriterCDRLoaderPlugin converts time events recorded in the EDR
source files to the equivalent time in a configured time zone. It uses the converted
time events when it rewrites the EDRs.
The Oracle system manages all time events as if they occurred in the Coordinated Universal Time (UTC) zone. When an EDR file is rewritten, you can have FileWriterCDRLoaderPlugin use a different time zone. To do that you set up FileWriterCDRLoaderPlugin's cdrTimeZone configuration parameter. If cdrTimeZone is not configured or is configured incorrectly, time events will be written for the UTC time zone.
MsisdnCDRLoaderPlugin
This plug-in is optionally loaded based on the presence of the libMsisdnCDRLoaderPlugin.so in the pluginLibs configuration array.
The purpose of this plug-in is to look up the MSISDN (CLI) corresponding to the ACCT_REF_ID in the EDR tag. For type 3 (expiration) EDRs, if the ACCT_REF_ID is '0' then the ACCT_ID field will be used to look up the MSISDN instead.
MsisdnCDRLoaderPlugin is configured in the MsisdnCDRLoader section of eserv.config.
RechargeSMSPlugin
This plug-in library sends notifications to subscribers after a recharge, for the following EDR types:
- Recharge
- Freeform Recharge
- CC Recharge
- Voucher Freeform Recharge
This function is contained within the libRechargeSMSPlugin.so library.
See RechargeSMSPlugin Parameters for configuration details.
VoucherRedeemFailPlugin
This plug-in is optionally loaded based on the presence of the libVoucherRedeemFailPlugin.so in the pluginLibs configuration array.
The purpose of this plug-in is to trap and report on all non successful EDR type 15 records.
VoucherRedeemFailPlugin is configured in the VoucherRedeemFail section of eserv.config.
Part of the reporting is the inclusion of the MSISDN, which is only available when the libMsisdnCDRLoaderPlugin.so is loaded. To ensure this, eserv.config must have the libMsisdnCDRLoaderPlugin.so plug-in entry before this libVoucherRedeemFailPlugin.so plug-in entry on the pluginLibs array.
VoucherRedeemPlugin
This plug-in library, for recharge EDRs, updates the CCS_VOUCHER_REFERENCE table with the account reference id and redemption date.
This function is contained within the libVoucherRedeemPlugin.so library and is only required if the Voucher Management module is installed.
This plug-in library is configured in the voucherRedeemPlugin section of eserv.config.
CDR Loader Plug-in Parameters
The ccsCDRLoader process, and its plug-ins, are configured by the parameters in the ccsCDRLoader section of the eserv.config file.
CDR Loader Configuration Example
The following configuration shows example configuration for the ccsCDRLoader process in the eserv.config file.
ccsCDRLoader = {
inDir = "/IN/service_packages/CCS/logs/CDR-in"
inDirType = "HASH"
outDir = "/IN/service_packages/CCS/logs/CDR-store"
outDirType = "HASH"
outDirExpectedFiles = 65536
outDirBucketSize = 128
readAheadNumFiles = 25
cdrBufferSize = 4096
scanInterval = 1
statisticsInterval = 60
loadZeroLenthCalls = true
dbUserPass = "/"
suffixToIgnore = ".tmp"
commitInterval = 500
filePocessing = "DELETE"
maxPluginFailFileSize = 5000
errDir = "/IN/service_packages/CCS/logs/CDR-err"
pluginLibs = [
"libAcsCustIdPlugin.so"
"libVoucherRedeemPlugin.so"
"libAcctHistPlugin.so"
"libCreditCardDetailsPlugin.so"
"libCDRStoreDBPlugin.so"
"libFileWriterCDRLoaderPlugin.so"
"libResetWaitForRechargePlugin.so"
"libMsisdnCDRLoaderPlugin.so"
"libVoucherRedeemFailPlugin.so"
]
VoucherRedeemFail = {
tempReportDirectory = "/IN/service_packages/CCS/tmp"
archiveDirectory = "/IN/service_packages/CCS/logs/voucherRedeemFail"
maxEDRs = 2000
maxOpenDuration = 300
}
voucherRedeemPlugin = {
useVoucherRedeemCDR = true
additionalCdrTypes = [95,96]
}
AcctHistPlugin = {
prodTypeSwapEventClass = "Product Type"
prodTypeSwapEventName = "Product Type Swap"
reasonChangeConfig = "/IN/service_packages/CCS/etc/changeReason.conf"
acsCustomerIdData = [
{
acsCustomerId = 1
promoCascade = "NE Test Promo Cascade"
}
]
}
FileWriterCDRLoaderPlugin = {
cdrTimeZone = "EST"
ccsCDRFieldsTZ = [
"RECORD_DATE"
"TCS"
"TCE"
"ACTIVATION_DATE"
]
}
}
CDR Loader Parameters
The ccsCDRLoader process supports the following parameters in the ccsCDRLoader section of the eserv.config file:
cdrBufferSize
| Syntax: | cdrBufferSize = int |
| Description: | The size of the cache used by ccsCDRLoader and FileWriterCDRLoaderPlugin. |
| Type: | Integer. |
| Units: | Kilobyte. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | 2048 |
| Notes: |
If you set readAheadNumFiles to be greater than 0 (zero), then set cdrBufferSize to a value that is large enough to cache input files by using the following formula: cdrBufferSize = ((average_busy_period_input_file_size multiplied by readAheadNumFiles) plus buffer) For example; if the average input file is 180 kilobytes and readAheadNumFiles is set to 20, then cdrBufferSize should be set to 4096. (cdrBufferSize = ((180 * 20) + 500) = 4100K) |
| Example: | cdrBufferSize = 4096 |
commitInterval
| Syntax: | commitInterval = num |
| Description: | The number of EDRs to process before writing them to the database. |
| Type: | Integer |
| Optionality: | Optional |
| Allowed: | Not Applicable. |
| Default: | 200 |
| Notes: | Not Applicable. |
| Example: | commitInterval = 200 |
dbUserPass
| Syntax: | dbUserPass = "name/password" |
| Description: | Contains the user name and password required to log on to the database. |
| Type: | String. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | "/" |
| Notes: | Not Applicable. |
| Example: | dbUserPass = "/" |
errDir
| Syntax: | errDir = "dir" |
| Description: | The path for the directory where the files containing EDRs which have failed due to a plug-in problem will be moved. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | The directory path for an existing directory. |
| Default: | "/IN/service_packages/CCS/logs/CDR" |
| Notes: | Not Applicable. |
| Example: | errDir = "/IN/service_packages/CCS/logs/CDR-err" |
fileProcessing
| Syntax: | fileProcessing = "type" |
| Description: | Determines the file process. |
| Type: | String. |
| Optionality: | Optional. |
| Allowed: |
|
| Default: | "MOVE". |
| Notes: | The time conversion feature of FileWriterCDRLoaderPlugin is affected by the fileProcessing parameter. |
| Example: | fileProcessing = "DELETE" |
inDir
| Syntax: | inDir = "dir" |
| Description: | The directory from which EDRs are read. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | "/IN/service_packages/CCS/logs/CDR/in" |
| Notes: | Not Applicable. |
| Example: | inDir = "/IN/service_packages/CCS/logs/CDR-in" |
inDirType
| Syntax: | inDirType = "storeType" |
| Description: | Determines whether the input directory will be treated as a flat file store or a hash file store. |
| Type: | String. |
| Optionality: | Optional. |
| Allowed: |
|
| Default: | "FLAT". |
| Notes: | Can be set to HASH even if the directory is a flat file store, but not the other way around. |
| Example: | inDirType = "FLAT" |
loadZeroLengthCalls
| Syntax: | loadZeroLengthCalls = true|false |
| Description: | Defines whether zero-duration calls will be processed or skipped. |
| Type: | Boolean. |
| Optionality: | Optional. |
| Allowed: |
|
| Default: | true |
| Notes: | Not Applicable. |
| Example: | loadZeroLengthCalls = true |
maxPluginFailFileSize
| Syntax: | maxPluginFailFileSize = size |
| Description: | The maximum size in KBs for files containing EDRs that have failed to process due to a plug-in problem. When a file containing failed EDRs reaches the maximum size, it is zipped and archived. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | A numeric value. |
| Default: | 0 (zero). |
| Notes: | If the default is used then the file will not be archived. |
| Example: | maxPluginFailFileSize = 5000 |
pluginLibs
| Syntax: |
|
| Description: | List of plug-in libraries to load. |
| Type: | Parameter array. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: |
|
| Notes: | Not Applicable. |
| Example: |
|
outDir
| Syntax: | outDir = "dir" |
| Description: | The directory to which EDRs are moved after they have been processed. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | "/IN/service_packages/CCS/logs/CDR/out" |
| Notes: | Not Applicable. |
| Example: | outDir = "/IN/service_packages/CCS/logs/CDR-store" |
outDirBucketSize
| Syntax: | outDirBucketSize = filesPerLeaf |
| Description: | The number of files per leaf directory when the output directory contains the number of files specified by the outDirExpectedFiles parameter. |
| Type: | Integer. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | 10 |
| Notes: | This parameter is ignored if outDirType = "FLAT". |
| Example: | outDirBucketSize = 128 |
outDirExpectedFiles
| Syntax: | outDirExpectedFiles = numberOfFiles |
| Description: | The number of EDR files expected in the directory defined by the outDir parameter. |
| Type: | Integer. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | outDirExpectedFiles = 100000 |
| Notes: | If outDirType = "FLAT", this parameter is ignored. |
| Example: | outDirExpectedFiles = 65536 |
outDirType
| Syntax: | outDirType = "storeType" |
| Description: | Sets the structure of the output directory defined by the outDir parameter. |
| Type: | String. |
| Optionality: | Optional. |
| Allowed: | May be either FLAT or HASH. |
| Default: | "FLAT" |
| Notes: | Not Applicable. |
| Example: | outDirType = "FLAT" |
readAheadNumFiles
| Syntax: | readAheadNumFiles = int |
| Description: | Sets the maximum number of EDR input files to load into cache per scanInterval. When set to 0 (zero), the ccsCDRLoader queues all the EDR input files in the inDir directory for processing. The processed files are moved to the outDir directory only after ccsCDRLoader has finished loading all of them. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | 0 or a positive integer. |
| Default: | 0 |
| Notes: | When you set readAheadNumFiles to a value that is greater than zero, then the recommended value for the scanInterval parameter is 1 (one). This ensures timely processing of the input files. |
| Example: | readAheadNumFiles = 25 |
scanInterval
| Syntax: | scanInterval = secs |
| Description: | The number of seconds between scans of the directory specified in the inDir parameter. |
| Type: | Integer. |
| Units: | Seconds. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | 600 |
| Notes: |
|
| Example: | scanInterval = 1 |
statisticsInterval
| Syntax: | statisticsInterval = seconds |
| Description: | The number of seconds between statistical output. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | Defaults to the value set for the scanInterval parameter. |
| Notes: |
When set to:
|
| Example: | statisticsInterval = 60 |
suffixToIgnore
| Syntax: | suffixToIgnore = "suffix" |
| Description: | The suffix of files in the CDR in directory that should be ignored. |
| Type: | String. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | ".tmp" |
| Notes: | For CDR files larger than the internal buffer size, ensures ccsCDRLoader is prevented from processing temporary files until the whole source CDR file has been processed. |
| Example: | suffixToIgnore = ".tmp" |
voucherRedeemPlugin
| Syntax: |
|
| Description: | The configuration for VoucherRedeemPlugin plug-in. |
| Type: | Not Applicable. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: |
|
additionalCdrTypes
| Syntax: | additionalCdrTypes = [cdr_type] |
| Description: | Allows additional CDR types to be added to the REDEEMED_DATE column of the BE_VOUCHER table. |
| Type: | Array. |
| Optionality: | Optional. |
| Allowed: | A CDR type greater than 66 as per MAX value in ccsCDR.txt. |
| Default: | Empty. |
| Notes: | Not Applicable. |
| Example: | additionalCdrTypes = [95,96] |
useVoucherRedeemCDR
| Syntax: | useVoucherRedeemCDR = true|false |
| Description: | Indicates that the Voucher Redeem CDR should be used instead of the Recharge CDR. |
| Type: | Boolean. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | false. |
| Notes: | Needed for split billing environments. |
| Example: | voucherRedeemCDR = true |
VoucherRedeemFail
| Syntax: |
|
| Description: | Configuration for the VoucherRedeemFailPlugin plug-in. |
| Type: | Not Applicable. |
| Optionality: | Optional (defaults used if not present). |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
archiveDirectory
| Syntax: | archiveDirectory = "dir" |
| Description: | The location of the redeemed fail EDR file. |
| Type: | String. |
| Optionality: | Optional (Default: used if not set). |
| Allowed: | Not Applicable. |
| Default | "/IN/service_packages/CCS/logs/voucherRedeemFail" |
| Notes: | This directory and tempReportDirectory (on page 2) should be in the same file system otherwise archiving will fail. |
| Example: | archiveDirectory = "/IN/service_packages/CCS/logs/voucherRedeemFail" |
maxEDRs
| Syntax: | maxEDRs = num |
| Description: | The maximum number of EDR records in the file. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 2000 |
| Notes: | Not Applicable. |
| Example: | maxEDRs = 3000 |
maxOpenDuration
| Syntax: | maxOpenDuration = seconds |
| Description: | The maximum amount of time in seconds the report file will be kept open. |
| Type: | Integer |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 300 |
| Notes: | Not Applicable. |
| Example: | maxOpenDuration = 500 |
tempReportDirectory
| Syntax: | tempReportDirectory = "dir" |
| Description: | The directory where temporary report with failed voucher redeem records is stored. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | "/IN/service_packages/CCS/tmp" |
| Notes: | This directory and archiveDirectory should be in the same file system otherwise archiving will fail. |
| Example: | tempReportDirectory = "/IN/service_packages/CCS/tmp" |
AcctHistPlugin
| Syntax: |
|
| Description: | Configures the account history plug-in. |
| Type: | Parameter group. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: |
|
acsCustomerIdData
| Syntax: |
|
| Description: | Lists data specific to each ACS customer ID. |
| Type: | Parameter array. |
| Optionality: | Optional |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | This parameter array is part of the AcctHistPlugin parameter group. |
| Example: | Not Applicable. |
acsCustomerId
| Syntax: | acsCustomerId = identifier |
| Description: | The number identifying the customer to whom this set of balances applies. |
| Type: | Integer. |
| Optionality: | Mandatory. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | This parameter is part of the acsCustomerIdData parameter array. |
| Example: | acsCustomerId = 1 |
promoCascade
| Syntax: | promoCascade = "name" |
| Description: | The name of the promotional cascade that is saved in the CASCADE field of the EDR. |
| Type: | String. |
| Optionality: | Mandatory. |
| Allowed: | This value must match an entry name in the Balance Type Cascades list, see Charging Control Services User's Guide, Balance Type Cascades topic. |
| Default: | None. |
| Notes: | This parameter is part of the acsCustomerIdData parameter array. |
| Example: | promoCascade = "NE Test Promo Cascade" |
prodTypeSwapEventClass
| Syntax: | prodTypeSwapEventClass = "class" |
| Description: | The content of the EVENT_CLASS field of product type swap EDRs. |
| Type: | String. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | "Product Type" |
| Notes: | This parameter is part of the AcctHistPlugin parameter group. |
| Example: | prodTypeSwapEventClass = "Product Type" |
prodTypeSwapEventName
| Syntax: | prodTypeSwapEventName = "name" |
| Description: | The content of the EVENT_NAME field of product type swap EDRs. |
| Type: | String. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | "Product Type Swap" |
| Notes: | This parameter is part of the AcctHistPlugin parameter group. |
| Example: | prodTypeSwapEventName = "Product Type Swap" |
reasonChangeConfig
| Syntax: | reasonChangeConfig = "dir" |
| Description: | The path to, and name of, the reason change configuration file. |
| Type: | String. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: |
|
| Example: |
|
RechargeSMSPlugin
| Syntax: |
|
| Description: | Configuration for the recharge SMS plug-in. |
| Type: | Parameter group. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
smsFifoName
| Syntax: | smsFifoName = "dir" |
| Description: | The path to and the name of the FIFO file to which SMS requests are written. |
| Type: | String. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | "/tmp/ccsSSMRequest.fifo" |
| Notes: | This parameter is part of the RechargeSMSPlugin parameter array. |
| Example: | smsFifoName = "/tmp/ccsSSMRequest.fifo" |
smsQueueSize
| Syntax: | smsQueueSize = num |
| Description: | The maximum number of short messages to buffer. |
| Type: | Integer. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | 1000 |
| Notes: | This parameter is part of the RechargeSMSPlugin parameter array. |
| Example: | smsQueueSize = 1000 |
smsTTL
| Syntax: | smsTTL = seconds |
| Description: | The maximum time that messages will be buffered. |
| Type: | Integer. |
| Units: | Seconds. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | 600 |
| Notes: | This parameter is part of the RechargeSMSPlugin parameter array. |
| Example: | smsTTL = 600 |
FileWriterCDRLoaderPlugin
| Syntax: |
|
| Description: | Configuration for the file writer plug-in. |
| Type: | Parameter group. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
ccsCDRFieldsTZ
| Syntax: |
|
| Description: | The time event field in the EDR file that will be converted to the time zone defined by the cdrTimeZone parameter. |
| Type: | Array |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | This parameter is part of the FileWriterCDRLoaderPlugin parameter group. |
| Example: |
|
cdrTimeZone
| Syntax: | cdrTimeZone = "tz" |
| Description: | The time zone for time events written to EDR files. |
| Type: | String. |
| Optionality: | Mandatory. |
| Allowed: | A UNIX time zone name. |
| Default: | Not Applicable. |
| Notes: |
|
| Example: | cdrTimeZone = "Dubai" |
MsisdnCDRLoader
| Syntax: |
|
| Description: | Configuration for the msisdn plug-in. |
| Example: |
|
CopyCliToMsisdn
| Syntax: | CopyCliToMsisdn = true|false |
| Description: | Sets whether or not to copy the CLI value to the MSISDN tag when processing an EDR. |
| Type: | Boolean. |
| Optionality: | Optional (default used if not set). |
| Allowed: |
|
| Default: | false |
| Notes: | If set to true and copyCLiToMsisdnRegExp is also set, then the CLI will not be copied to the MSISDN if a match is found for the expression defined in the copyCliToMsisdnRegExp parameter. |
| Example: | CopyCliToMsisdn = true |
CopyCliToMsisdnRegExp
| Syntax: | CopyCliToMsisdnRegExp = "(\\|exp\\|)" |
| Description: | Defines the expression to match. When a match occurs the CopyCliToMsisdn parameter is ignored and the EDR processing does not copy the CLI value to the MSISDN tag. |
| Type: | String. |
| Optionality: | Optional. |
| Allowed: | A valid regular expression. Double \\ (escapes) are required. |
| Default: | Not Applicable. |
| Notes: | In the example below, the WIFI service will be matched for type 13 EDRs if the SERVICE tag appears in the middle or the end of the EDR. The CLI copy to MSISDN will not take place. |
| Example: | CopyCliToMsisdnRegExp = "(\\|<CRD_TYPE=13>\\||\\|SERVICE=WIFI$\\|SERVICE=WIFI\\|)" |
ccsCDRTrimDB
The ccsCDRTrimDB process trims excess EDR records from the database. The excess records can be defined by one of the following:
- Wallet or subscriber ID
- The size of the cached records
This process modifies the CCS_BE_CDR table in the SMF. It gets the wallet/subscriber ID information from CCS_ACCT_ID. Rows are ordered by ID and RECORD_DATE.
The ccsCDRTrimDB process is not a daemon. It needs to be run manually or by cron.
Startup
The ccsCDRTrimDB process is run in the crontab for ccs_oper. By default, it runs each night. It is scheduled by the /IN/service_packages/CCS/bin/ccsCDRTrimDBStartup.sh shell script.
Parameters
The ccsCDRTrimDB process supports the following command-line options.
-c
| Syntax: | -c int |
| Description: |
Sets the size of a buffer that will cache the records to be deleted. Records will be deleted when the:
|
| Type: | Integer |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 196 |
| Notes: | Not Applicable. |
| Example: | -c 64 |
-n
| Syntax: | -n int |
| Description: | The maximum number of EDRs a subscriber can have. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 196 |
| Notes: | Not Applicable. |
| Example: | -n 256 |
-h or --help
Displays the help text file.
ccsCDRTrimFiles
The ccsCDRTrimFiles process deletes EDR files that have reached a nominated maximum age.
The ccsCDRTrimFiles process is not a daemon; it needs to be run manually or by cron.
Startup
This task is run in the crontab for ccs_oper. By default it runs each night. It is scheduled by the /IN/service_packages/CCS/bin/ccsCDRTrimFilesStartup.sh shell script:
Parameters
The ccsCDRTrimFiles process supports the following command-line options.
-a
| Syntax: | -a age |
| Description: | Maximum age allowed in days. Files older than this value will be removed. |
| Type: | Not Applicable. |
| Optionality: | Optional (default used if not set). |
| Allowed | Not Applicable. |
| Default: | 1 |
| Notes: | Not Applicable. |
| Example: | -a 1 |
-d
| Syntax: | -d dir |
| Description: | Directory containing EDR files. |
| Type: | Not Applicable. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | /logs/CDR/indexed |
| Notes: | Not Applicable. |
| Example: | -d /logs/CDR/indexed |
-h or --help
Displays the help text file.
ccsChangeDaemon
ccsChangeDaemon updates assignment of periodic charges to wallets. On the SMS ccsChangeDaemon handles periodic charge changes when a subscriber:
- Is associated with a new wallet.
- Changes product type for a wallet.
The daemon receives its tasks by reading CCS_PC_QUEUE table, which is hosted on the SMS and is replicated to the VWS.
Note:
A ccsSLEEChangeDaemon also runs on the VWS. For more information, see ccsSLEEChangeDaemon.Startup
On startup, the daemon will check for the -r flag, if it does not find it, it will run in SMS mode.
On a nonclustered SMS environment this task is started automatically by an entry in the inittab, through the /IN/service_packages/CCS/bin/ccsChangeDaemonStartup.sh shell script.
On a clustered SMS, startup is controlled by a failover resource group.
Configuration
ccsChangeDaemon supports parameters from the ccsChangeDaemon parameter group in the eserv.config file on the SMS. It contains parameters arranged in the structure shown in the example below.
ccsChangeDaemon = {
PollPeriod = seconds
suppressCcsPcQueueMessage = true | false
throttle = int
batchSize = int
beClient = {
clientName = "name"
heartbeatPeriod = microsecs
connectionRetryTime = seconds
messageTimeoutSeconds = seconds
billingEngines = [
{ id = int,
primary = { ip="ip", port=port },
secondary = { ip="ip", port=port }
}
]
}
}
eserv.config Parameters
ccsChangeDaemon supports the following parameters from the CCS section of the eserv.config file on SMS.
pollPeriod
| Syntax: | pollPeriod = seconds |
| Description: | Period in seconds between database reads. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 60 |
| Notes: | The CCS_PC_QUEUE table lists all outstanding work for the ccsChangeDaemon. |
| Example: | pollPeriod = 60 |
ptsUnsubscribeFromPCsForNonApplyPCs
| Syntax: | ptsUnsubscribeFromPCsForNonApplyPCs = boolean |
| Description: | Controls if periodic charges (PCs) are unsubscribed when the account type is changed and the new account type is allowed the periodic charge, but it doesn't have Apply to existing set. When set to true (the default), and when the account type is changed for a wallet, all periodic charges for the service provider that are not marked as Apply to existing and allowed for the new product type will be unsubscribed from. |
| Type: | Boolean. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | true |
| Notes: | Not Applicable. |
| Example: | ptsUnsubscribeFromPCsForNonApplyPCs = true |
throttle
| Syntax: | throttle = num |
| Description: | The maximum number of Voucher and Wallet Server updates per second. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: |
|
| Default: | 1000 |
| Notes: | Not Applicable. |
| Example: | throttle = 1000 |
batchSize
| Syntax: | batchSize = num |
| Description: | The maximum number of CCS_PC_QUEUE records to be processed every polling period. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 100 |
| Notes: | Not Applicable. |
| Example: | batchSize = 200 |
beClient
| Syntax: | beClient = [{ config }] |
| Description: | The configuration for the connection to the beServer on the VWS. |
| Type: | Parameter array. |
| Optionality: | Mandatory. |
| Allowed: | Not Applicable. |
| Default: | Not Applicable. |
| Notes: |
This configuration is for the libBeClientIF library which ccsChangeDaemon uses to manage the connection. For more information about this library, see VWS Technical Guide. |
| Example: | Not Applicable. |
billingEngines
| Syntax: |
|
| Description: |
Overrides connection details that beLocationPlugin obtains from the database. For more information about the parameters included in the array, see billingEngines configuration for the ccsBeOrb process. |
| Type: | Array. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | Not Applicable. |
| Notes: |
Identifies the Voucher and Wallet Servers and assigns their Internet connection details. Include this section to ensure that ccsChangeDaemon only connects to the local domain. If omitted, ccsChangeDaemon will connect to all VWS domains. |
| Example: |
|
clientName
| Syntax: | clientName = "name" |
| Description: | The unique client name of the process. |
| Type: | String. |
| Optionality: | Mandatory. |
| Allowed: | Must be unique. |
| Default: | "ccsChangeDaemon" |
| Notes: | If more than one client connects with the same name the BE server will drop the other, therefore name must be unique. |
| Example: | clientName = "be1_ccsSLEEChangeDaemon" |
connectionRetryTime
| Syntax: | connectionRetryTime = seconds |
| Description: | The maximum number of seconds the client process will wait for a connection to succeed before attempting a new connection. |
| Type: | Integer. |
| Optionality: | Required. |
| Allowed: | Not Applicable. |
| Default: | 5 |
| Notes: | This parameter is used by libBeClientIF. |
| Example: | connectionRetryTime = 2 |
heartbeatPeriod
| Syntax: | heartbeatPeriod = microsecs |
| Description: | The number of microseconds during which a Voucher and Wallet Server heartbeat message must be detected, or the BeClient process will switch to the other VWS in the pair. |
| Type: | Integer. |
| Optionality: | Optional (Default used if not present). |
| Allowed: |
|
| Default: | 30000000 |
| Notes: | 1000000 microseconds = 1 second. |
| Example: | heartbeatPeriod = 30000000 |
messageTimeoutSeconds
| Syntax: | messageTimeoutSeconds = seconds |
| Description: | The time that the client process will wait for the server to respond to a request. |
| Type: | Integer. |
| Units | Seconds. |
| Optionality: | Required. |
| Allowed: |
|
| Default: | 2 |
| Notes: |
After the specified number of seconds, the client process will generate an exception and discard the message associated with the request. This parameter is used by libBeClientIF. |
| Example: | messageTimeoutSeconds = 2 |
BE eserv.config Parameters
The following parameters are available in the BE section of the eserv.config file.
amPrimary
| Syntax: | amPrimary = true|false |
| Description: | True if this is the primary VWS in the pair. |
| Type: | Boolean. |
| Optionality: | Optional, default used if not set. |
| Allowed: | Not Applicable. |
| Default: | true |
| Notes: | Not Applicable. |
| Example: | amPrimary = false |
beLocationPlugin
| Syntax: | beLocationPlugin = "lib" |
| Description: | The plug-in library that finds the Voucher and Wallet Server details of the Voucher and Wallet Servers to connect to. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | libGetccsBeLocation.so |
| Notes: | This library must be in the LD_LIBRARY_PATH. |
| Example: | beLocationPlugin = "libGetccsBeLocation.so" |
serverId
| Syntax: | serverId = id |
| Description: | The ID of the VWS pair. |
| Type: | Integer. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | 1 |
| Notes: | Set to 1 if this is not a VWS. |
| Example: | serverId = 11 |
Failure
While ccsChangeDaemon is down, periodic charge assignment updates will not be run on the local machine.
This table describes the recovery and failure files used by ccsChangeDaemon to attempt to recover after a failure.
| File | Details |
|---|---|
| .failed |
These files are written on both the SMS. They have the following naming convention:
An entry is written to this file for each wallet update which initially fails. They contain a line for each failure:
Each time ccsChangeDaemon adds an entry to this file, it will also raise an Error level alarm. ccsChangeDaemon reads the entries in this file and attempts to reprocess them. Once all the entries in the file have been reprocessed, the ccsChangeDaemon deletes them. |
| failed |
These files are written on the SMS. They have the following naming convention:
An entry is written to this file every time an entry in the .failed file is re-sent, and fails a second time. This file's first two lines are:
Then there is an entry for each wallet update which fails a second time:
Each time ccsChangeDaemon writes an entry to this file, it will raise an Error level alarm. Failure files are left for manual recovery. |
Note:
If an operation fails due to a "No Connection" error, ccsChangeDaemon will raise a LOGGED_WARNING and stop processing the row.Output
ccsChangeDaemon writes recovery and failure logs to /IN/service_packages/CCS/logs/ccsSLEEChangeDaemon/ccsPCChange/.
If one of these files cannot be written to, the ccsChangeDaemon will exit with a critical error (for alarm details, see CCS Alarms Reference Guide).
ccsChangeDaemon writes error messages to the system messages file, and writes additional output to /IN/service_packages/CCS/tmp/ccsChange.log.
ccsExpiryMessageLoader
Sends short messages to subscribers to warn them that their wallet or balance will expire shortly. The list of subscribers is generated by ccsExpiryMessageGenerator on the VWSs and transferred to the SMS.
Startup
This task is run in the crontab for ccs_oper. By default, it runs at 9 am each morning. It is scheduled directly through /IN/service_packages/CCS/bin/ccsExpiryMessageLoader.
Example
ExpiryMessages = {
walletExpiryPeriod = 15
numberOfWalletWarnings = 3
balanceExpiryPeriod = 10
numberOfBalanceWarnings = 3
balanceTypes = [ 1, 2 ]
onlyForLatestBucketExpiry = false
oracleUsername = ""
oraclePassword = ""
generatorFilename = "ccsExpiryMessages"
generatorFiledir = "/IN/service_packages/CCS/logs/expiryMessageWrite/"
inputDirectory = "/IN/service_packages/CCS/logs/expiryMessageRead/"
cmnPushFiles = [
"-d", "/IN/service_packages/CCS/logs/expiryMessage/"
"-r", "/IN/service_packages/CCS/logs/expiryMessage/"
"-h", "SMF_HOST"
"-p", "2027"
"-F"
]
pauseTime = 1
batchSize = 2048
}
Note:
This section is also used by ccsExpiryMessageGenerator.Parameters
The ccsExpiryMessageLoader supports the following parameters from the CCS section of eserv.config.
balanceExpiryPeriod
| Syntax: | balanceExpiryPeriod = days |
| Description: |
Number of days before a Balance expires. Before the Balance expires, three expiry warning messages are sent, each at different times. The first message is sent balanceExpiryPeriod days before the wallet expires. The second and third messages are sent at two-thirds and one-third of balanceExpiryPeriod, respectively. |
| Type: | Not Applicable. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | 10 |
| Notes: | This parameter is optional. If it is omitted, no messages will be sent. |
| Example: | balanceExpiryPeriod = 10 |
balanceTypes = [ ]
| Syntax: | balanceTypes = [num] |
| Description: |
Specifies the balance types that should have expiry warning messages. When a new ACS customer is added, any balance types requiring expiry notifications should be added here. |
| Type: | Array |
| Optionality: | Optional |
| Allowed: | Not Applicable. |
| Default: | No messages are sent. |
| Notes: | Balance types are not split up for different ACS customers even though balance type identifiers belong to ACS customers. |
| Example: | balanceTypes = [ 1, 2 ] |
batchSize
| Syntax: | batchSize = num |
| Description: | The number of lines read from a file before a pause. |
| Type: | Not Applicable. |
| Optionality: | Optional |
| Allowed: | Not Applicable. |
| Default: | 2048 |
| Notes: |
If it is not used:
|
| Example: | batchSize = 2048 |
cmnPushFiles = [ ]
For the eserv.config on the VWS, use the cmnPushFiles configuration to transfer files to the SMS. There they will be ready for processing by ccsExpiryMessageLoader. Include the -F option to detect the file in use. See cmnPushFiles for all parameters.
Note:
These directories must match those set by the generatorFiledir parameter.generatorFiledir
| Syntax: | generatorFiledir = "dir" |
| Description: | Directory for newly created expiry message files. |
| Type: | String. |
| Optionality: | Optional (Default used if not specified). |
| Allowed: | Not Applicable. |
| Default: | "/IN/service_packages/CCS/logs/expiryMessage/" |
| Notes: | This value required on both SMS and VWS machines. This value may be different on the two machines as long as cmnPushFiles has been configured to send and receive the appropriate directories. |
| Example: | generatorFiledir = "/IN/service_packages/CCS/logs/expiryMessageWrite/" |
generatorFilename
| Syntax: | generatorFilename = "filename" |
| Description: | Prefix for the file read by ccsExpiryMessageLoader. |
| Type: | Not Applicable. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | "ccsExpiryMessages" |
| Notes: | This parameter must be the same as that for the VWSs as the ccsExpiryMessageGenerator writes to this directory. |
| Example: | generatorFilename = "ccsExpiryMessages" |
inputDirectory
| Syntax: | inputDirectory = "dir" |
| Description: | Directory for newly created expiry message files. |
| Type: | String. |
| Optionality: | Optional (Default used if not specified). |
| Allowed: | Not Applicable. |
| Default: | "/IN/service_packages/CCS/logs/expiryMessage/" |
| Notes: | This value required on both SMS and VWS machines. This value may be different on the two machines as long as cmnPushFiles has been configured to send and receive the appropriate directories. |
| Example: | inputDirectory = "/IN/service_packages/CCS/logs/expiryMessageRead/" |
numberOfBalanceWarnings
| Syntax: | numberOfBalanceWarnings = num |
| Description: | The number of pending balance expiry messages to be sent. The messages will be equally spaced during the period set by the walletExpiryPeriod parameter. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | 1,2, 3 |
| Default: | 3 |
| Notes: | Not Applicable. |
| Example: | numberOfBalanceWarnings = 3 |
numberOfWalletWarnings
| Syntax: | numberOfWalletWarnings = num |
| Description: | The number of pending wallet expiry messages to be sent. The messages will be equally spaced during the period set by the walletExpiryPeriod parameter. |
| Type: | Integer |
| Optionality: | Optional (default used if not set). |
| Allowed: | 1, 2, 3 |
| Default: | 3 |
| Notes: | Not Applicable. |
| Example: | numberOfWalletWarnings = 3 |
onlyForLatestBucketExpiry
| Syntax: | onlyForLatestBucketExpiry = true|false |
| Description: | Whether to send expiry messages for all buckets that are going to expire or just the last bucket to expire. |
| Type: | Boolean. |
| Optionality: | Optional (default used if not set). |
| Allowed: |
|
| Default: | false. |
| Notes: | Does not include buckets with no expiry date. |
| Example: | onlyForLatestBucketExpiry = true |
oraclePassword
| Syntax: | oraclePassword = "password" |
| Description: | Oracle password. |
| Type: | Not Applicable. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | "" |
| Notes: | Required on VWS. |
| Example: | Not Applicable. |
oracleUsername
| Syntax: | oracleUsername = "name" |
| Description: | Oracle user name. |
| Type: | Not Applicable. |
| Optionality: | Mandatory |
| Allowed: | Not Applicable. |
| Default: | "" |
| Notes: | Required on VWS. |
| Example: | Not Applicable. |
pauseTime
| Syntax: | pauseTime = time |
| Description: | The time separating the loading of individual files. |
| Type: | Not Applicable. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | 1 |
| Notes: | Optionally, if batchSize is also set, pauseTime defines the time between batches from an individual file. |
| Example: | pauseTime = 1 |
walletExpiryPeriod
| Syntax: | walletExpiryPeriod = days |
| Description: |
Number of days before the wallet expires. Before the wallet expires, three expiry warning messages are sent, each at different times. The first message is sent walletExpiryPeriod days before the wallet expires. The second and third messages are sent at two-thirds and one-third of walletExpiryPeriod, respectively. |
| Type: | Not Applicable. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | 15 |
| Note: | This parameter is optional. If it is omitted, no messages will be sent. |
| Example: | walletExpiryPeriod = 15 |
ccsExternalProcedureDaemon
ccsExternalProcedureDaemon is used to call CB10 C code from within a database trigger when adding a new ACS customer.
Startup - Nonclustered
In a nonclustered environment this task is started automatically by entry cc11 in the inittab, by the /IN/service_packages/CCS/bin/ccsExternalProcedureDaemon.sh shell script.
Startup - Clustered
In a clustered environment this task is started automatically by the Sun Plex manager and runs on one half of the cluster. It uses the CcsExternalProcedureDaemon failover resource to fail over to other nodes as required. The files required by the Sun Plex manager are located in the /opt/ESERVCcsExternalProcedureDaemon directory.
Location
The binary for the ccsExternalProcedureDaemon process is located at /IN/service_packages/CCS/bin/ccsExternalProcedureDaemon on the SMS.
Configuration
The ccsExternalProcedureDaemon does not require any specific configuration and it does not support any command line parameters.
ccsLegacyPIN
ccsLegacyPIN plug-in library is used by ccsAccount, see About ccsAccount for more details and the ccsVoucher_CCS3 voucher tool to encrypt the PINs using the DES authentication rule. For more information about authentication rules, see Security libraries. ccsLegacyPIN library is not available for new voucher batches.
Note:
The ccs3Encryption plug-in is a symbolic link to the ccsLegacyPIN plug-in, but in the ccs3Encryption mode it uses different parameters.ccsPeriodicCCRecharge
Run periodic credit card recharges on the SMS.
- Periodic credit card recharges are stored in the CCS_CC_RECHARGE_PENDING table in the SMF db.
- Can remove rows from the pending queue if the rows are:
- No longer pending
- Past configurable age limit
Startup
This task is run in the crontab for ccs_oper. By default it runs on the second day of each month. It is scheduled directly through /IN/service_packages/CCS/bin/ccsPeriodicCCRecharge.
Example
ccsPeriodicCCRecharge = {
numRowsPerCommit = 100
oracleUserAndPassword = "/"
purgeOldEntriesAge = 0
purgePendingRows = false
}
Parameters
ccsPeriodicCCRecharge supports the following parameters from the CCS.ccsPeriodicCCRecharge section of eserv.config.
numRowsPerCommit
| Syntax: | numRowsPerCommit = num |
| Description: | Number of rows to insert before commit. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 100 |
| Notes: | Not Applicable. |
| Example: | numRowsPerCommit = 500 |
oracleUserAndPassword
| Syntax: | oracleUserAndPassword = "usr/pwd" |
| Description: | Overrides userid and password for the Oracle SMF database connection set in oracleUserAndPassword. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | "/" |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
purgeOldEntriesAge
| Syntax: | purgeOldEntriesAge = days |
| Description: | Number of days before a row will be removed from CCS_CC_RECHARGE_PENDING. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 0 (off) |
| Notes: | Entries with both pending and verified states will be removed. |
| Example: | purgeOldEntriesAge = 14 |
purgePendingRows
| Syntax: | purgePendingRows = true|false |
| Description: | Whether or not to purge rows that are pending recharge from the CCS_CC_RECHARGE_PENDING table in SMF. |
| Type: | Boolean. |
| Optionality: | Optional (default used if not set). |
| Allowed: |
|
| Default: | false |
| Notes: | Only effective when purgeOldEntriesAge has a value greater than 0. |
| Example: | purgePendingRows = true |
ccsPeriodicCharge
ccsPeriodicCharge applies periodic charges defined for wallets. The following types of periodic charge are supported:
- Credit
- Debit
- Voucher type recharge
ccsPeriodicCharge sends notifications to the subscriber informing them whether or not the charge was successful.
Note:
This process only applies to periodic charges which were configured in CCS 3.1.4 or earlier.Startup
ccsPeriodicCharge runs in either a solo mode or a parent and children mode.
The ccsPeriodicCharge solo process is run in the crontab for ccs_oper. By default it runs on an hourly basis. ccsPeriodicCharge is started automatically with the ccsPeriodicCharge command.
If the Daemon field is set to 2 or more in any product type, ccsPeriodicCharge will operate as a parent process, and will start a ccsPeriodicCharge child process for each id in the Daemon fields. The ccsPeriodicCharge parent process will remain active until all child processes have completed.
Note:
If the service takes over an hour to run, it will examine all wallets and scheduling to ensure that the charges for the next hour are applied.For more information about how product types assign periodic charges to ccsPeriodicCharge daemons, see "Subscriber Management - Product Types", in Charging Control Services User's Guide.
Configuration - eserv.config
ccsPeriodicCharge is also configured by the ccsPeriodicCharge section of the eserv.config file. The structure of the ccsPeriodicCharge section is shown below.
ccsPeriodicCharge = {
BatchSize = size
OracleUserAndPassword = "usr/pwd"
LockFile = "dir"
profileTagCacheValidityPeriod = int
BeQueueSize = int
beLocationPlugin = "lib"
oracleUserPass = "usr/pwd"
clientName = "name"
heartbeatPeriod = microsecs
messageTimeoutSeconds = seconds
maxOutstandingMessages = int
reportPeriodSeconds = seconds
connectionRetryTime = seconds
plugins = [
{
config="confStr",
library="lib",
function="str"
}
[...]
]
confStr = {
plugin configuration
}
notEndActions = [
{type="str", action="[ACK |NACK]"}
[...]
]
plugins configuration - see plugin-specific config
}
eserv.config Parameters
ccsPeriodicCharge supports the following parameters from the ccsPeriodicCharge section of eserv.config.
BeQueueSize
| Syntax: | BeQueueSize = num |
| Description:: | The maximum number of VWS charging requests waiting for a response. If this limit is reached, no requests are sent until the number of outstanding requests drops below this number. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 500 |
| Notes: | Not Applicable. |
| Example: | BeQueueSize = 250 |
clientName
| Syntax: | clientName = "name" |
| Description:: | The client name for the process. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | ccsPeriodicCharge |
| Notes: |
The server generates clientId from a hash of name. This parameter is used by libBeClientIF. However, ccsAccount uses a different default. |
| Example: | clientName = "ccsPeriodicCharge" |
connectionRetryTime
| Syntax: | connectionRetryTime = seconds |
| Description: | The maximum number of seconds the client process will wait for a connection to succeed before attempting a new connection. |
| Type: | Integer. |
| Optionality: | Required. |
| Allowed: | Not Applicable. |
| Default: | 5 |
| Notes: | This parameter is used by libBeClientIF. |
| Example: | connectionRetryTime = 2 |
heartbeatPeriod
| Syntax: | heartbeatPeriod = microsecs |
| Description: | The number of microseconds during which a Voucher and Wallet Server heartbeat message must be detected, or the BeClient process will switch to the other VWS in the pair. |
| Type: | Integer. |
| Optionality: | Required. |
| Allowed: |
|
| Default: | 3000000 |
| Notes: |
1000000 microseconds = 1 second. If no heartbeat message is detected during the specified time, client process switches to the other Voucher and Wallet Server in the pair. This parameter is used by libBeClientIF. |
| Example: | heartbeatPeriod = 10000000 |
LockFile
| Syntax: | LockFile = "dir" |
| Description: | The location of the lock file used to prevent multiple instances of the ccsPeriodicCharge process. |
| Type: | String |
| Optionality: | Optional (default used if not set) |
| Allowed: | Not Applicable. |
| Default: | "/IN/service_packages/CCS/logs/.ccsPeriodicCharge" |
| Notes: | If ccsPeriodicCharge is running in parent and child mode, only the parent process will use the lock file. |
| Example: | LockFile = "/IN/service_packages/CCS/logs/.ccsPeriodicCharge" |
maxOutstandingMessages
| Syntax: | maxOutstandingMessages = num |
| Description: | The maximum number of messages allowed to be waiting for a response from the Voucher and Wallet Server. |
| Type: | Integer. |
| Optionality: | Required. |
| Allowed: | Not Applicable. |
| Default: | If this parameter is not set, the maximum is unlimited. |
| Notes: |
If more than this number of messages are waiting for a response from the Voucher and Wallet Server, the client process assumes the Voucher and Wallet Server is overloaded. In this event, the client process refuses to start new calls but continues to service existing calls. The messages are queued until the Voucher and Wallet Server has reduced its outstanding load. This parameter is used by libBeClientIF. |
| Example: | maxOutstandingMessages = 100 |
messageTimeoutSeconds
| Syntax: | messageTimeoutSeconds = seconds |
| Description: | The time that the client process will wait for the server to respond to a request. |
| Type: | Integer. |
| Units | Seconds. |
| Optionality: | Required. |
| Allowed: |
|
| Default: | 2 |
| Notes: |
After the specified number of seconds, the client process will generate an exception and discard the message associated with the request. This parameter is used by libBeClientIF. |
| Example: | messageTimeoutSeconds = 2 |
notEndActions
| Syntax: |
|
| Description: | The notEndActions parameter array is used to define the messages associated with dialogs that should not have their dialog closes, because the dialog is closed by default. This facilitates failover. |
| Type: | Parameter array. |
| Optionality: | Required. |
| Allowed: | Not Applicable. |
| Default: | Not Applicable. |
| Notes: |
If the incoming dialog for a call closes and the last response received was of the notEndActions type, the client process sends an ABRT message. The ABRT message allows the VWS to remove the reservation. An example of this situation would be where slee_acs has stopped working. This parameter is used by libBeClientIF. For more information about slee_acs, see ACS Technical Guide. |
| Example: |
|
OracleUserAndPassword
| Syntax: | oracleUserAndPassword = "usr/pwd" |
| Description: | The user and password combination ccsPeriodicCharge should use to log into the SMF database. |
| Type: | String. |
| Optionality: | Optional. |
| Allowed: | Not Applicable. |
| Default: | "/" |
| Notes: | Overrides CCS.oracleUserAndPassword. For more information about this parameter, see oracleUserAndPassword. |
| Example: | oracleUserAndPassword = "/" |
plugins
| Syntax: |
|
| Description: | Defines any client process plug-ins to run. Also defines the string which maps to their configuration section. |
| Type: | Parameter array. |
| Optionality: | Mandatory. |
| Allowed: | Not Applicable. |
| Default: | Not Applicable. |
| Notes: |
The voucherTypeRechargeOptions (VTR) plug-in needs the libclientBcast plug-in to function properly. It must be placed last in the plugins configuration list. For more information about the libclientBcast plug-in, see VWS Technical Guide. |
| Example: |
|
config
| Syntax: | config="name" |
| Description: | The name of the configuration section for this plug-in. This corresponds to a configuration section within the plugins section in the eserv.config file. |
| Type: | String. |
| Optionality: | Required (must be present to load the plug-in). |
| Allowed: | Not Applicable. |
| Default: | No default |
| Notes: | Not Applicable. |
| Example: | config="voucherRechargeOptions" |
function
| Syntax: | function="str" |
| Description: | The function the plug-in should perform. |
| Type: | String. |
| Optionality: | Required (must be present to load the plug-in). |
| Allowed: | Not Applicable. |
| Default: | No default |
| Notes: | Not Applicable. |
| Example: | function="makeVoucherRechargePlugin" |
library
| Syntax: | library="lib" |
| Description: | The filename of the plug-in library. |
| Type: | String. |
| Optionality: | Required (must be present to load the plug-in). |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | library="libccsClientPlugins.so" |
profileTagCacheValidityPeriod
| Syntax: | profileTagCacheValidityPeriod = seconds |
| Description: | Timeout value in seconds for the profile tag cache. |
| Type: | Integer. |
| Optionality: | Optional. |
| Allowed: | Any positive decimal integer. |
| Default: | 600 |
| Notes: | Not Applicable. |
| Example: | profileTagCacheValidityPeriod = 800 |
reportPeriodSeconds
| Syntax: | reportPeriodSeconds = seconds |
| Description: | The number of seconds separating reports of failed messages. |
| Type: | Integer. |
| Units | Seconds. |
| Optionality: | Required. |
| Allowed: | Not Applicable. |
| Default: | 10 |
| Notes: |
BeClient issues a failed message report:
VWS heartbeat detection must be enabled for the parameter to work. Set reportPeriodSeconds to more than heartbeatPeriod. This parameter is used by libBeClientIF. |
| Example: | reportPeriodSeconds = 10 |
Command Line Parameters
ccsPeriodicCharge supports the following command line parameters.
ccsPeriodicCharge [-d] [-l log]Note:
These parameters can be set in a cronjob entry or startup script, or be set directly at the command line.-d
| Syntax: | -d |
| Description: | Display the configuration of ccsPeriodicCharge at start up. |
| Type: | Boolean. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | Do not display configuration at startup. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
-l
| Syntax: | -l log |
| Description: | The name of the file to log this child ccsPeriodicCharge daemon's debug output to. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: |
-l ccsPeriodicChargeDebug.log This configuration will produce a log called ccsPeriodicChargeDebug2.log for a ccsPeriodicCharge daemon with an ID of 2. |
Example
This text shows an example ccsPeriodicCharge eserv.config section.
ccsPeriodicCharge = {
OracleUserAndPassword = "/"
LockFile = "/IN/service_packages/CCS/logs/.ccsPeriodicCharge"
clientName = "ccsPeriodicCharge"
profileTagCacheValidityPeriod = 600
BeQueueSize = 500
plugins = [
{
# Voucher Type recharge plugin (VTR)
config="voucherTypeRechargeOptions",
library="libccsClientPlugins.so",
function="makeVoucherTypeRechargePlugin"
}
{
# Broadcast plugin needed by VTR
config="",
library="libclientBcast.so",
function="makeBroadcastPlugin"
}
]
voucherTypeRechargeOptions = {
srasActivatesPreuseAccount=false
voucherTypeRechargeTriggers = ["VTR "]
}
}
ccsProfileDaemon
ccsProfileDaemon performs the following:
- Processes profile change events
- Creates requests
- Sends requests to a third party ASP or customer care management platform
Profile change events are generated through changes to the subscriber's profile (ccs_acct_reference.PROFILE). For example, a profile change event is generated when a subscriber adds a new 'Friends and Family' number or subscribes to a voice mail service.
Startup - Nonclustered
In a nonclustered environment, ccsProfileDaemon is started automatically by entry ccs8 in the inittab, through the /IN/service_packages/CCS/bin/ccsProfileDaemonStartup.sh shell script.
When CCS is installed, the startup inittab entry is added by the install process.
Disabling - ccsProfileDaemon
ccsProfileDaemon performs database cleanup of tables altered by subscriber profile creations and changes.
If you disable the ccsProfileDaemon task in your environment, you must also disable related triggers in your database to prevent your database from malfunctioning due to uncontrolled growth.
To disable the triggers used by ccsProfileDaemon in your database:
- Log on the USMS node as the ccs_oper user.
- Connect to the database as ccs_admin using SQLPlus.
- Run the following SQL
statements:
SQL> alter trigger CCS_ACCT_REFERENCE_BUOPFER disable; SQL> alter trigger CCS_ACCT_REFERENCE_BIFER disable; - Exit SQLPlus.
Example config Section
ccsProfileDaemon = {
PollInterval = 500
LockFileName = "IN/service_packages/CCS/logs/.ccsProfileDaemon-lock"
DisableConcurrencyLock = false
AuditDirectory = "/IN/service_packages/CCS/logs/ccsProfileDaemon-logs"
AuditFields = [1310806, 2829001, 2812014, 1310730]
AuditFileName = "ccsProfileDaemon"
AuditType = "IGNORE"
CdrConcatenation = true
MaxAgeSeconds = 60
MaxSizeEntries = 100
NotificationCacheAgeSeconds = 60
AdditionalSpFields = [ ]
PeriodicChargeTagCacheAge = 600
SpFieldCacheAge = 600
DateTimeFormat = "YYYY-MM-DDThh:mm:ss"
allowLegacyServerConnect= true
allowBugWorkArounds = true
triggering = {
DefaultOverrides = {
CCSNamespace = "http://customer-smp/wsdls/ON/some.wsdl"
Username = "username"
Password = "password"
OperationName = "NotificationRequest"
ArbitraryParameters = "possible"
}
Operations = [
{
name = "CCSNotification"
type = "OSD"
overrides = {
CCSNamespace = "http://eng-prf-zone01-z1/wsdls/ON/CCSNotifications.wsdl"
Username = ""
Password = ""
OperationName = "NotificationRequest"
}
}
]
scps = [ "cmxdevscp1:3072", "cmxdevscp2:3072" ]
osd_scps = [ "cmxdevscp1:3072", "cmxdevscp2:3072" ]
}
}
eserv.config Parameters
ccsProfileDaemon supports the following parameters from the ccsProfileDaemon section of eserv.config.
AdditionalSpFields
| Syntax: | AdditionalSpFields = [tagval1,tagval2,,,,tagvalN] |
| Description: | Allows additional profile tags to be added to the ccs_sp_field table array of integers. |
| Type: | Decimal integer for tagval x values. |
| Optionality: | Optional. |
| Allowed: | Any valid profile tag location values in decimal format. |
| Default: | Empty. |
| Notes: | Not Applicable. |
| Example: | AdditionalSpFields = [100,120,140] |
allowBugWorkArounds
| Syntax: | allowBugWorkArounds = true | false |
| Description: | Whether or not ccsProfileDaemon supports bug workarounds to cope with faulty SSL implementations on the ASP. |
| Type: | Boolean. |
| Optionality: | Optional (default used if not set). |
| Allowed: |
true – Bug workarounds are supported. false – Bug workarounds are not supported. |
| Default: | false |
| Notes: | Set this parameter to true only if it is required for ccsProfileDaemon to make successful SSL connections to an ASP. |
| Example: | allowBugWorkArounds = true |
allowLegacyServerConnect
| Syntax: | allowLegacyServerConnect = true | false |
| Description: | Whether or not ccsProfileDaemon allows connections to legacy servers that do not support secure renegotiation. |
| Type: | Boolean. |
| Optionality: | Optional (default used if not set). |
| Allowed: |
true – Allows connections to legacy servers that do not support secure renegotiation. false – Prohibits connections to legacy servers that do not support secure renegotiation. |
| Default: | false |
| Notes: | Set this parameter to true only if it is required for ccsProfileDaemon to make successful SSL connections to an ASP. |
| Example: | allowLegacyServerConnect = true |
AuditDirectory
| Syntax: | AuditDirectory = "dir" |
| Description: | Directory where we will write the audit logs. |
| Type: | String. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | "IN/service_packages/CCS/logs/ccsProfileDaemon-logs" |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
AuditFields
| Syntax: | AuditFields = [profile tag ID, ...] |
| Description: |
An array of comma-separated profile tag IDs that identify subscriber profile fields that have changed and are being audited. Only values listed in the array will be audited. The produced EDR has the following format:
Where the format of CHANGED _TAGS is:
Example EDR:
See CdrConcatenation for additional information. |
| Type: | Array of integers. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Aray of integers. |
| Default: | AuditFields = [ ] (disabled) |
| Notes: | Only the profile tag name will be present for data that cannot be directly printed in an EDR, for example Prefix Tree content. You can view all EDR content through the subscriber screens. |
| Example: | AuditFields = [1310806, 2829001, 2812014] |
AuditFileName
| Syntax: | AuditFileName = "name" |
| Description: | Base file name for the audit log – start and end times will be appended. |
| Type: | String. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | "ccsProfileDaemon" |
| Notes: | Not Applicable. |
| Example: | AuditFileName = "ccsProfileDaemon" |
AuditType
| Syntax: | AuditType = "type" |
| Description: | Type of auditing. |
| Type: | String. |
| Optionality: | Not Applicable. |
| Allowed: |
|
| Default: | "IGNORE" |
| Notes: | Not Applicable. |
| Example: | AuditType = "IGNORE" |
CdrConcatenation
| Syntax: | CdrConcatenation = true | false |
| Description: | Specifies whether multiple changes to a profile should be concatenated into the same EDR. See Table 3-* for additional information. |
| Type: | Boolean. |
| Optionality: | Optional (default used if not set). |
| Allowed: | true, false |
| Default: | false |
| Notes: | Not Applicable. |
| Example: | CdrConcatenation = false |
DateTimeFormat
| Syntax: | DateTimeFormat = "dateformat" |
| Description: | Indicates the format for date and time variables that are sent in a DAP notification. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: |
Only the following formats are accepted:
|
| Default: | YYYYMMDDhhmmss |
| Notes: | Not Applicable. |
| Example: | DateTimeFormat = "YYYY-MM-DDThh:mm:ss" |
DisableConcurrencyLock
| Syntax: | DisableConcurrencyLock = true|false |
| Description: | Whether to disable concurrency locking. |
| Type: | Not Applicable. |
| Optionality: | Not Applicable. |
| Allowed: | true, false |
| Default: | false |
| Notes: | Not Applicable. |
| Example: | DisableConcurrencyLock = false |
LockFileName
| Syntax: | LockFileName = "file" |
| Description: | The lock file name to determine if we have multiple profile daemon processes running on the same SMS node. |
| Type: | String. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | "IN/service_packages/CCS/logs/.ccsProfileDaemon-lock" |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
MaxAgeSeconds
| Syntax: | MaxAgeSeconds = seconds |
| Description: | Maximum age, in seconds, after which all audit entries will be written to disk. |
| Type: | Integer. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | 60 |
| Notes: | Not Applicable. |
| Example: | MaxAgeSeconds = 60 |
MaxSizeEntries
| Syntax: | MaxSizeEntries = size |
| Description: | Maximum size (number) after which all audit entries will be written to disk. |
| Type: | Integer. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | 100 |
| Notes: | Not Applicable. |
| Example: | MaxSizeEntries = 100 |
NotificationCacheAgeSeconds
| Syntax: | NotificationCacheAgeSeconds = seconds |
| Description: | Maximum age, in seconds, before the notification definitions cache will be reread from the database. |
| Type: | Integer. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | 60 |
| Notes: | Not Applicable. |
| Example: | NotificationCacheAgeSeconds = 60 |
PeriodicChargeTagCacheAge
| Syntax: | PeriodicChargeTagCacheAge = seconds |
| Description: | Timeout value, in seconds, for data in the periodic charge tag cache. |
| Type: | Integer. |
| Optionality: | Optional. |
| Allowed: | Any positive decimal integer value. |
| Default: | 600 (seconds) |
| Notes: | Not Applicable. |
| Example: | PeriodicChargeTagCacheAge = 600 |
PollInterval
| Syntax: | PollInterval = milliseconds |
| Description: | How long, in milliseconds, that we should sleep before processing profile change events. |
| Type: | Integer. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | 500 |
| Notes: | Not Applicable. |
| Example: | PollInterval = 500 |
SpFieldCacheAge
| Syntax: | SpFieldCacheAge = seconds |
| Description: | Timeout value in seconds for data in the SpField tag cache. |
| Type: | Decimal integer. |
| Optionality: | Optional. |
| Allowed: | Any positive decimal integer. |
| Default: | 600 |
| Notes: | Not Applicable. |
| Example: | SpFieldCacheAge = 600 |
triggering
| Syntax: | triggering = {parameter_list} |
| Description: | The configuration of the individual XmlTcap or OSD operations that can be recieved. |
| Type: | List. |
| Optionality: | Mandatory. |
| Allowed: | Not Applicable. |
| Default: |
For operations that are not configured, these Operations > overrides defaults are applied:
|
| Notes: | Not Applicable. |
DefaultOverrides
| Syntax: | DefaultOverrides = {global_parameter_list} |
| Description: | The list of global default parameter values for each of the overrides parameters in the individual trigger Operations configured. |
| Type: | List. |
| Optionality: | Mandatory. |
| Allowed: |
Must be all of these:
|
| Default: | Not Applicable. |
| Notes: | These parameters are inserted into the Operations > overrides section when the parameter is omitted from the overrides list. |
| Example: |
|
ArbitaryParameters
| Syntax: | ArbitraryParameters = "value" |
| Description: | Not Applicable. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | None |
| Notes: | Not Applicable. |
| Example: | ArbitraryParameters = "possible" |
CCSNamespace
| Syntax: | CCSNamespace = "namespace" |
| Description: | The name space used for the WSDL request. |
| Type: | String. |
| Optionality: | Mandatory. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | CCSNamespace = "http://customer-smp/wsdls/ON/some.wsdl" |
OperationName
| Syntax: | OperationName = "name" |
| Description: | The name of the OSD request. |
| Type: | String. |
| Optionality: | Mandatory. |
| Allowed: | Not Applicable. |
| Default: | Not Applicable. |
| Notes: | Not Applicable. |
| Example: | OperationName = "NotificationRequest" |
Password
| Syntax: | Password = "password" |
| Description: | The HTTP password to use. |
| Type: | String. |
| Optionality: | Mandatory. |
| Allowed: | Not Applicable. |
| Default: | Not Applicable. |
| Notes: | Not Applicable. |
| Example: | Password = "password" |
Username
| Syntax: | Username = "name" |
| Description: | The HTTP user name to use. |
| Type: | String. |
| Optionality: | Mandatory. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Username = "username" |
Operations
| Syntax: | Operations = [op1],[op2] |
| Description: | Maps of individual operations for the trigger. |
| Type: | Array |
| Optionality: | Mandatory. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: |
|
name
| Syntax: | name = "operation_name" |
| Description: | The name of the operation as received from the VWARS. |
| Type: | String |
| Optionality: | Mandatory |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | name = "CCSNotification" |
overrides
| Syntax: | overrides = {override_list} |
| Description: | Set of override parameters for this operation that are added to/override the values received from the beVWARS. |
| Type: | List. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | The values that are defined by DefaultOverrides for any missing parameter. |
| Notes: |
If all of an operation's overrides parameters values are the same as the DefaultOverrides, it is not necessary to specify this parameter. For OSD, it is expected to set:
For XmlTcap, it is expected to set:
|
| Example: |
|
type
| Syntax: | type = "protocol" |
| Description: | The protocol for the operation. |
| Type: | String. |
| Optionality: | Mandatory. |
| Allowed: |
|
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | type = "OSD" |
scps
| Syntax: | scps = [SLC1,SLC2] |
| Description: |
An array of xmlTcapInterface SLCs, in the format: HOSTNAME:PORT |
| Type: | Array. |
| Optionality: | PORT is optional (default used if not set). |
| Allowed: | A list of existing SLC host names and ports. |
| Default: | 3072 |
| Notes: | Not Applicable. |
| Example: | scps = [ "cmxdevscp1:3072", "cmxdevscp2:3072" ] |
osd_scps
| Syntax: | osd_scps = [SLC1,SLC2>] |
| Description: |
An array of OSD SLCs, in the format: HOSTNAME:PORT |
| Type: | Array. |
| Optionality: | PORT is optional (default used if not set). |
| Allowed: | A list of existing SLC host names and ports. |
| Default: | 3072 |
| Notes: | Not Applicable. |
| Example: | osd_scps = [ "cmxdevscp1:3072", "cmxdevscp2:3072" ] |
osd_scps_custid
| Syntax: |
|
| Description: |
An array of combinations of OSD SLCs and service provider in the following format: host = HOSTNAME:PORT serviceProvider = ACS customer ID in the database. If osd_scps_custid is configured, then beServiceTrigger will use the configured SLC and service-provider to match the acs-customer from the plugin request and send request to proper SCP. |
| Type: | Array |
| Optionality: | Optional, If there is no osd_scps_custid section, then osd_scps section will be used. |
| Allowed: | A list of existing SLC host names and ports along with service provider. |
| Default: | Not Applicable. |
| Notes: | To process old events, at-least one entry is mandatory in the above configuration without service provider and that host will be used to process old events. |
| Example: |
|
Command Line Parameters
The ccsProfileDaemon accepts the following command line parameters.
Usage:
ccsProfileDaemon [-i | --node_id node_id] [-n | --number number]Example:
ccsProfileDaemon -i 2 -n 2-i or --node_id
| Syntax: | -i | --node_id node_id |
| Description: | The SMS node id that this ccsProfileDaemon instance is running on. |
| Type: | Integer. |
| Optionality: | Not Applicable. |
| Allowed: | Cannot be greater than the number of nodes specified and must be greater than 0. |
| Default: | 1 |
| Notes: | This value will be used in conjunction with the number of nodes specified to limit the range of subscriber’s that are processed by a specific ccsProfileDaemon. |
| Example: | -i 2 |
-n or --number
| Syntax: |
-n int --number int |
| Description: | The number of ccsProfileDaemon instances running across all SMS nodes. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Must be greater than ‘0’. |
| Default: | 1 |
| Notes: | This value will be used in conjunction with the node id specified to limit the range of subscriber’s that are processed by a specific ccsProfileDaemon. |
| Examples: |
-n 2 --number 2 |
ccsReports
The ccsReports section specifies the parameters for CCS SMS reports.
Note:
Reports use CCS.oracleUserAndPassword as the Oracle login.Example
Here is an example of the ccsReports section in the eserv.config file.
ccsReports = {
accountLogDir = ""
accountPrefixName = ""
cdrDir = ""
cdrPrefix = ""
voucherLogDir = ""
voucherPrefixName = "pre"
VoucherStatus = {
outputDirectory = "/IN/service_packages/SMS/output/Ccs_Service/Summary/VoucherStatus"
archiveDirectory = "/IN/service_packages/SMS/output/Ccs_Service/Summary/VoucherStatus/archive"
archiveAfterDays = 10
deleteAfterDays = 60
}
}
Parameters
ccsReports accepts the following parameters.
accountLogDir
| Syntax: | accountLogDir = "dir" |
| Description: | The account log directory. |
| Type: | String. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
accountPrefixName
| Syntax: | accountPrefixName = "name" |
| Description: | The account prefix name. |
| Type: | String. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
cdrDir
| Syntax: | cdrDir = "dir" |
| Description: | The EDR directory. |
| Type: | String. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
cdrPrefix
| Syntax: | cdrPrefix = "pre" |
| Description: | The EDR prefix. |
| Type: | String. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Not Applicable. |
| Example: | Not Applicable. |
voucherLogDir
| Syntax: | voucherLogDir = "dir" |
| Description: | The voucher log directory. |
| Type: | String. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None |
| Notes: | Not Applicable. |
| Example: | voucherLogDir = "/var/logs/voucher" |
voucherPrefixName
| Syntax: | voucherPrefixName = "pre" |
| Description: | The voucher prefix name. |
| Type: | String. |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None |
| Notes: | Not Applicable. |
| Example: | voucherPrefixName = "voucher_" |
VoucherStatus
| Syntax: |
|
| Description: | Configuration for voucher status reports. |
| Type: | Parameter group |
| Optionality: | Not Applicable. |
| Allowed: | Not Applicable. |
| Default: | None. |
| Notes: | Additional configuration for the Voucher Status Report is available in the voucherStatusReport.env file. For more information about this file, see Voucher Status Report Configuration. |
| Example: | Not Applicable. |
archiveAfterDays
| Syntax: | archiveAfterDays = days |
| Description: | How old reports should be before being archived? |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 10 |
| Notes: | Not Applicable. |
| Example: | archiveAfterDays = 10 |
archiveDirectory
| Syntax: | archiveDirectory = "dir" |
| Description: | Where archived reports are moved to. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | "/IN/service_packages/SMS/output/Ccs_Service/Summary/VoucherStatus/archive" |
| Notes: | Not Applicable. |
| Example: | archiveDirectory = "/IN/service_packages/SMS/output/Ccs_Service/Summary/VoucherStatus/archive" |
deleteAfterDays
| Syntax: | deleteAfterDays = days |
| Description: | How many days old reports can be before they are removed by the system. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 60 |
| Notes: | Not Applicable. |
| Example: | deleteAfterDays = 60 |
outputDirectory
| Syntax: | outputDirectory = "dir" |
| Description: | The location of the voucher status reports. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | "/IN/service_packages/SMS/output/Ccs_Service/Summary/VoucherStatus" |
| Notes: | Not Applicable. |
| Example: | outputDirectory = "/IN/service_packages/SMS/output/Ccs_Service/Summary/VoucherStatus" |
ccsWalletExpiry
ccsWalletExpiry processes CCS updates to the SMF database from the VWSs. There are two types of update:
- Expiry requests cause wallets to be set to Terminated in the SMF database.
- Removal requests cause wallets to be removed from the SMF database.
If ccsWalletExpiry removes all the wallets associated with a subscriber account and will also remove the subscriber account.
Startup
This task is run in the crontab for ccs_oper. By default, it runs every 10 minutes. It is scheduled directly through /IN/service_packages/CCS/bin/ccsWalletExpiry.
Example
An example of a configuration for the ccsWalletExpiry process and cssVWARSExpiry plug-in follows.
ccsVWARSExpiry = {
expiredPrefix = "expiredWallet"
expiredDirectory = "/IN/service_packages/CCS/logs/wallet"
removedDirectory = "/IN/service_packages/CCS/logs/wallet"
removedPrefix = "removedWallet"
expiredMsisdnPath="/IN/service_packages/CCS/logs/MSISDNExpiry"
expiredMsisdnPrefix="MSISDNExpiry"
expiredMsisdnMaxAge = 120
cmnPushFiles = [
"-d", "/IN/service_packages/CCS/logs/wallet"
"-r", "/IN/service_packages/CCS/logs/wallet"
"-h", "produsms01"
"-p", "2027"
"-F"
]
}
Note:
This configuration section is also used by ccsVWARSExpiry on the VWS.Parameters
ccsWalletExpiry supports the following parameters from the CCS section of eserv.config.
cmnPushFiles = [ ]
| Syntax: | cmnPushFiles = [] |
| Description: | For the eserv.config on the VWS, use the cmnPushFiles configuration to transfer files to the SMS ready for processing by ccsExpiryMessageLoader. |
| Type: | Parameter array. |
| Optionality: | Mandatory. |
| Allowed: | Not Applicable. |
| Default: | Not Applicable. |
| Notes: |
Include the -F option to detect the file in use. See cmnPushFiles for all parameters. These directories must match the respective directories set in generatorFiledir. |
| Example: | Not Applicable. |
expiredDirectory
| Syntax: | expiredDirectory = "dir" |
| Description: | Defines the location of files listing wallets moving to terminated state. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | "/IN/service_packages/CCS/logs/wallet" |
| Notes: | The file is generated by ccsVWARSExpiry on the VWS and read by ccsWalletExpiry on the SMS. |
| Example: | expiredDirectory = "/var/CCS/expiredWallets" |
expiredMsisdnMaxAge
| Syntax: | expiredMsisdnMaxAge = seconds |
| Description: | The maximum age of export file in seconds. |
| Type: | Integer. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | 120 |
| Notes: | Not Applicable. |
| Example: | expiredMsisdnMaxAge = 180 |
expiredMsisdnPath
| Syntax: | expiredMsisdnPath = "dir" |
| Description: | Location for the output file on the SMS for sending to the HLR. The output file is written by the ccsWalletExpiry (cronjob). |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | "/IN/service_packages/CCS/tmp" |
| Notes: | Not Applicable. |
| Example: | expiredMsisdnPath = "/var/CCS/expiredMsisdns" |
expiredMsisdnPrefix
| Syntax: | expiredMsisdnPrefix = "pre" |
| Description: | Prefix of output file. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | "MSISDNExpiry" |
| Notes: | The filename format is: expiredMsisdnPrefixYYYYMMDDHHMMSS.export. |
| Example: | expiredMsisdnPrefix = "prodube01_msisdnsExp" |
expiredPrefix
| Syntax: | expiredPrefix = "prefix" |
| Description: | The prefix of files listing wallets moving to terminated state. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | "expiredWallet" |
| Notes: |
The file is generated by ccsVWARSExpiry on the VWS and read by ccsWalletExpiry on the SMS. The filename format is: expiredPrefix_YYYYMMDDHHMMSSexpiredSuffix |
| Example: | expiredPrefix = "prodube01_termWallets" |
removedDirectory
| Syntax: | removedDirectory = "dir" |
| Description: | Defines the location of files listing wallets being removed. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | Not Applicable. |
| Default: | "/IN/service_packages/CCS/logs/wallet" |
| Notes: | The file is generated by ccsVWARSExpiry on the VWS and read by ccsWalletExpiry on the SMS. |
| Example: | removedDirectory = "/var/CCS/removedWallets" |
removedPrefix
| Syntax: | removedPrefix = "prefix" |
| Description: | The prefix of files listing wallets being removed from the system. |
| Type: | String. |
| Optionality: | Optional (default used if not set). |
| Allowed: | |
| Default: | "removedWallet" |
| Notes: |
The file is generated by ccsVWARSExpiry on the VWS and read by ccsWalletExpiry on the SMS. Whether ccsVWARSExpiry or ccsWalletExpiry removes the wallet depends on logNotRemoveWallet. The filename format is: removedPrefix_YYYYMMDDHHMMSSremovedSuffix |
| Example: | removedPrefix = "prodube01_removeWallets" |
libccsCommon
libccsCommon provides common functions to various CCS processes.
VoucherRedeemFail Files
The VoucherRedeemFail files are used as an aid to fraud detection by providing a list of all redeem failures for post processing by a third party.
All type 15 ("Voucher Redeem") EDRs with a result of anything other than "success" cause a record to be written to the current fail file.
Before being added to, each fail file is archived when the maxEDRs number has been reached, or the file has been open longer than the maxOpenDuration time and there is at least one record in the file
Record Format
The pipe separated file format is follows:
VoucherNumber|MSISDN|RedemptionDate|FailureReasonThe field are taken from the type 15 EDR record as follows:
| Field | EDR Tag |
|---|---|
| VoucherNumber | VOUCHER_NUMBER. |
| MSISDN | MSISDN when MSISDN plug-in is active, otherwise REDEEMING_ACCT_REF. |
| RedemptionDate | RECORD_DATE. |
| FailureReason | RESULT. |
Note:
If any information is not available, the corresponding column will be left blank.