4 Configuring the eserv.config

This chapter explains how to configure the ACS section of the eserv.config.

eserv.config Configuration

The eserv.config file is a shared configuration file, from which many Oracle Communications Convergent Charging Controller applications read their configuration. Each Convergent Charging Controller machine (SMS, SLC, and VWS) has its own version of this configuration file, containing configuration relevant to that machine. The eserv.config file contains different sections; each application reads the sections of the file that contains data relevant to it.

The eserv.config file is located in the /IN/service_packages/ directory.

The eserv.config file format uses hierarchical groupings, and most applications make use of this to divide the options into logical groupings.

Configuration File Format

To organize the configuration data within the eserv.config file, some sections are nested within other sections. Configuration details are opened and closed using either { } or [ ].

  • Groups of parameters are enclosed with curly brackets – { }
  • An array of parameters is enclosed in square brackets – [ ]
  • Comments are prefaced with a # at the beginning of the line

To list things within a group or an array, elements must be separated by at least one comma or at least one line break. Any of the following formats can be used, as in this example:

{ name="route6", id = 3, prefixes = [ "00000148","0000473"] }
{ name="route7", id = 4, prefixes = [ "000001049" ] }
or
{ name="route6"
            id = 3
            prefixes = [ 
                "00000148"
                "0000473" 
] 
}
{ name="route7"
    id = 4
    prefixes = [ 
        "000001049" 
    ] 
}
or
{ name="route6"
            id = 3
            prefixes = [ "00000148", "0000473" ]
      
}
{ name="route7", id = 4
    prefixes = [ "000001049" ] 
}

Editing the File

Open the configuration file on your system using a standard text editor. Do not use text editors, such as Microsoft Word, that attach control characters. These can be, for example, Microsoft DOS or Windows line termination characters (for example, ^M), which are not visible to the user, at the end of each row. This causes file errors when the application tries to read the configuration file.

Always keep a backup of your file before making any changes to it. This ensures you have a working copy to which you can return.

eserv.config Files Delivered

Most applications come with an example eserv.config configuration in a file called eserv.config.example in the root of the application directory, for example, /IN/service_packages/eserv.config.example.

ACS Configuration in the eserve.config File

ACS Section in eserv.config

The ACS section is part of the eserv.config file. See Example ACS configuration in eserv.config for a detailed example of the parameters.

Reread the configuration by sending a SIGHUP to slee_acs.

Here is the high-level structure of the section.

