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. TheBaseSiebelComponent
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 oneBaseSiebelComponent
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