Configuration Files for OM-AI Integration

Two files are primarily involved in maintaining OM-AI Integration for Event Pub-Sub functionality. They are aiconnection.txt and aieventconfig.txt.

  • aiconnection.txt: Defines which AI sidecar is serving which Object Manager component at which port. It is located under <SIEBSRVR_ROOT>, where you can create a directory named aiconnection if not present already.

    Example path, <……>/ses/siebsrvr/aiconnection/aiconnection.txt.

    It uses alias name of the component. Multiple instances of a component can be used with different AI sidecars.

    Sample structure

    <ComponentAlias>=Comma Separated List of <AI hostname which acts as sidecar to OM >:<port>

    Sample Data Entries

    EAIOBjMgr_Enu=mydomain.mycompany.com:9091;localhost:9092

    UCMObjMgr_enu=localhost:9093;mydomain.mycompany.com:9094

    SCCObjMgr_enu=mydomain.mycompany.com:9095;localhost:9096

    Note: AI connect string info is read in round robin fashion. A connection is opened between a component (bearing its alias name) and its AI sidecar, data is sent and then the connection is closed.
  • aieventconfig.txt: The configurations in aieventconfig.txt is relevant for AI sidecars to communicate with both Object Managers and Kafka. AI sidecar uses configuration in aieventconfig.txt to consume event records from Kafka and propagate (over SISNAPI) to Siebel Component.

    Create an AI (for example using Installer and SMC) to be used as sidecar for Event Publication and Subscription, then place aieventconfig.txt inside web apps directory of that sidecar AI.

    Example path, <……>/ses/ applicationcontainer_external_fins/webapps/aieventconfig.txt

    Note: Topics subscribed to must have entry within Events array in aieventconfig.txt.

    Additionally, these topics must be configured under Event Store field in Event Subscription screen. Topic name cannot be repeated for a given AI.

    Optionally, you can use partitions for a topic through the optional parameter Partitions. Siebel CRM Event Publication and Subscription uses the value or values of the Partitions parameter in the aieventconfig.txt file to determine the partitions to subscribe to for a topic, as follows:

    • If you configure the Partitions parameter for the topic, Siebel CRM Event Publication and Subscription will consume data only from those partitions for that topic.
    • If you create the topic with ‘n’ number of partitions but do not configure the Partitions parameter for the topic, Siebel CRM Event Publication and Subscription will set partitions for the topic to 0, 1,.., n-1 and will subscribe to all the partitions of the topic.
    • If you do not create a topic and do not configure the Partitions parameter, Siebel CRM Event Publication and Subscription will set the partitions for the topic to 0, 1, 2, ..., n-1. Here, 'n' is the default number of partitions set for the Kafka Broker through the num.partitions property in the config/server.properties file.

    An object manager is required for bootstrapping Event Publication and Subscription functionalities during start-up. This object manager is referred to as BaseSiebelComponent in aieventconfig.txt.

    Similarly, you must enter information about object managers that will process subscriptions within Siebel CRM – these object managers are referred to as SiebelComponent under the Events array to process subscription requests from specific event stores like Kafka topics. The BaseSiebelComponent is also used to process subscriptions when no object manager is defined as part of the information about SiebelComponent for a specific event store (for example, a Kafka topic).

    Note: Only one BaseSiebelComponent must be defined whereas you can use as many SiebelComponent as required (one object manager can process subscriptions from more than one event store like topic).

    In aieventconfig.txt, therefore, the configurations of the object managers (BaseSiebelComponent and all the SiebelComponent) needs a user to be defined that has appropriate access permissions comprising of positions, responsibilities and any other configurations for processing data related to Event Publication and Subscription feature. For example, these users must have access to all necessary Siebel CRM building blocks like screens, views, business objects, business components, business services, workflows, and others.

    This table describes the list of aieventconfig.txt fields and sections.

    Field Name Parent Description

    BaseSiebelComponent

    ConfigParam

    Beginning of section for the base/default component to process AI sidecar request

    Alias

    BaseSiebelComponent

    Base component’s alias

    SessionPoolSize

    BaseSiebelComponent

    Base component’s session connection-pool size

    User

    BaseSiebelComponent

    Login User ID to allow the base component to process request

    Password

    BaseSiebelComponent

    Encrypted password according to security profile (DB/LDAP and so on)

    SessionTime

    BaseSiebelComponent

    Base component’s session timeout

    DefaultKafkaConsumerPollInterval

    BaseSiebelComponent

    Default polling interval of Kafka consumer running in AI to poll for records from Kafka

    NumberOfProducers ConfigParam Number of producers in AI sidecars
    KafkaProducerMaxRequestSize ConfigParam Sets producer property max.request.size - the maximum size of a request in bytes
    KafkaProducerPollInterval ConfigParam Poll interval (in milliseconds) at which producer running in AI sidecar writes to Kafka

    KafkaConsumerMaxPartitionFetchBytes or KafkaPartitionConsumerFetchMaxBytes

    ConfigParam

    Used to set Kafka Consumer config max.partition.fetch.bytes.

    An alternative name “KafkaPartitionConsumerFetchMaxBytes” has been introduced for this parameter

    Note: For now, both “KafkaConsumerMaxPartitionFetchBytes” and “KafkaPartitionConsumerFetchMaxBytes” are supported and can be used interchangeably. Eventually,support for the parameter name “KafkaConsumerMaxPartitionFetchBytes” will be stopped, and only the parameter name “KafkaPartitionConsumerFetchMaxBytes” will be supported. We advise you to utilize the intermediate time to make the transition from

    “KafkaConsumerMaxPartitionFetchBytes” to “KafkaPartitionConsumerFetchMaxBytes” in the configuration.

    KafkaConsumerFetchMaxBytes or KafkaTopicConsumerFetchMaxBytes

    ConfigParam

    Used to set Kafka Consumer Config fetch.max.bytes. An alternative name “KafkaTopicConsumerFetchMaxBytes” has been introduced for this parameter

    Note: For now, both “KafkaConsumerFetchMaxBytes” and “KafkaTopicConsumerFetchMaxBytes” are supported and can be used interchangeably. Eventually, support for the parameter name “KafkaConsumerFetchMaxBytes” will be stopped, and only the parameter name “KafkaTopicConsumerFetchMaxBytes” will be supported. We advise you to utilize the intermediate time to make the transition from “KafkaConsumerFetchMaxBytes” to “KafkaTopicConsumerFetchMaxBytes” in the configuration.

    Events

    ConfigParam

    Array of Kafka Topics for which subscription has been configured. Empty if only 1-step is in scope or when no subscription is configured.

    Topic or EventStore

    Events

    Name of the Kafka Topic that AI sidecar has subscribed to

    Note: For now, both “Topic” and “Event Store” are supported and can be used interchangeably. In the future releases, only the parameter name

    “EventStore” will be supported. Hence, we advise you to make the transition from “Topic” to “EventStore” in the configuration at the earliest.

    Partitions

    Events

    Specify the partition number/partition numbers from which the consumers will consume data of a given topic.

    KafkaConsumerGroupId

    Events

    Consumer group id for the topic

    NumberOfConsumers

    Events

    Number of consumer threads running in AI sidecar to consume record from the subscribed topic.

    KafkaConsumerPollInterval

    Events

    Poll interval (in milliseconds) at which Kafka consumer running in AI sidecar reads from Kafka topic.

    SiebelComponent

    Events

    Section to detail the object manager component which will process the event data consumed by AI sidecar from Kafka topic.

    Alias

    SiebelComponent

    Alias name of the object manager component which will process the event data consumed by AI sidecar from Kafka.

    SessionPoolSize

    SiebelComponent

    Component session connection-pool Size

    User

    SiebelComponent

    User ID to login to component to process event data.

    Password

    SiebelComponent

    Encrypted Password to login to component to process event data.

    SessionTime

    SiebelComponent

    Component session timeout

    Sample aieventconfig.txt file Entries:

    {
    
       "ConfigParam" : {
    
       "BaseSiebelComponent" :{
    
         "Alias":"EAIObjMgr_enu",
    
         "SessionPoolSize": "1",
    
         "User":"SADMIN",
    
         "Password":"<EncryptedPassword>",
    
         "SessionTime":"200",
    
         "DefaultKafkaConsumerPollInterval":"100"},
    
        "NumberOfProducers": "5",
    
        "KafkaProducerMaxRequestSize": "20971520",
    
        "KafkaProducerPollInterval":"100",
    
        "KafkaConsumerMaxPartitionFetchBytes": "20971520",
    
        "KafkaConsumerFetchMaxBytes": "20971520",
    
    "Events":
    
     [{ "EventStore":"contactevent",
        
        "Partitions": "0,1,4",
    
        "KafkaConsumerGroupId": ”<ConsumerGroupId>",
    
        "NumberOfConsumers": "5",
    
        "KafkaConsumerPollInterval": "100",
    
         "SiebelComponent": {
    
               "Alias":"SCCObjMgr_enu",
    
                "SessionPoolSize": "1",
    
                "User":"SADMIN",
    
                "Password":"<EncryptedPassword>",
    
                "SessionTime":"900"
    
               }}
    
      ]}
    
    }

    One can understand that the Events array includes information to process subscription, like which topic is being subscribed to, the number of partitions for the topic how many consumer threads/applications to run inside AI sidecar to process this subscription, polling interval of that topic, and after records are read by the consumers in AI, which object manager component to send to in order to further process the event records received.

    Note: The Business Service and Method entered in Event Subscription screen will be invoked to execute necessary business logic.

    Therefore, when there is no subscription running, for example when only “1-Step” outbound publish only is in scope, Events array will be empty and denoted by [].

    The number of consumers and partitions are tightly coupled with each other. To ensure efficient use of computing resources and best throughout, you must plan the number of consumers subscribing from partitions in the aieventconfig.txt file as follows:

    Use Case Example Result

    When the value of NumberOfConsumers is equal to the number of partitions for a topic, each consumer will consume data from only one partition.

    "NumberOfConsumers": "4"

    "Partitions": "0,1,2,3"

    Consumer-0 will consume data from partition 0

    Consumer-1 will consume data from partition 1

    Consumer-2 will consume data from partition 2

    Consumer-3 will consume data from partition 3

    When the value of NumberOfConsumers is set to 1 and number of partitions are more than for a topic, then the single consumer will consume data from all the partitions of that topic

    "NumberOfConsumers": "1"

    "Partitions": "0,1,2,3"

    Consumer-0 will consume data from partition 0

    Consumer-0 will consume data from partition 1

    Consumer-0 will consume data from partition 2

    Consumer-0 will consume data from partition 3

    When the value of NumberOfConsumers is less than the number of partitions to subscribe to for a topic, each consumer will assigned to one partition except for the last consumer. The last consumer will consume from the rest of the partitions and therefore might be slower in performance compared to the other consumers.

    "NumberOfConsumers": "3"

    "Partitions": "0,1,2,3"

    Consumer-0 will consume data from partition 0

    Consumer-1 will consume data from partition 1

    Consumer-2 will consume data from partitions 2,3

    When the value of NumberOfConsumers is greater than the number of partitions to subscribe to for a topic, the number of consumers started will be equal to the number of partitions.

    "NumberOfConsumers": "4"

    "Partitions": "0,1,2"

    Consumer-0 will consume data from partition 0

    Consumer-1 will consume data from partition 1

    Consumer-2 will consume data from partition 2

    Consumer-3 will not be started

  • applicationinterface.properties: Another file that needs to be configured inside AI sidecars is the applicationinterface.properties file. It is required for SSL configuration for secure communication between sidecar AI and Kafka.

    This table describes the additional properties that need to be appended to the existing properties present in applicationinterface.properties file of AI sidecars.

    Properties with names beginning with Kafka is used by AI sidecar to communicate with Kafka servers (brokers). Properties with names beginning with AI is used by AI sidecar to communicate with Siebel CRM object managers (session based interactive components).

    Property Description

    TLSEnabledCipherSuites

    Enabled cipher suites. The following cipher suites are supported:

    TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384

    AIEgressPort

    AI sidecar TCP Server Port

    KafkaServers

    List of Kafka brokers with ports, separated by commas> (IMPORTANT: For SSL, please use fully qualified hostname. For example: server12.company.com:9093. Not just server12 or localhost

    SecureAIToKafkaCommunication

    Enter value TRUE or FALSE

    SecureAIEgressServer

    Enter value TRUE or FALSE.To start TLS server on AI

    AIEgressServerKeyStoreType

    Enter the keystore type. For example: JKS

    AIEgressServerKeyStoreName

    Key Store location. For example: Z:\\siebel\\applicationcontainer_external\\siebelcerts\\siebelkeystore.jks>

    AIEgressServerKeyStorePassword

    Key Store encrypted Password. For example: cWwvMzZqOFVlN0grTEQ2M1VpeUNxUjlSelFldDhjWFFzbjRQcWpndnVBSm5oa

    KafkaKeyStoreType

    Keystore type. For example: JKS

    KafkaKeyStoreName

    Key Store location for AI-Kafka communication. For example: Z:\\siebel\\applicationcontainer_external\\siebelcerts\\siebelkeystore.jks>

    KafkaKeyStorePassword

    Key Store encrypted Password. For example: cWwvMzZqOFVlN0grTEQ2M1VpeUNxUjlSelFldDhjWFFzbjRQcWpndn

    KafkaTrustStoreType

    Enter the trust store type. For example: JKS

    KafkaTrustStoreName

    Kafka Trust Store location. For example: Z:\\siebel\\applicationcontainer_external\\siebelcerts\\siebelkeystore.jks>

    KafkaTrustStorePassword

    Trust Store encrypted Password. For example: cWwvMzZqOFVlN0grTEQ2M1VpeUNxUjlSelFldDhjWFFzbjRQcWpndnVBSm5oaUErd

    KafkaPassword

    Kafka user encrypted password. For example: cWwvMzZqOFVlN0gr