ACS = {
             countryCodes = [codes]

             macroNodes = {
                 macronodes_parameters
}

tracing = {
    tracing_parameters
}
 
acsChassisActions = {
    acsChassisActions_parameters
}
 
SessionTimeInformation = {
    SessionTimeInformation_parameters
}
ServiceEntries = [
       {
            ServiceEntries_parameters 
       } 
  ]
  
  acsTriggerIF = { 
     acsTriggerIF_parameters
  }
 
  AdditionalCheckMOLIPrefix = {
      checkMOLIPrefixes_parameters 
  }

  FCI = {
      FCI_parameters
  }

  NP = {
       NP_parameters
  }
}
countrycodes
Syntax: countryCodes = [codes]
Description: The list of country codes supported for location number normalization.
Type: Array
Optionality: Optional (default used if not set)
Allowed: International country codes
Default:
Notes: This is used when roaming to determine the location of the caller and add country code to called number if appropriate.
Example: countryCodes = [
  • "61" # Australia
  • "64" # New Zealand
  • "65" # Singapore
  • "44" # United Kingdom
  • "1" # USA/Canada

macroNodes Configuration

The macroNodes configuration in the ACSsection of the eserv.config supports configuration of ACS feature nodes.

Here is an example of the macroNodes section.

macroNodes = {
    ATPD = {
        ReleaseInApplyCharging = true
    }
}
ReleaseInApplyCharging
Syntax: ReleaseInApplyCharging = true|false
Description: Used in ATPD (Attempt Terminate to Pending TN with Duration) feature nodes to send a TCAP Disconnect(2) operation instead of a TCAP Release operation.
Type: Boolean
Optionality: Optional (default used if not set)
Allowed: true, false
Default: true
Notes:
Example: ReleaseInApplyCharging = false

Tracing Configuration

The ACS configuration supports the following tracing parameters.
tracing = {
            enabled = true
            origAddress = [
                "0064212",
                "0064213",
                "0064214"
]
destAddress = [
    "0064213",
    "0064214"
]
traceDebugLevel = "all"
}

enabled

Syntax: enabled = true|false
Description: Enables the tracing functionality.
Type: Boolean
Optionality: Optional, default used if not set.
Allowed: true, false
Default: false
Notes: Turning on tracing may dramatically increase system load. Only turn on in a production system if you have specified very limited tracing.
Example: enabled = true

origAddress

Syntax: origAddress = ["address1","address2",...,"addressN"]
Description: A list of Originating Addresses to trace.
Type: Array of number strings
Optionality: Optional
Allowed: The full originating address number.
Default: None
Notes: This may be an empty array list [], however to trace anything there must be at least one address in either the origAddress or destAddress parameters.
Example: origAddress = ["0064212","0064213","0064214"]

destAddress

Syntax: destAddress = ["address1","address2",...,"addressN"]
Description: A list of Destination Addresses to trace.
Type: Array of number strings
Optionality: Optional
Allowed: The full destination address number.
Default: None
Notes: This may be an empty array list [], however to trace anything there must be at least one address in either the origAddress or destAddress parameters.
Example: destAddress = ["0064213","0064214"]

traceDebugLevel

Syntax: traceDebugLevel = "flag1[,flag2,...]"
Description: Identifies the debug level for the addresses being traced.
Type: String
Optionality: Required (if enabled=true)
Allowed:

Any valid flag.

A useful method of finding which flags are relevant to the tracing you want to do is to:

Run your call on a model environment with DEBUG=all

Result: Debug will report all relevant sections.

  • Check through the debug and identify which sections to report or suppress.
  • Change the debug settings.
  • Rerun the call.
Default: "all,-COMMON_escher_detail,-COMMON_escher_dump,-slee_api,-cmnTimeout,-cmnCacheDetail,-Config,-beVWARS_detail,-beSyncDetail"
Notes:

traceDebugLevel = flag turns only flag on.

traceDebugLevel=all,-flag,-flag2 turns all debug on, and then turns flag and flag2 off.

Any section can be removed from the trace by preceding with a minus sign.

The output columns are also configurable, and can be turned off.

By default the columns are:

date file line pid section message

Columns in output are:

* display:name the program name registered with cmnErrorSetProgram(), off by default

* display:date the date in YYYY/MM/DD HH:MM:SS format

* display:file the source filename

* display:line the source line number

* display:pid the process ID

* display:section the debug section

The parameter string value must be enclosed in quotes.

Example:

traceDebugLevel="all"

Traces everything for the original and or destination addresses.

traceDebugLevel="cmnConfig,slee_api"

Traces cmnConfig and slee_api sections for the original and or destination addresses.

traceDebugLevel="all,-cmnEscher"

Traces everything except cmnEscher section for the original and or destination addresses.

traceDebugLevel="all,-cmnEscher,-display:file"

Traces everything except cmnEscher section for the original and or destination addresses, and removes the file column from the output.

acsChassisActions Configuration

Here is a an example of the acsChassisActions configuration of the ACS section of the eserv.config.

acsChassisActions = {

          mscAddressForEdr = [
              { 
                 mscAddress = "123456789"
                 encoding = "BCD"
              },
              {
                  mscAddress = "987654321"
                  encoding = "ASCII"
              }
           ]

}

encoding

Syntax: encoding = "code"
Description: The encoding of the MSC address
Type: String
Optionality: Optional
Allowed:

Values:

  • "BCD" (Binary Coded Decimal)
  • "ASCII"
Default: BCD
Notes: Member of mscAddressForEdr (on page 2) array
Example: encoding = "BCD"

mscAddress

Syntax: mscAddress = "addr"
Description: The MSC address (in the CallReferenceNumber)
Type: String
Optionality: Optional
Allowed:
Default:
Notes: Member of mscAddressForEdr (on page 2) array
Example: mscAddress = "123456789"

mscAddressForEdr

Syntax: mscAddressForEdr = [addr_parameters]
Description: Array of MSC addresses and their encoding. This is used by the Add EDR Field chassis action.
Type: Array
Optionality: Optional (default used if not set).
Allowed:
Default: All mscAddresses are encoded as BCD.
Notes:
Example:
mscAddressForEdr = [     
           {
               mscAddress = "123456789"
               encoding = "BCD"
           }
]

SessionTimeInformation Configuration

The SessionTimeInformation configuration in the ACS section of the eserv.config supports the facility for the processing of session time information for inbound interfaces such as EDR post processing control agents.

Here is a an example of the section

SessionTimeInformation = {
                STIServiceKey = 122 
                IDPExtTypeEDRId = 901
                extractEdrId = true 
                IDPExtTypeCallStartTime = 902
                extractCallStartTime = true 
                callStartTimeFormat = "YYYYMMDDHH24MISS"
                IDPExtTypeCallAnswerTime = 903
                extractCallAnswerTime = true
                callAnswerTimeFormat = "YYYYMMDDHH24MISS"
                IDPExtTypeCallEndTime = 904
                extractCallEndTime = true
                callEndTimeFormat = "YYYYMMDDHH24MISS" 
                IDPExtTypeEDRTimeZone = 905
                extractEdrTimeZone = true

callAnswerTimeFormat

Syntax: callAnswerTimeFormat = "format"
Description: Specifies the format of the call answer time string
Type: String
Optionality: Optional (default used if not set).
Allowed:
Default: "YYYYMMDDHH24MISS"
Notes:
Example: callAnswerTimeFormat = "YYYYMMDDHH24MISS"

callEndTimeFormat

Syntax: callEndTimeFormat = "format"
Description: The format of call end time time string.
Type: String
Optionality: Optional (default used if not set).
Allowed:
Default: "YYYYMMDDHH24MISS"
Notes:
Example: callEndTimeFormat = "YYYYMMDDHH24MISS"

callStartTimeFormat

Syntax: callStartTimeFormat = "format"
Description: The format of call start time time string.
Type: String
Optionality: Optional (default used if not set).
Allowed:
Default: "YYYYMMDDHH24MISS"
Notes:
Example: callStartTimeFormat = "YYYYMMDDHH24MISS"

extractCallAnswerTime

Syntax: extractCallAnswerTime = true|false
Description: Enable or disable extraction of call answer time from IDP extension.
Type: Boolean
Optionality: Optional (default used if not set).
Allowed: true, false
Default: true
Notes:
Example: extractCallAnswerTime = true

extractCallEndTime

Syntax: extractCallEndTime = true|false
Description: Enable or disable extraction of EDR ID from IDP extension
Type: Boolean
Optionality: Optional (default used if not set).
Allowed: true, false
Default: true
Notes:
Example: extractCallEndTime = true

extractCallStartTime

Syntax: extractCallStartTime = true|false
Description: Enable or disable extraction of call start time from IDP extension
Type: Boolean
Optionality: Optional (default used if not set).
Allowed: true, false
Default: true
Notes:
Example: extractCallStartTime = true

extractEdrId

Syntax: extractEdrId = true|false
Description: Enable or disable extraction of EDR ID from IDP extension.
Type: Boolean
Optionality: Optional (default used if not set).
Allowed: true, false
Default: true
Notes:
Example: extractEdrId = true

extractEdrTimeZone

Syntax: extractEdrTimeZone = true|false
Description: Enable or disable extraction of timezone from IDP extension
Type: Boolean
Optionality: Optional (default used if not set).
Allowed: true, false
Default: true
Notes:
Example: extractEdrTimeZone = true

IDPExtTypeCallAnswerTime

Syntax: IDPExtTypeCallAnswerTime = id
Description: The ID of IDP Extension in which the call answer time is passed to ACS.
Type: Integer
Optionality: Optional (default used if not set).
Allowed:
Default: 903
Notes:
Example: IDPExtTypeCallAnswerTime = 903

IDPExtTypeCallEndTime

Syntax: IDPExtTypeCallEndTime = value
Description: The ID of IDP Extension in which the Call end time is passed to ACS.
Type: Integer
Optionality: Optional (default used if not set).
Allowed:
Default: 904
Notes:
Example: IDPExtTypeCallEndTime = 904

IDPExtTypeCallStartTime

Syntax: IDPExtTypeCallStartTime = id
Description: The ID of IDP Extension in which the call start time is passed to ACS.
Type: Integer
Optionality: Optional (default used if not set).
Allowed:
Default: 901
Notes:
Example: IDPExtTypeCallStartTime = 902

IDPExtTypeEDRId

Syntax: IDPExtTypeEDRId = id
Description: The ID of IDP Extension in which the EDR ID is passed to ACS.
Type: Integer
Optionality: Optional (default used if not set).
Allowed:
Default: 901
Notes:
Example: IDPExtTypeEDRId = 901

IDPExtTypeEDRTimeZone

Syntax: IDPExtTypeEDRTimeZone = id
Description: The ID of IDP Extension in which the timezone is passed to ACS
Type: Integer
Optionality: Optional (default used if not set).
Allowed:
Default: 901
Notes:
Example: IDPExtTypeEDRTimeZone = 905

STIServiceKey

Syntax: STIServiceKey = skey
Description: The service key on which session time based (offline) calls are to be expected.
Type: Integer
Optionality: Optional (default used if not set).
Allowed:
Default: 0 - set to 0 to disable session data processing
Notes: This must match the service key in slee.cfg that you wish to run this service for on slee_acs.
Example: STIServiceKey = 122

ServiceEntries Configuration

You can optionally define ServiceEntries configuration in the ACS section of the eserv.config file to configure ACS services that will be handled by the specified service libraries. Each entry in the ServiceEntries array defines the service loaders that a particular service handle should use, and also defines how number selection should work for the service handle. This method of defining service entries has the same purpose as configuring ServiceEntry lines in the acs.conf configuration file, but it has the following advantages:

  • The configuration is easy to read
  • The configuration is very flexible because you can specify a list of service libraries for each service library function

Note:

Each service entry must be configured either in eserv.config or in acs.conf but not in both. For more information about configuring service entries in acs.conf, see acsChassis ServiceEntry Configuration
Here is an example of the ServiceEntries configuration:
ServiceEntries = [
{ 
        ServiceName = "MyTestService"
 
       Methods = {
          acsChassisInitSL = [ "lib1.so", "lib2.so", "lib3.so" ]  
          acsChassisLoadService = [ "lib1.so", "lib3.so" ]  
          acsChassisPrePOR = [ "lib2.so", "lib1.so" ]
          acsChassisCallTerminated = [ "lib1.so" ]
          acsChassisPreCTR = [ "lib1.so"]
          acsChassisPreETC = [ "lib1.so"]
}
      AddressSources = {   
      NetworkCP = [ 
        { source = "callingPartyNumber", screening = "network" }
        { source = "callingPartyNumber", screening = "user" }
        { source = "additionalCallingPartyNumber", screening ="network" }
        { source = "additionalCallingPartyNumber", screening ="user" } 
        { source = "extensionNumber", extension=4 }
        { source = "cellIDorLAI" }
        { source = "Empty" }
     ] 
     LogicalCP = [
        { source = "callingPartyNumber", screening = "user" }
        { source = "callingPartyNumber", screening = "network" }
    ] 
    }
} 
]
        

AddressSources

Syntax: AddressSources = [AddressSources_parameters]
Description: Lists the sources used to populate various ACS buffers that may then be used by the service loader, chassis actions, or control plan. For a list of allowed values, see Allowed.
Type: Array
Optionality: Optional (default used if not set)
Allowed:

Use:

  • NetworkCP – To specify the sources for the network calling party number
  • LogicalCP – To specify the sources for the logical calling party number
  • ConnectDRA – To specify the sources for the default destination routing address to put in a Connect operation, and also the default pending termination number
  • ConnectCLI – To specify the sources for the calling party ID in a Connect operation
  • RedirectingParty – To specify the sources for the redirecting party ID in a Connect operation
  • OriginalCP – To specify the sources for the original called party ID in a Connect operation
Default:
Notes:
Example:
AddressSources = {
          NetworkCP = [
             { source = "callingPartyNumber", screening = 
             "network"}
             {source = "callingPartyNumber", screening = "user"} 
          ]
          LogicalCP = [
             { source = "callingPartyNumber", screening = 
             "network"}
             {source = "callingPartyNumber", screening = "user" }
]
}

Methods

Syntax: Methods = {Methods_parameters}
Description: Array of ACS chassis functions that may be invoked by the service, and the service libraries to associate with each function.
Type: Array
Optionality: Required
Allowed:

You must specify the following required ACS chassis functions:

  • acsChassisInitSL() – Invoked by ACS chassis when it loads the shared library at startup time. You use this function to initialize global variables, and read configuration tables and files.
    • Note: You must include the full list of libraries that will be loaded by the service in the definition for the acsChassisInitSL()function.
  • acsChassisLoadService() – Invoked by ACS chassis at the beginning of a new session, call, or event, that the network starts.

You can specify one or more of the following optional ACS chassis functions:

  • acsChassisPrePOR() – Called by ACS when a feature node within the control plan requests a specific network action or when acsChassisLoadService() returns a response that causes a specific network action.
  • acsChassisCallTerminated() – Performs post-call cleanup when a call has been terminated
  • acsChassisPreCTR()– Controls the FurnishChargingInformation (FCI) and SendChargingInformation (SCI) that is sent with outbound Connect To Resource (ETC) or ReleaseCall operations
  • acsChassisPreETC() – Controls the FurnishChargingInformation (FCI) and SendChargingInformation (SCI) that is sent with outbound EstablishTemporaryConnect (ETC) operations

For more information about the allowed functions, see SDK Developer's Guide.

Notes:

The service libraries specified for a function run in list order. For example, to run the acsChassisLoadService() function first from ccsSvcLibrary.so, and then from libmyServiceExample1.so, specify the following configuration:

acsChassisLoadService = [ "ccsSvcLibrary.so", "libmyServiceExample1.so" ]

Example:
Methods = [
          {
          acsChassisInitSL = [ "ccsSvcLibrary.so",
          "libmyServiceExample1.so" ]
          acsChassisLoadService = [
          "ccsSvcLibrary.so","libmyServiceExample1.so" ]
          acsChassisPrePOR = ["libmyServiceExample1.so"]
          acsChassisCallTerminated = [ "libServiceExample1.so" ]
          }  
]

ServiceName

Syntax: ServiceName = "str"
Description: The name of the service that will be handled by the service libraries specified in the Methods section.
Type: String
Optionality: Required
Allowed:
Default:
Notes:
Example: ServiceName = "MyTestService"

screening

Syntax: screening = "user|network"
Description: Sets the screening indicator for the source number to either user provided, or network provided.
Type: Boolean
Optionality: Required
Allowed: user or network
Default:
Notes:
Example: screening = "user"

source

Syntax: source = "str"
Description: Sets the ACS buffer to use for this variable in the AddressSources list. For more information address sources, see acsChassis ServiceEntry Configuration (SLC) Configuration.
Type: String
Optionality: Required
Allowed:

Use any of the following values:

  • callingParty
  • firstRedirectingParty – This is the original called party ID from the IDP
  • lastRedirectingParty – This is the redirecting party ID from the IDP
  • additionalCallingParty
  • imsi
  • cellIDorLAI
  • locationNumber
  • mscAddress
  • locationInfoLocationNumber
  • calledParty
  • vlrNumber
  • Empty
  • extensionNumber – You configure the extension number by using the following configuration format. source = "extensionNumber", extension = int, where int is a value between 0 and 9.
Notes: When ACS populates a buffer, ACS searches the list of number sources until it finds one that matches in the IDP. If ACS does not find a match then the buffer is left blank.
Example: source = "callingPartyNumber"

acsTriggerIF Configuration

Oracle Communications Billing and Revenue Management (BRM) is able to trigger notifications off the back of the AAA opcodes which drive the real-time charging interaction. The Convergent Charging Controller architecture takes advantage of the BRM In-Session Notifications by triggering control plans at the point they are received. See BRM Charging Driver Technical Guide for details on in-session notification mapping from BRM to Convergent Charging Controller.

See the Triggers topic in ACS User's Guide for control plan trigger definitions.

The ACS SLEE interface (acsTriggerIF) generates an IDP to trigger a control plan on receipt of a SLEE event containing control plan trigger details and IDP data.

Here is an example of the acsTriggerIF section:
acsTriggerIF = {
            # sleeInterfaceName = "acsTriggerIF" 
            # sleeServiceKey = 1
            # overrideSleeServiceKey = 0
            # inapServiceKey = 1
            # statisticsEnabled = true
            # noActivitySleepTime = 10000
            # triggerTimeOutSecs = 10
            deleteTagsAfterTrigger = [
                    1312070, # ISN Balance
                    1312052, # ISN Credit Threshold Balance
                    1312075, # ISN Failure Reason
                    1312074, # ISN Lifecycle State
                    1312050, # ISN Preferred Channel
                    1312051, # ISN Preferred Time
                    1312073, # ISN Rating Status
                    1312068, # ISN Streaming Threshold
                    1312066  # ISN Subscription Expiry
            ] 
            numberRules = [
                        { prefix="", min=0, max = 100, remove=0, prepend="", resultNoa=4 }
               ]
            }

deleteTagsAfterTrigger

Syntax: deleteTagsAfterTrigger = [tags]
Description: List of profile tags which should be deleted after they are sent in a trigger event.
Type: Array
Optionality: Optional (default used if not set)
Allowed: Valid profile tags, matching those defined in the bcdActionHandler.InSessionNotificationMapping section of eserv.config. See BRM Charging Driver Technical Guide.
Default: [ ]
Notes: Not specified means no tags will be deleted.
Example:
deleteTagsAfterTrigger = [
             1312070, # ISN Balance
             1312052, # ISN Credit Threshold Balance
             1312075, # ISN Failure Reason
             1312074, # ISN Lifecycle State
             1312050, # ISN Preferred Channel
             1312051, # ISN Preferred Time 
             1312073, # ISN Rating Status 
             1312068, # ISN Streaming Threshold 
             1312066 # ISN Subscription Expiry

inapServiceKey

Syntax: inapServiceKey = int
Description: The INAP service key that acsTriggerIF should use for generated IDP messages if not specified by the trigger event data.
Type: Integer
Optionality: Optional (default used if not set)
Allowed:
Default: 1
Notes:
Example: inapServiceKey = 1

noActivitySleepTime

Syntax: noActivitySleepTime = usecs
Description: Period (microseconds) to sleep if no activity detected by last poll.
Type: Integer
Optionality: Optional (default used if not set)
Allowed:
Default: 10000
Notes: Zero (0) means no sleep.
Example: noActivitySleepTime = 10000

numberRules

Syntax: numberRules = [rules]
Description: Rules for denormalizing numbers to send to slee_acs in an IDP.
Type: Array
Optionality: Optional (default used if not set)
Allowed:
Default: no rules applied
Notes: The rule below assumes that all numbers in trigger events start with a country code# and should be sent in international format (NOA= 4).
Example:
numberRules = [
              { prefix="", min=0, max = 100, remove=0, prepend="",
         resultNoa=4 }
         ]

overrideSleeServiceKey

Syntax: overrideSleeServiceKey = int
Description: The SLEE service key that acsTriggerIF should *always* send generated IDP messages to. This overrides the sleeServiceKey config option and the trigger event data.
Type: Integer
Optionality: Optional (default used if not set)
Allowed:
Default: 0
Notes: Zero (0) means no override.
Example: overrideSleeServiceKey = 0

sleeInterfaceName

Syntax: sleeInterfaceName = "IFName"
Description: The SLEE interface name of the acsTriggerIF process.
Type: String
Optionality: Optional (default used if not set)
Allowed:
Default: "acsTriggerIF"
Notes:
Example: sleeInterfaceName = "acsTriggerIF"

sleeServiceKey = int

Syntax: sleeServiceKey = int
Description: The SLEE service key that acsTriggerIF should send generated IDP messages to if not specified by the trigger event data.
Type: Integer
Optionality: Optional (default used if not set)
Allowed:
Default: 1
Notes:
Example: sleeServiceKey = 1

statisticsEnabled

Syntax: statisticsEnabled = true|false
Description: Set whether acsTriggerIF should log statistics or not.
Type: Boolean
Optionality: Optional (default used if not set)
Allowed: true, false
Default: true
Notes:
Example: statisticsEnabled = true

triggerTimeOutSecs

Syntax: triggerTimeOutSecs = seconds
Description: The maximum period (in seconds) that acsTriggerIF should wait for a response to an IDP trigger event before giving up and closing the dialog.
Type: Integer
Optionality: Optional (default used if not set)
Allowed:
Default: 10
Notes:
Example: triggerTimeOutSecs = 10

Statistics Updated by acsTriggerIF

The following statistic definitions have been defined for application "Acs_Service". These statistics are turned on by default. Control this behavior by setting the acsTriggerIF statisticsEnabled (on page 2) parameter. For each required extra statistic, turn the statistic on using the SMS Statistics Management screen (see SMS User's Guide).
Statistic Description
TRIGGER_FAIL The number of failed control plan triggers.
TRIGGER_SUCCESS The number of successful control plan triggers.
TRIGGER_TIMEOUT The number of timed out control plan triggers.

acsDbCleanup Configuration

The acsDbCleanup configuration in the ACS section of the eserv.config supports configurations for DB cleanup.

Here is an example of the acsDbCleanup section.
acsDbCleanup = {
             statsAge = 5
             compileErrorAge = 1
             commit = 100
} # acsDbCleanup 

statsAge

Syntax: statsAge = value
Description: The number of days after which statistics records has to be deleted from ACS_STATISTICS_COUNT table.
Type: Integer
Optionality: Optional (default used if not set)
Allowed: Any non zero, positive integer.
Default: The default value is configured in acsDbCleanup.sh file.
Notes:
Example: statsAge = 5

compileErrorAge

Syntax: compileErrorAge = value
Description: The number of days after which the compile error records has to be deleted from ACS_COMPILE_ERRORS table.
Type: Integer
Optionality: Optional (default used if not set)
Allowed: Any non zero, positive integer.
Default: The default value is configured in acsDbCleanup.sh file.
Notes:
Example: compileErrorAge = 1

commit

Syntax: commit = value
Description: The number of rows that has to committed after making the changes in AC_STATISTICS_COUNT and ACS_COMPILE_ERRORS tables.
Type: Integer
Optionality: Optional (default used if not set)
Allowed: Any non zero, positive integer.
Default: The default value is configured in acsDbCleanup.sh file.
Notes:
Example: commit = 100

AdditionalCheckMOLIPrefix Configuration

The MoLI (Mobile origin Location Information) standard is used by Australian Telecommunications companies to identify the location of mobile callers.

The checkMOLIPrefix parameter, which you configure in the acs.conf file, enables you to specify only a single prefix on a dialed number that identifies the prefix as containing a MoLI code. If the dialed number has the prefix specified, then ACS removes the prefix and applies MoLI decoding rules in order to place the three digit MoLI code from the number into the calling network address field.

You can configure up to 19 additional MoLI prefixes in the ACS, AdditionalCheckMOLIPrefix section in the eserv.config configuration file on the SLC. You configure the additional MoLI prefixes by using the following syntax:
ACS = {
    AdditionalCheckMOLIPrefix = {
        checkMOLIPrefixes = [
                 "int",
                 "int",
                 ..
              ]
        }
   }

The checkMOLIPrefixes array has the following characteristics:

checkMOLIPrefixes

Syntax:
checkMOLIPrefixes = [
              "int",
              "int",
              ..
]
Description: The checkMOLIPrefixes array is a comma separated list of the additional MoLI prefixes to check, where int is a MoLI prefix.
Type: Array
Optionality: Optional
Allowed: Up to 19 additional MoLI prefixes
Notes: You must also configure the single MoLI prefix in the CheckMOLIPrefix (on page 2) parameter in acs.conf for the MoLI functionality to be available.
Example:
checkMOLIPrefixes = [
              "121",
              "122", 
              "123",
              "124",
              "125",
              "126"
]

FCI Configuration

For correct operation with a Siemens INAP (SINAP 5) switch, Convergent Charging Controller sends a Furnish Charging Information (FCI) operation before every Connect, Continue, ReleaseCall, EstablishTemporaryConnection, and ConnectToResurce operation. Convergent Charging Controller extracts the FCI content to send from the appropriate profile block and tags.

An FCI operation can contain between one and five billing items. If the extracted FCI content contains more than five billing items, slee_acs can send a second FCI operation that contains up to five additional billing items. A maximum of 10 billing items can be sent. Examples of billing items sent in FCI operations are "calling number", "called number", and "prepaid/postpaid flag".

In addition to billing items, the FCI contents can include the following information:

  • Service number (from the original called party buffer or another buffer)
  • Auto-incrementing counter (“A” for first FCI, “B” for second, and so on)
  • Mobile location indicator from the calling party network address buffer or another buffer
  • Country code from the service number profile
  • Service code from the service number profile
  • Profile tags populated by the FCI fields in the Edit Service Numbers dialog box
  • Profile tags: FCI On (70), FCI Service Code (71), FCI Country Code (72)

The FCI operation for a Siemens INAP requires the following shared library, which is installed with Convergent Charging Controller:

/IN/service_packages/AAPT/lib/libfciService.so
Here is an example of the FCI configuration section:
FCI = {
 
     serviceKeys = [
         9810, "91900001", "0xff1911100" etc.
     ]
}

serviceKeys

Syntax: serviceKeys = [key1, ...]
Description: Specifies which INAP service keys receive FCI data
Type: Integer, String
Optionality: Required
Allowed: Integer, String, and String with Hex ("0x...") formats are supported.
Default: [ ]
Example: serviceKeys = [9810, "91900001", "0xff1911100"]

fciFlagProfileTag

Syntax: fciFlagProfileTag = tag
Description: If the profile tag used for the FCI flag is not standard, specifies the profile tag to use for the FCI flag
Type: Integer
Optionality: Optional
Allowed:
Default: None
Example: fciFlagProfileTag = 70

serviceIndicatorProfileTag

Syntax: serviceIndicatorProfileTag = tag
Description: If the profile tag used for the service indicator flag is not standard, specifies the profile tag to use for the service indicator flag.
Type: Integer
Optionality: Optional
Allowed:
Default: None
Example: serviceIndicatorProfileTag = 71

countryCodeProfileTag

Syntax: countryCodeProfileTag = tag
Description: If the profile tag used for the country code is not standard, specifies the profile tag to use for the country code.
Type: Integer
Optionality: Optional
Allowed:
Default: None
Example: countryCodeProfileTag = 72

NP Configuration

The following number portability (NP) shared library replaces the destination routing address in the Connect operation if the number has been ported to another operator:

/IN/service_packages/AAPT/lib/libnpService.so

For example, it might replace "02 1111 2222" with "1456 43 02 1111 2222".

The shared library queries the NP tables directly.

Here is an example of the NP configuration section:
NP = {

           enableService = true 
           mode = "whitelist"
           serviceKeys = [
               10,   # Toll Free EWSD Private Plane
               30    # Toll Free Genband National Plane
           ]
           ignoredTermNumberPrefixes = [
                "14"
           ]
           additionalPrefix = "AA"

           additionalPrefixServiceKeys = [
               30    # Toll Free Genband National Plane
           ]
}

enableService

Syntax: enableService = true | false
Description: Specifies whether to execute the NP service logic (libnpService.so).
Type: Boolean
Optionality: Optional (default used if not set)
Allowed: true, false
Default: true
Example: enableService = true

mode

Syntax: mode = "whitelist" | "blacklist"
Description:

Specifies how to treat the configured service keys.

  • "whitelist" means INAP connect operations associated with the service keys (serviceKeys) will trigger an NP lookup or translation.
  • "blacklist' means INAP connect operations associated with the service keys (serviceKeys) will not trigger an NP lookup or translation.
Type: String
Optionality: Optional (default used if not set)
Allowed: "whitelist" or "blacklist"
Default: "whitelist"
Example: mode = "whitelist"

serviceKeys

Syntax: serviceKeys = [key1, ...]
Description: Specifies the service keys that trigger (whitelist) or do not trigger (blacklist) an NP lookup.
Type: Array
Optionality: Optional (default used if not set)
Allowed:
Default: [ ]
Example:
serviceKeys = [10, # Toll Free EWSD Private Plane
                       30 # Toll Free Genband National Plane
]

ignoredTermNumberPrefixes

Syntax: ignoredTermNumberPrefixes = ["prefix", ...]
Description: For a call that terminates to a DRA and matches a prefix in this list, specifies that it does not trigger an NP lookup regardless of its service key.
Type: Array
Optionality: Optional (default used if not set)
Allowed:
Default: [ ]
Example: ignoredTermNumberPrefixes = ["14"]

additionalPrefix

Syntax: additionalPrefix = "pre"
Description: An additional prefix that is added to the DRA for calls that trigger an NP lookup and match one of the service keys specified by additionalPrefixServiceKeys
Type: String
Optionality: Optional (default used if not set)
Allowed:
Default: ""
Example: additonalPrefix = "AA"

additionalPrefixServiceKeys

Syntax: additionalPrefixServiceKeys = [key1, ...]
Description: A list of service keys against which calls that trigger an NP lookup are matched. If the service key matches a service key in the list, adds the additionalPrefix prefix to the DRA after NP translation. Adds the prefix regardless of whether the NP lookup finds a PQYZ entry.
Type: Array
Optionality: Optional (default used if not set)
Allowed:
Default: [ ]
Example:
additionalPrefixServiceKeys = [
              30  # Toll Free Genband National Plane
]

ACS_Prefix Service Entry for FCI and NP Configurations

The FCI and NP configurations require the following service entry for the ACS_Prefix service name. See ServiceEntries Configuration (on page 2) for descriptions of the parameters.

There is only one ServiceEntries section so these service entry parameters for ACS_Prefix should be added to any existing sections for other service names.

Note:

The service name and the method order are important. You potentially might want to define the same entries for the service "ACS".
ServiceEntries = [
    {
      ...
      AddressSources = {}
      MinSleeEventSize = 102
      ServiceName = "ACS_Prefix" 
      Methods = {
           acsChassisLoadService = [ "libnpService.so", "libacsService.so",
     "libfciService.so" ]
           acsChassisPreETC = ["libacsService.so", "libfciService.so"]    
           acsChassisPreCTR = ["libacsService.so", "libfciService.so"]
           acsChassisPrePOR = ["libnpService.so", "libacsService.so",
     "libfciService.so" ]
           acsChassisStoreProfile = ["libacsService.so" ]    
           acsChassisReLoadProfiles = ["libacsService.so" ]    
           acsChassisLoadProfiles = ["libacsService.so" ]    
           acsChassisProcessCall =  ["libacsService.so" ]    
           acsChassisCallTerminated = ["libacsService.so" ]
           acsChassisInitSL = ["libnpService.so", "libacsService.so" , 
     "libfciService.so" ]
           acsChassisGetCDRContent = ["libacsService.so" ]
       }
    }
]

Example ACS Configuration in eserv.config

This is an example of the ACS section of the eserv.config file.

ACS = {
    countryCodes = [
        "97"
        "64"
        "65"
        "44"
        "1"
    ]
    
    macroNodes = {
         ATPD = {
              ReleaseInApplyCharging = true
         }
    }
   
    tracing = {
       enabled = true
       origAddress = [
           "0064212",
           "0064213",
           "0064214
       ]
       destAddress = [
       "0064213",
       "0064214"
   ]
   traceDebugLevel = "all"
}

acsChassisActions = {

   mscAddressForEdr = [
       {
           mscAddress = "123456789"
           encoding = "BCD"
       },
       {
           mscAddress = "987654321"
           encoding = "ASCII"
       }
   ]
}

SessionTimeInformation = {
      STIServiceKey = 122
      IDPExtTypeEDRId = 901
      extractEdrId = true
      IDPExtTypeCallStartTime = 902
      extractCallStartTime = true
      callStartTimeFormat = "YYYYMMDDHH24MISS"
      IDPExtTypeCallAnswerTime = 903
      extractCallAnswerTime = true
      callAnswerTimeFormat = "YYYYMMDDHH24MISS"
      IDPExtTypeCallEndTime = 904
      extractCallEndTime = true
      callEndTimeFormat = "YYYYMMDDHH24MISS"
      IDPExtTypeEDRTimeZone = 905
      extractEdrTimeZone = true
   }

   ServiceEntries = [
   {
       ServiceName = "MyTestService"
 
       Methods = {
           acsChassisInitSL = [ "lib1.so", "lib2.so", "lib3.so"]  
           acsChassisLoadService = [ "lib1.so", "lib3.so" ]  
           acsChassisPrePOR = [ "lib2.so", "lib1.so" ]
           acsChassisCallTerminated = [ "lib1.so" ]
           acsChassisPreCTR = [ "lib1.so"]
           acsChassisPreETC = [ "lib1.so"] 

       }
       
       AddressSources = { 
       NetworkCP = [
          { source = "callingPartyNumber", screening = "network" }
          { source = "callingPartyNumber", screening = "user" }
          { source = "additionalCallingPartyNumber", screening = "network" }
          { source = "additionalCallingPartyNumber", screening = "user" }
          { source = "extensionNumber", extension=4 }
          { source = "cellIDorLAI" }
          { source = "Empty" }  
       ] 
       LogicalCP = [
          { source = "callingPartyNumber", screening = "user" }
          { source = "callingPartyNumber", screening = "network" } 
       ]
       }
       MinSleeEventSize = 1024
       ServiceName = "ACS_Prefix"      
       Methods = {
          acsChassisLoadService = [ "libnpService.so", "libacsService.so", 
          "libfciService.so" ]
          acsChassisPreETC = [ "libacsService.so", "libfciService.so" ]
          acsChassisPreCTR = [ "libacsService.so", "libfciService.so" ]
          acsChassisPrePOR = [ "libnpService.so","libacsService.so", 
         "libfciService.so" ]
          acsChassisStoreProfile = [ "libacsService.so" ]
          acsChassisReLoadProfiles = [ "libacsService.so" ]
          acsChassisLoadProfiles = [ "libacsService.so" ]
          acsChassisProcessCall = [ "libacsService.so" ]
          acsChassisCallTerminated = [ "libacsService.so" ]
          acsChassisInitSL = [ "libnpService.so","libacsService.so",
          "libfciService.so" ]
          acsChassisGetCDRContent =  [ "libacsService.so" ]
       } 
} 
]
acsTriggerIF = {
   # sleeInterfaceName = "acsTriggerIF"
   # sleeServiceKey = 1
   # overrideSleeServiceKey = 0
   # inapServiceKey = 1
   # statisticsEnabled = true
   # noActivitySleepTime = 10000
   # triggerTimeOutSecs = 10
   deleteTagsAfterTrigger = [
        1312070, # ISN Balance
        1312052, # ISN Credit Threshold Balance
        1312075, # ISN Failure Reason
        1312074, # ISN Lifecycle State
        1312050, # ISN Preferred Channel
        1312051, # ISN Preferred Time
        1312073, # ISN Rating Status
        1312068, # ISN Streaming Threshold
        1312066  # ISN Subscription Expiry
   ]
   numberRules = [
         { prefix="", min=0, max = 100, remove=0, prepend="",resultNoa=4 }
   ]
}

 AdditionalCheckMOLIPrefix = {
     checkMOLIPrefixes = [
          "121",
          "122",
          "123",
          "124",
          "125",
          "126"
      ]
  }

  FCI = {

    serviceKeys = [
    9810, "91900001", "0xff1911100" etc.
  ]
}

 NP = {
   
    enableService = true
    mode = "whitelist"
    serviceKeys = [
       10,   # Toll Free EWSD Private Plane
       30    # Toll Free Genband National Plane
   ]
 
    ignoredTermNumberPrefixes = [
        "14"
   ]
   
    additionalPrefix = "AA" 

    additionalPrefixServiceKeys = [
        30   # Toll Free Genband National Plane
    ]
  }
}

Subscriber Tracing

The SubscriberTracing configuration in eserv.config enables subscriber level tracing and also used to generate the trace for the subscribers for each call. This configuration is available only at SLC nodes.

Here is an example of the section.

enabled

Syntax: enabled = true|false
Description: Enables the subscriber tracing and generates a trace file for each configured subscriber.
Type: Boolean
Optionality: Optional, default used if not set.
Allowed: true, false
Default: false
Notes:
Example: enabled = false

sessionLevelTracing

Syntax: sessionLevelTracing = true|false
Description: Used to generate one trace per call for each configured subscriber.
Type: Boolean
Optionality: Optional, default used if not set.
Allowed: true, false
Default: false
Notes:
Example: sessionLevelTracing = false

subscriberList

Syntax: subscriberList = ["MSISDN1","MSISDN2",...,"MSISDNN"]
Description: A list of subscribers for those the traces needs to be generated.
Type: Array of number strings
Optionality: Optional
Allowed: MSISDN of any valid subscriber.
Default: null
Notes:

If subscriberList is left empty, no subscriber is traced.

Configuring a big list of subscribers for tracing could impact the system performance.

Example: subscriberList = ["321100001","3211000002"]

traceLocation

Syntax: traceLocation = "path"
Description: The path where the trace files are saved.
Type: String
Optionality: Optional, default used if not set.
Allowed: Any valid path on SLC where smf_oper user has permission to write.
Default: "/tmp"
Notes:
Example: traceLocation = "/IN/service_packages/ACS/tmp"

MRC Configuration

locationInfoRetrieval Configuration

In order to make slee_acs send AnyTimeInterrogation, so that it can do mid-call tariff changes if the subscriber moves, you need to configure the locationInfoRetrieval parameters in the MRC section of eserv.config.

MRC = {
    locationInfoRetrieval = { 
        LocationInfoPollEnabled = true
        LocationInfoTcapInterfaceName = "m3ua_if"
        LocationInfoGSMScfAddress = "12345678"
        LocationInfoGSMScfMapNoa = 1
        LocationInfoOriginatingSubsystemNumber = 147
        LocationInfoDestinationSubsystemNumber = 6 # HLR
        LocationInfoRequestTimeout = 5

The locationInfoRetrieval parameter is optional. However, if the parameter is present, to configure the parameter to send AnyTimeInterrogation, the following parameters must be set to a valid value other than their default:

  • LocationInfoGSMScfAddress
  • LocationInfoPollEnabled
  • LocationInfoTcapInterfaceName

The following parameters specify parts of the GSM SCF address parameter of AnyTimeInterrogation. They are also used for the SCCP originating address of the message containing the AnyTimeInterrogation:

  • LocationInfoGSMScfAddress
  • LocationInfoGSMScfMapNoa
  • LocationInfoOriginatingSubsystemNumber
  • LocationInfoDestinationSubsystemNumber
  • LocationInfoRequestTimeout

LocationInfoDestinationSubsystemNumber

Syntax: LocationInfoDestinationSubsystemNumber = num
Description: The SCCP subsystem number to put in the destination address.
Type: Integer
Optionality: Required if locationInfoRetrieval is present
Allowed:
Default: 0
Notes:
Example: LocationInfoDestinationSubsystemNumber = 6

LocationInfoGSMScfAddress

Syntax: LocationInfoGSMScfAddress = "address"
Description: The digits of the GSM SCF address and Global Title.
Type: String
Optionality: Required if locationInfoRetrieval is present
Allowed:
Default: ""
Notes: The default setting will turn off the function.
Example: LocationInfoGSMScfAddress = "12345678"

LocationInfoGSMScfMapNoa = NoA

Syntax: LocationInfoGSMScfMapNoa = NoA
Description: The nature of address of the GSM SCF address.
Type: Integer
Optionality: Optional (default used if not set).
Allowed:
Default: 1 (International)
Notes: The SCCP Global Title NOA is hard-coded to 4 = international.
Example: LocationInfoGSMScfMapNoa = 1

locationInfoOriginatingSubsystemNumber

Syntax: locationInfoOriginatingSubsystemNumber = num
Description: The SCCP subsystem number to put in the originating address.
Type: Integer
Optionality: Required if locationInfoRetrieval is present
Allowed:
Default: 0
Notes:
Example: locationInfoOriginatingSubsystemNumber = 147

locationInfoPollEnabled

Syntax: locationInfoPollEnabled = true|false
Description: Send AnyTimeInterrogation
Type: Boolean
Optionality: Required if locationInfoRetrieval is present
Allowed: true, false
Default: false
Notes: The default setting will turn off the function
Example: locationInfoPollEnabled = true

LocationInfoRequestTimeout

Syntax: LocationInfoRequestTimeout = seconds
Description: The minimum number of seconds to wait before giving up waiting for a response to AnyTimeInterrogation.
Type: Integer
Optionality: Optional (default used if not set).
Allowed:
Default: 5
Notes:
Example: LocationInfoRequestTimeout = 5

locationInfoTcapInterfaceName

Syntax: locationInfoTcapInterfaceName = "name"
Description: The name of the TCAP interface to use to send MAP2 AnyTimeInterrogation.
Type: String
Optionality: Required if locationInfoRetrieval is present
Allowed:
Default: ""
Notes: The default setting will turn off the function.
Example: LocationInfoTcapInterfaceName = "m3ua_if"

Example MRC Configuration in eserv.config

This is an example of the MRC section of the eserv.config file.
MRC = {
    locationInfoRetrieval = { 
        LocationInfoPollEnabled = true
        LocationInfoTcapInterfaceName = "m3ua_if"
        LocationInfoGSMScfAddress = "12345678"
        LocationInfoGSMScfMapNoa = 1
        LocationInfoOriginatingSubsystemNumber = 147
        LocationInfoDestinationSubsystemNumber = 6 # HLR
        LocationInfoRequestTimeout = 5
     }
}