tibco® offer and price engine

72
TIBCO® Offer and Price Engine Installation and Configuration Guide Version 5.1.0 June 2021 Copyright © 2010-2021. TIBCO Software Inc. All Rights Reserved.

Upload: others

Post on 07-Jan-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TIBCO® Offer and Price Engine

TIBCO® Offer and Price EngineInstallation and Configuration GuideVersion 5.1.0June 2021

Copyright © 2010-2021. TIBCO Software Inc. All Rights Reserved.

Page 2: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

2 | Contents

Contents

Contents 2

About This Product 4

Installation 5Required Third-Party Jars 5

Postinstallation Tasks 8Postinstallation Task 1: Copying Dependencies 9Postinstallation Task 2: Creating the Database 9

Creating a PostgreSQL Database for the Admin User 9

Creating an Oracle Database for the Admin User 10

Creating a PostgreSQL Database for the Catalog User 11

Creating an Oracle Database for the Catalog User 12

Postinstallation Task 3: Creating the TIBCO Enterprise Message Service Channel 13Postinstallation Task 4: Integrating with TIBCO Product and Service Inventory 13Postinstallation Task 5: Configuring the Installation 14

Configuring the Database and Messaging Through Configurator 16

Postinstallation Task 6: Starting or Restarting the Services 41

Docker 42Building a Docker Image Without an Internet Connection 42Copying Files to Docker Context 43Setting Up the .env File 43Building Docker Images 44Preparing Docker Volumes 44Running the Docker Containers 45Extend Docker-Compose Files 46Modifying a Container Time-Zone 47

Page 3: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

3 | Contents

Reading Container Logs 48Troubleshooting Error from Building Docker Images 48

Verifying Installation 50Managing Health and Liveness Endpoints 50

Managing Health Endpoint 50

Managing Ready Endpoint 50

Hawkular Monitoring Support 51

Red Hat Openshift Deployment 57Application Deployment 57

Configuration 60Application Properties 60External Application Logging Configuration 65

Troubleshooting 66

TIBCO Documentation and Support Services 69

Legal and Third-Party Notices 71

Page 4: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

4 | About This Product

About This ProductTIBCO® Offer and Price Engine is a cloud-native, in-memory omnichannel server of offers and prices for digital service providers. It answers requests from a digital service provider's customer-facing channels for offers and prices, subject to business rules such as customer eligibility and product compatibility.

TIBCO Offer and Price Engine is the next generation of, and partially replaces, TIBCO® Fulfillment Order Management. To better align the direction of TIBCO Fulfillment Order Management with market demand, the product’s capabilities have been reorganized into two new products:

 l TIBCO® Order Management

 l TIBCO® Offer and Price Engine

Customers who are currently on maintenance for TIBCO Fulfillment Order Management are entitled to upgrade to both TIBCO Order Management and TIBCO Offer and Price Engine. TIBCO will continue to support TIBCO Fulfillment Order Management, and there is currently no plan to retire TIBCO Fulfillment Order Management. New capabilities will be developed in TIBCO Order Management and TIBCO Offer and Price Engine.

Page 5: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

5 | Installation

Installation

Requirements

 l All Offer and Price Engine microservices configurations must be configured externally.

Downloading and Installing TIBCO Offer and Price Engine

Download the TIBCO Offer and Price Engine 5.1 build from the TIBCO eDelivery. The following project artifacts are downloaded in the OPE_HOME folder.

 l TIB_ope_5.1.0.zip - extract to the OPE folder

 l jdk-11.0.4_linux-x64_bin.tar.gz The following components are present in the TIB_ope_5.1.0.zip file.

 l Docker - Contains files and artifacts to create and run Docker containers for all OPE microservices.

 l database-scripts - Contains Oracle and PostgreSQL database scripts.

 l ems - Contains files related to creation or deletion of queues or topics.

 l externalLib - contains external jars required for all micro services.

 l roles - Contains all the configuration files for all the microservices.

 l Libs - Contains the opeClient jar, which is available for Java customization changes.

 l Ocp - Sample OpenShift deployment files for all OPE microservices.

 l Samples - Sample models, web service request, and response file.

 l Specs - WSDL specification files.

Note: For a complete list of versions and platforms supported, see the TIB_ope_5.1.0_readme.txt file.

Required Third-Party JarsThe following table lists the required third-party jars:

Page 6: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

6 | Installation

Jars Download link

antlr-2.7.7 https://repo1.maven.org/maven2/antlr/antlr/2.7.7/antlr-2.7.7.jar

dom4j-2.1.1 https://repo1.maven.org/maven2/org/dom4j/dom4j/2.1.1/dom4j-2.1.1.jar

jms-2.0 Copy from <EMS_HOME>/lib directory

tibjms.jar Copy from <EMS_HOME>/lib directory

javassist-3.21.0-GA

https://repo1.maven.org/maven2/org/javassist/javassist/3.21.0-GA/javassist-3.21.0-GA.jar

hibernate-commons-annotations-5.0.1.Final

https://repo1.maven.org/maven2/org/hibernate/common/hibernate-commons-annotations/5.0.1.Final/hibernate-commons-annotations-5.0.1.Final.jar

hibernate-core-5.0.12.Final

https://repo1.maven.org/maven2/org/hibernate/hibernate-core/5.0.12.Final/hibernate-core-5.0.12.Final.jar

hibernate-entitymanager-5.0.12.Final

https://repo1.maven.org/maven2/org/hibernate/hibernate-entitymanager/5.0.12.Final/hibernate-entitymanager-5.0.12.Final.jar

hibernate-jpa-2.1-api-1.0.0.Final

https://repo1.maven.org/maven2/org/hibernate/javax/persistence/hibernate-jpa-2.1-api/1.0.0.Final/hibernate-jpa-2.1-api-1.0.0.Final.jar

hibernate-validator-6.0.17.Final

https://repo1.maven.org/maven2/org/hibernate/hibernate-validator/6.0.17.Final/hibernate-validator-6.0.17.Final.jar

ojdbc11 https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc11/21.1.0.0/ojdbc11-21.1.0.0.jar

jboss- https://repo1.maven.org/maven2/org/jboss/logging/jboss-

Page 7: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

7 | Installation

Jars Download link

logging-3.3.2.Final

logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar

Note: When you obtain third-party software or services, it is your responsibility to ensure you understand the license terms associated with such third-party software or services and comply with such terms.

Page 8: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

8 | Postinstallation Tasks     

Postinstallation Tasks      

This section gives an overview of the steps you have to perform in the given order on successful installation of TIBCO Offer and Price Engine.

Recommended Environment Variables Setup

It is a good practice to set the following environment variables where TIBCO Offer and Price Engine is installed:

Environment Variable Value

OPE_HOME $TIBCO_HOME/tibco/ope/5.1

AF_CONFIG_HOME $OPE_HOME/roles/configurator/config

EXTERNAL_LIB_PATH $OPE_ HOME/externalLib

To configure the installed components, complete the following steps:

 1. Postinstallation Task 1: Copying Dependencies

 2. Postinstallation Task 2: Creating the Database

 3. Postinstallation Task 3: Creating the TIBCO Enterprise Message Service Channel

 4. Postinstallation Task 4: Integrating with TIBCO Product and Service Inventory

 5. Postinstallation Task 5: Configuring the Installation

 6. Postinstallation Task 6: Starting or Restarting the Services

Note: Use the HTML documentation to copy code snippets to the XML files.

Page 9: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

9 | Postinstallation Tasks     

Postinstallation Task 1: Copying DependenciesOffer and Price Engine does not include with all the required third-party dependencies. A consolidated copyLib.sh script is provided at $OPE_HOME/roles for all the components.

 1. Run the copyLib.sh script.

 

Postinstallation Task 2: Creating the DatabaseIf this is your first time installing TIBCO Offer and Price Engine, then create the database by running the provided scripts.

Note: To run the SQL scripts, you must have appropriate permission.

TIBCO Offer and Price Engine has the following two types of database:

 l Admin database: for admin database, you can either use Oracle or PostgreSQL. For more information about creating an admin user in the Oracle and PostgreSQL database, see the following topics:

 o Creating a PostgreSQL Database for the Admin User

 o Creating an Oracle Database for the Admin User

 l In-memory database: for in-memory database, you can use Redis or Oracle/PostgreSQL (relational DB).

You have the option to maintain separate in-memory database for Catalog (such as Models). You can choose any combination of supported in-memory database type or you can also choose one database for both Catalog and Admin data.

 o Creating a PostgreSQL Database for Catalog User

 o Creating an Oracle Database for Catalog User

For Redis as a store, no separate in-memory database creation is required.

Creating a PostgreSQL Database for the Admin UserCreate a PostgreSQL database for the Admin User and Default Tenant by configuring and running the following script: $OPE_HOME/database-scripts/postgreSQL/admin/bin/db-

Page 10: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

10 | Postinstallation Tasks     

setup.sh

Procedure

 1. Open postgres_admin_db.properties in a suitable editor and update the following values in the script:

Property Update the Value for

PG_HOST PostgreSQL database host

PGPORT PostgreSQL port

PG_SUPER_USER_NAME PostgreSQL superuser name

PG_SUPER_USER_PASSWORD PostgreSQL superuser password

PG_ADMIN_USER New admin user

PG_ADMIN_PASSWORD Password for the admin user

PG_ADMIN_DATABASE admin database name

PG_ADMIN_SCHEMA admin schema

PG_ADMIN_TABLESPACE admin table space

PG_ADMIN_TABLESPACE_LOCATION admin table space location

 2. Save and close the file.

 3. Run the db-setup.sh script.

 

Creating an Oracle Database for the Admin UserCreate an Oracle database for the admin user by running the provided scripts.

Procedure

Page 11: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

11 | Postinstallation Tasks     

 1. Create the table space by modifying the file to assign proper table space name and location of the file including the .dbf extension in the file $OPE_HOME/database-scripts/oracle/admin/CreateTableSpace.sql.

 2. Create the user and assign the table space by modifying the file $OPE_HOME/database-scripts/oracle/admin/createOPEUser.sql and assign the proper username and password for every user and the table space to the user with proper quota size in the file.

 3. Connect to SQL PLUS as an OPE admin database user. Execute the following SQL files in order:

 a. Execute $OPE_HOME/database-scripts/oracle/admin/database_ddl.sql passing the tablespacename as an input parameter.

For example,

 l SQL> @$OPE_HOME/database-scripts/oracle/admin/database_ddl.sql

<<admintablespacename>>

Creating a PostgreSQL Database for the Catalog UserCreate a PostgreSQL database for the Catalog User and Default Tenant by configuring and running the following script: $OPE_HOME/db/database-scripts/postgreSQL/catalog/bin/db-setup.sh

Procedure

 1. Open postgres_catalog_db.properties in a suitable editor and update the following values in the script:

Property Update the Value for

PG_HOST PostgreSQL database host

PGPORT PostgreSQL port

PG_SUPER_USER_NAME PostgreSQL superuser name

PG_SUPER_USER_PASSWORD PostgreSQL superuser password

Page 12: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

12 | Postinstallation Tasks     

Property Update the Value for

PG_CATALOG_USER New catalog user

PG_CATALOG_PASSWORD Password for the catalog user

PG_CATALOG_DATABASE catalog database name

PG_CATALOG_SCHEMA catalog schema

PG_CATALOG_TABLESPACE catalog table space

PG_CATALOG_TABLESPACE_LOCATION catalog table space location

IS_GCP false

 2. Save and close the file.

 3. Run the db-setup.sh script.

 

Creating an Oracle Database for the Catalog UserCreate an Oracle database for the catalog user by running the provided scripts.

Procedure

 1. Create the table space by modifying the file to assign proper table space name and location of the file including the .dbf extension in the file $OPE_HOME/database-scripts/oracle/catalog/CreateTableSpace.sql.

 2. Create the user and assign the table space by modifying the file $OPE_HOME/database-scripts/oracle/catalog/createCatalogUser.sql and assign the proper username and password for every user and the table space to the user with proper quota size in the file.

 3. Connect to SQL PLUS as an OPE catalog database user. Execute the following SQL files in order:

 a. Execute $OPE_HOME/database-scripts/oracle/catalog/database_ddl.sql passing

Page 13: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

13 | Postinstallation Tasks     

the tablespacename as an input parameter.

For example,

 l SQL> @$OPE_HOME/database-scripts/oracle/catalog/database_ddl.sql

<<catalogtablespacename>>

Postinstallation Task 3: Creating the TIBCO Enterprise Message Service ChannelTo create the TIBCO Enterprise Message Service channels, run the tibemsadmin command.

1. Go to $EMS_HOME/bin and run the following command:

$ tibemsadmin -server tcp://localhost:7222 -user admin -script $OPE_HOME/ems/CreateEMSChannel.txt

Postinstallation Task 4: Integrating with TIBCO Product and Service InventoryTIBCO Offer and Price Engine provides an inbuilt integration with TIBCO Product and Service Inventory. To use this component, in the $OPE_HOME/roles/configurator/standalone/config/ConfigValues_OPES.xml file, configure the following properties within the existing "OPE Extension Configuration" parent category:

Procedure

 1. To enable the integration with TIBCO Product and Service Inventory, set the value of the following property as true.

 2. Set the property value in hostname:port format indicating the server location where TIBCO Product and Service Inventory is deployed.

 3. Provide the TIBCO Product and Service Inventory user with administrator privileges.

Page 14: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

14 | Postinstallation Tasks     

The user name must be in admin@tibco format, where "tibco" is replaced by the actual tenant name.

<ConfValue description="Inventory host name" name="Inventory host name" propname="com.tibco.af.ope.extn.invConf.host" sinceVersion="5.0" visibility="Basic">                <ConfString default="localhost" value="localhost"/>            </ConfValue>            <ConfValue description="Inventory port name" name="Inventory port name" propname="com.tibco.af.ope.extn.invConf.port" sinceVersion="5.0" visibility="Basic">                <ConfString default="8080" value="8085"/>            </ConfValue>            <ConfValue description="Inventory user name" name="Inventory user name" propname="com.tibco.af.ope.extn.invConf.user" sinceVersion="5.0" visibility="Basic">            <ConfString default="admin@tibco" value="admin@tibco"/>            </ConfValue>            

 4. Set to the password corresponding to the TIBCO Product and Service Inventory user. The default password value is admin.

<ConfValue description="Inventory user password" name="Inventory user password" propname="com.tibco.af.ope.extn.invConf.password" sinceVersion="5.0" visibility="Basic">                <ConfString default="admin" value="admin"/>            </ConfValue> 

 

Postinstallation Task 5: Configuring the InstallationConfiguring installation deals with tasks like configuring the database and messaging.

In configDBrepo.properties file of configurator and configuration service, set the following configurations:

 l If you use relational database, then set spring.profiles.active=jdbc

 l If you use Redis, then set spring.profiles.active=native

In application.properties file of configurator and configuration service, set the following configurations:

Page 15: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

15 | Postinstallation Tasks     

 l If you use relational database, then set pluggableCache.storage=Relational

 l If you use Redis, then set pluggableCache.storage=Redis

Also, configure admin database details accordingly in configDB.properties file.

Note: You must create an admin user with tenant id value as TIBCO, as this does not come by default.

For information on how to create a user, see Create and Modify User under "Authentication and Authorization" in TIBCO® Offer and Price Engine User's Guide.

Before running all the services, you have to configure the properties from the following table in the $OPE_HOME/roles/<servicename>/standalone/config/application.properties file.

 

Service Element Value

Configuration Service

server.port 9096

Authorization Service

server.port 9091

configuration.service.url http://localhost:9096

Catalog Services

server.port 9092

configuration.service.url http://localhost:9096

Shopping cart server.port 8091

configuration.service.url http://localhost:9096

offersearchindex service

server.port 8093

configuration.service.url http://localhost:9096

Page 16: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

16 | Postinstallation Tasks     

Service Element Value

OPE server.port 8090

configuration.service.url http://localhost:9096

Configurator service

server.port 9090

Configuring the Database and Messaging Through ConfiguratorProcedure

 1. Go to $OPE_HOME/roles/configurator/standalone/config and update configDBrepo.properties with admin database details.

 2. Go to $OPE_HOME/roles/configurator/standalone/bin and run /start.sh script.

 3. Start Configurator on a compatible browser with the following URL: http://<<IP>>:<<PORT>> and log in to Configurator. The default port is 9090. You can log in with the existing user details that are in the database.Example: username@TENANTID.

Note: You cannot edit configurations from the configurator with the tenant Id value as COMMON, because the COMMON tenant is restricted.

 4. Select the following services from the drop-down menu:

Service Details

Auth service Add the Auth service configurations from the AuthorizationService Configuration Properties

Catalog service Add the Catalog service from the CatalogService ConfigurationProperties

OfferSearchIndexService Add the OfferSearchIndexService configurations from the

Page 17: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

17 | Postinstallation Tasks     

Service Details

OfferSearchIndex Service Configuration Properties

ShoppingCart Service Add the ShoppingCart service configurations from the ShoppingCart Service Configuration Properties

Offer and Price Engine service

Add Offer and Price Engine service configurations from the Offer and Price Engine Service Configuration Properties

Common configuration service

Add the general configurations for all the services from the Common configuration Service Properties

 5. Save all the configurations.

Configuration PropertiesThe following tables list the properties required for configuring the database of Offer and Price Engine services.

Authorization Service Properties

 

Property Name Default Property Value

default.tenant.id TIBCO

logging.config config/logback_auth.xml

auth.superuser.appId auth

auth.superuser.appKey ENC(P2yXphz4OVM=)

Authorization Service General Configurations

 

Page 18: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

18 | Postinstallation Tasks     

Property Name Default Property Value

datasource_driver_class_name

org.postgresql.Driver

datasource_driver_class_name

oracle.jdbc.driver.OracleDriver

datasource.url jdbc:postgresql://localhost:5432/opeadmindb?currentSchema=opeadminschema

datasource.url jdbc:oracle:thin://@localhost:1521/pdb1

datasource.username opeadminuser

datasource.password opeadminuser

hibernate.dialect org.hibernate.dialect.PostgreSQLDialect

hibernate.dialect org.hibernate.dialect.Oracle10gDialect

hibernate_temp_use_jdbc_metadata_defaults

false

hibernate_show_sql false

datasource_initial_size 10

datasource_max_wait 30000

datasource_max_active 100

datasource_max_idle 100

datasource_min_idle 10

datasource.validationQuery

SELECT 1

Authorization Service Database Configurations

Page 19: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

19 | Postinstallation Tasks     

Property Name Default Property Value

datasource.validationQuery

SELECT 1 from dual

datasource.testOnBorrow

true

datasource.validationInterval

5000

 

Property Name Default Property Value

authentication.token.signing.key ENC(nSa0k6lmjPPN8ZA5SO6BpQ==)

authorization.access.token.validity 43200

authorization.refresh.token.validity 2592000

authorized.client.id order-management-client

authorized.client.secret ENC(ggsmFvh5HBbeSD1j+l5Y0rP4qv0rJvEm)

Authentication Token Generation Configuration

 

Property Name Default Property Value

redis.adminHost localhost

redis.adminPort 6379

redis.testOnBorrow true

Redis Data Source Configuration

Page 20: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

20 | Postinstallation Tasks     

Property Name Default Property Value

redis.testOnReturn true

redis.testWhileIdle true

redis.blockedWhenExhausted true

redis.jmxEnabled true

redis.lifo true

redis.maxIdle 64

redis.minIdle 16

redis.maxTotal 64

redis.numTestsPerEvictionRun 5

redis.softMinEvictableIdleTimeMillis 3000

redis.minEvictableIdleTimeMillis 6000

redis.timeBetweenEvictionRunsMillis 3000

 

Catalog Service Properties

Property Name Default Property Value

logging.config config/logback_catalog.xml

isOfferSearchIndexEnabled false

modelPurgeWorkerThreadCount 5

Catalog Engine Configuration

Page 21: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

21 | Postinstallation Tasks     

 

Property Name Default Property Value

com.tibco.catalog.loading.using.ems false

ems.server.url tcp://localhost:7222

com.tibco.tibjms.naming.security_protocol

-

com.tibco.tibjms.naming.ssl_enable_verify_host

-

ems.server.username admin

ems.server.password admin

jndi.connectionFactory GenericConnectionFactory

initial.context.factory com.tibco.tibjms.naming.TibjmsInitialContextFactory

jms.session.transacted true

jms.set.timeout.receive.calls 10000

concurrent.ems.consumers 5

product.catalog.loading.queue tibco.aff.catalog.product.request

price.catalog.loading.queue tibco.aff.catalog.price.request

discount.catalog.loading.queue tibco.aff.catalog.discount.request

rule.catalog.loading.queue tibco.aff.catalog.operulemodel.request

category.catalog.loading.queue tibco.aff.catalog.category.request

com.tibco.fos.catalog.mode OPES

Messaging Configurations

Page 22: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

22 | Postinstallation Tasks     

Property Name Default Property Value

offerSearchProductIndexQueue tibco.opes.offersearch.product

globalCacheCleanNotificationTopic tibco.fos.global.cache.clean.publish

 

Property Name Default Property Value

User Role for submitProductModel Service ROLE_ADMIN

User Role for submitPriceModel Service ROLE_ADMIN

User Role for submitDiscountModel Service ROLE_ADMIN

User Role for submitOfferIdsModel Service ROLE_ADMIN

User Role for submitCategoryModel Service ROLE_ADMIN

User Role for submitRuleModel Service ROLE_ADMIN

User Role for purgeProductModel Service ROLE_ADMIN

User Role for purgePriceModel Service ROLE_ADMIN

User Role for purgeDiscountModel Service ROLE_ADMIN

User Role for purgeCategoryModel Service ROLE_ADMIN

User Role for purgeOfferId Service ROLE_ADMIN

User Role for purgeRuleModel Service ROLE_ADMIN

Authentication Token Signing Key ENC(nSa0k6lmjPPN8ZA5SO6BpQ==)

Application Security Configurations

 

Page 23: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

23 | Postinstallation Tasks     

Property Name Default Property Value

authorization.server.oauth.url http://localhost:9091/oauth/token

authorization.client.id order-management-client

authorization.client.secret order-management-secret

Authentication Server Configuration Properties Used for Swagger UI

 

Property Name Default Property Value

catalog-datasource.driverClassName

org.postgresql.Driver

catalog-datasource.driverClassName

oracle.jdbc.driver.OracleDriver

catalog-datasource.username opecataloguser

catalog-datasource.password opecataloguser

catalog-datasource.url jdbc:postgresql://localhost:5432/opecatalogdb?currentSchema=opecatalogschema

catalog-datasource.url jdbc:oracle:thin:@//localhost:1521/pdb1

catalog-datasource.initializeSize

2

catalog-datasource.maxIdle 11

catalog-datasource.maxActive 12

catalog-datasource.maxWait 10000

catalog- select 1 from dual

Catalog Data Source Configuration

Page 24: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

24 | Postinstallation Tasks     

Property Name Default Property Value

datasource.validationQuery

catalog-datasource.validationQuery

SELECT 1

catalog-datasource.testOnBorrow

false

catalog-datasource.validationInterval

5000

catalog-datasource.testWhileIdle

true

catalog-datasource.timeBetweenEvictionRunsMillis

5000

catalog-datasource.minEvictableIdleTimeMillis

5000

catalog-datasource.numTestsPerEvictionRun

5

catalog-datasource.defaultAutoCommit

false

catalog-datasource.rollbackOnReturn

false

catalog-datasource.commitOnReturn

false

catalog-datasource.customProperty

-

 

Page 25: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

25 | Postinstallation Tasks     

Property Name Default Property Value

redis.catalogHost localhost

redis.catalogPort 6379

redis.testOnBorrow true

redis.testOnReturn true

redis.testWhileIdle true

redis.blockedWhenExhausted true

redis.jmxEnabled true

redis.lifo true

redis.maxIdle 64

redis.minIdle 16

redis.maxTotal 64

redis.numTestsPerEvictionRun 5

redis.softMinEvictableIdleTimeMillis 3000

redis.minEvictableIdleTimeMillis 6000

redis.timeBetweenEvictionRunsMillis 3000

Redis Data Source Configuration

 

Page 26: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

26 | Postinstallation Tasks     

Property Name Default Property Value

com.tibco.af.oms.databaseType postgres

com.tibco.af.oms.databaseType oracle

hibernate-config.dialect org.hibernate.dialect.PostgreSQLDialect

hibernate-config.dialect org.hibernate.dialect.Oracle10gDialect

hibernate-config.show_sql false

Persistence

 

OfferSearchIndexService Properties

Property Name Default Property Value

elasticSearchUrl http://localhost:9200

logging.config config/logback_offersearchindex.xml

com.tibco.af.opes.cacheType.cache.maxNoCategoryCached 0

enableCategoryModelGlobalCache false

categoryCacheExpiryPeriod 30

com.tibco.af.ope.flags.suggest false

supportedTenants default

Engine Configuration

 

Page 27: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

27 | Postinstallation Tasks     

Property Name Default Property Value

emsServerURL tcp://localhost:7222

security_protocol -

ssl_enable_verify_host -

emsServerUsername admin

emsServerPassword admin

jndiConnectionFactory GenericConnectionFactory

initialContextFactory com.tibco.tibjms.naming.TibjmsInitialContextFactory

jmsSessionTransacted true

timeoutMillis 10000

productIndexQueue tibco.opes.offersearch.product

productIndexDeadQueue tibco.opes.offersearch.product.dead

productIndexRedeliveryCount 5

productIndexReceiverCount 1

EMS Configuration

 

Property Name Default Property Value

redis.maxIdle 64

redis.minIdle 16

Redis Data Source Configuration

Page 28: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

28 | Postinstallation Tasks     

Property Name Default Property Value

redis.lifo true

redis.jmxEnabled true

redis.testWhileIdle true

redis.catalogPort 6379

redis.timeBetweenEvictionRunsMillis 3000

redis.catalogHost localhost

redis.softMinEvictableIdleTimeMillis 3000

redis.testOnReturn true

redis.blockedWhenExhausted true

redis.testOnBorrow true

redis.numTestsPerEvictionRun 5

redis.minEvictableIdleTimeMillis 6000

redis.maxTotal 64

 

Property Name Default Property Value

catalog-datasource.driverClassName

org.postgresql.Driver

catalog-datasource.driverClassName

oracle.jdbc.driver.OracleDriver

Catalog Data Source Configuration

Page 29: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

29 | Postinstallation Tasks     

Property Name Default Property Value

catalog-datasource.username opecataloguser

catalog-datasource.password opecataloguser

catalog-datasource.url jdbc:postgresql://localhost:5432/opecatalogdb?currentSchema=opecatalogschema

catalog-datasource.url jdbc:oracle:thin:@//localhost:1521

catalog-datasource.initializeSize

2

catalog-datasource.maxIdle 11

catalog-datasource.maxActive 12

catalog-datasource.maxWait 10000

catalog-datasource.validationQuery

select 1 from dual

catalog-datasource.validationQuery

SELECT 1

catalog-datasource.testOnBorrow

false

catalog-datasource.validationInterval

5000

catalog-datasource.testWhileIdle

true

catalog-datasource.timeBetweenEvictionRunsMillis

5000

Page 30: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

30 | Postinstallation Tasks     

Property Name Default Property Value

catalog-datasource.minEvictableIdleTimeMillis

5000

catalog-datasource.numTestsPerEvictionRun

5

catalog-datasource.defaultAutoCommit

false

catalog-datasource.rollbackOnReturn

false

catalog-datasource.commitOnReturn

false

catalog-datasource.customProperty

-

hibernate-config.dialect org.hibernate.dialect.PostgreSQLDialect

hibernate-config.dialect org.hibernate.dialect.Oracle10gDialect

hibernate-config.show_sql false

 

Property Name Default Property Value

authorization.server.oauth.url http://localhost:9091/oauth/token

authorization.client.id order-management-client

authorization.client.secret order-management-secret

Authentication Server Configuration Properties Used for Swagger UI

 

Page 31: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

31 | Postinstallation Tasks     

ShoppingCart Service Properties

 

Property Name Default Property Value

server.basePath /opes/api/v1

ope.url http://localhost:8090

redisClusterEnabled true

redis.host localhost

redis.port 6379

redis.testOnBorrow true

redis.testOnReturn true

redis.testWhileIdle true

redis.blockedWhenExhausted true

redis.jmxEnabled true

redis.lifo true

redis.maxIdle 64

redis.minIdle 16

redis.maxTotal 64

redis.numTestsPerEvictionRun 5

redis.softMinEvictableIdleTimeMillis 3000

redis.minEvictableIdleTimeMillis 6000

Shopping Cart Redis Configuration

Page 32: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

32 | Postinstallation Tasks     

Property Name Default Property Value

redis.timeBetweenEvictionRunsMillis 3000

 

Property Name Default Property Value

authorization.server.oauth.url http://localhost:9091/oauth/token

authorization.client.id order-management-client

authorization.client.secret order-management-secret

Authentication Server Configuration Properties Used for Swagger UI

 

Offer and Price Engine Service Properties

 

Property Name Default Property Value

server.basePath /opes/api/v1

server.tomcat.uri-encoding UTF-8

cxf.path ${server.basePath}/opeService

springfox.documentation.swagger.v2.path /swagger/v2/api-docs

endpoints.docs.enabled true

endpoints.health.sensitive false

OPE Initial Configuration

 

Page 33: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

33 | Postinstallation Tasks     

Property Name Default Property Value

spring.main.allow-bean-definition-overriding true

com.tibco.fos.model.cacheType.cache.maxNoProductcached 1000

spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS true

enableProductModelGlobalCache false

productCacheExpiryPeriod 30

com.tibco.af.opes.cacheType.cache.maxNoPriceCached 1000

enablePriceModelGlobalCache false

priceCacheExpiryPeriod 30

com.tibco.af.opes.cacheType.cache.maxNoDiscountCached 1000

enableDiscountModelGlobalCache false

discountCacheExpiryPeriod 30

com.tibco.af.opes.cacheType.cache.maxNoRuleCached 1000

enableRuleModelGlobalCache false

ruleCacheExpiryPeriod 30

com.tibco.af.opes.cacheType.cache.maxNoCategoryCached 1000

enableCategoryModelGlobalCache false

categoryCacheExpiryPeriod 30

com.tibco.af.opes.cacheType.cache.maxNoOfferIdsCached 1000

Catalog Store Configuration for OPES

Page 34: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

34 | Postinstallation Tasks     

Property Name Default Property Value

enableOfferIdsModelGlobalCache false

offerIdsCacheExpiryPeriod 30

com.tibco.af.opes.cacheType.cache.maxNoFilterCached 1000

enableFilterProductGlobalCache false

filterProductCacheExpiryPeriod 30

com.tibco.af.opes.cacheType.cache.maxNoSegmentCached 1000

enableSegmentProductGlobalCache false

segmentProductCacheExpiryPeriod 30

com.tibco.fos.model.cacheType.cache.maxNoTopLevelProductsCached 1000

enableTopLevelProductsGlobalCache false

topLevelProductsCacheExpiryPeriod 30

 

Property Name Default Property Value

redis.maxIdle 64

redis.minIdle 16

redis.lifo true

redis.jmxEnabled true

Redis Data Source Configuration

Page 35: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

35 | Postinstallation Tasks     

Property Name Default Property Value

redis.testWhileIdle true

redis.catalogPort 6379

redis.timeBetweenEvictionRunsMillis 3000

redis.catalogHost localhost

redis.softMinEvictableIdleTimeMillis 3000

redis.testOnReturn true

redis.blockedWhenExhausted true

redis.testOnBorrow true

redis.numTestsPerEvictionRun 5

redis.minEvictableIdleTimeMillis 6000

redis.maxTotal 64

 

Property Name Default Property Value

tnt##com.tibco.af.ope.flags.chkrelevantoludfs false

tnt##com.tibco.af.ope.flags.chkvalidoludfs false

tnt##com.tibco.af.ope.flags.chkvalidlinkudfs false

tnt##com.tibco.af.ope.flags.chkrecordtypevalid false

tnt##com.tibco.af.ope.flags.chkrecordinventory false

OPE Integration Configuration

Page 36: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

36 | Postinstallation Tasks     

Property Name Default Property Value

tnt##com.tibco.af.ope.flags.setnorecordstatustoactive false

tnt##com.tibco.af.ope.flags.validateudfdatatype false

tnt##com.tibco.af.ope.flags.validateudfrange false

tnt##com.tibco.af.ope.flags.validateudfregex false

tnt##com.tibco.af.ope.flags.regexcurrency [0-9]*.?[0-9]{0,2}

tnt##com.tibco.af.ope.flags.regexdigits [0-9]*.?[0-9]*

tnt##com.tibco.af.ope.flags.regexdate [0-3]?[0-9]/[0-1][0-9]/[1-2][0-9]{3}

tnt##com.tibco.af.ope.flags.regextime [0-2]?[0-9]:[0-5][0-9]

tnt##com.tibco.af.ope.flags.regexboolean TRUE|FALSE

tnt##com.tibco.af.ope.flags.udfignorelist -

tnt##com.tibco.af.ope.flags.reportAllOfferValidations true

tnt##com.tibco.af.ope.cacheType.cache.lazyLoadProducts true

tnt##com.tibco.af.ope.flags.filteroutduplicates false

tnt##com.tibco.af.ope.flags.enable.page false

tnt##com.tibco.af.ope.flags.allow.empty.response false

tnt##com.tibco.af.ope.flags.ineligible.reason false

tnt##com.tibco.af.ope.flags.ineligible.price.reason false

tnt##com.tibco.af.ope.log.processingtime false

 

Page 37: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

37 | Postinstallation Tasks     

Property Name Default Property Value

com.tibco.af.ope.ope.ext.classes false

Custom class names for the ope extension

 

Property Name Default Property Value

tnt##com.tibco.af.ope.extn.enableRuleBasedEligibilityEvaluation false

tnt##com.tibco.af.ope.extn.enableRuleBasedIneligibilityEvaluation false

tnt##com.tibco.af.ope.extn.enableRuleBasedIncompatibilityEvaluation false

tnt##com.tibco.af.ope.extn.missingRuleEntityDefault false

com.tibco.af.ope.extn.invConf.host localhost

com.tibco.af.ope.extn.invConf.port 8080

com.tibco.af.ope.extn.invConf.user admin@tibco

com.tibco.af.ope.extn.invConf.password admin

OPE Extension Configuration

 

Property Name Default Property Value

catalog-datasource.driverClassName

org.postgresql.Driver

catalog-datasource.driverClassName

oracle.jdbc.driver.OracleDriver

Catalog Data Source Configuration

Page 38: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

38 | Postinstallation Tasks     

Property Name Default Property Value

catalog-datasource.username opecataloguser

catalog-datasource.password opecataloguser

catalog-datasource.url jdbc:postgresql://localhost:5432/opecatalogdb?currentSchema=opecatalogschema

catalog-datasource.url jdbc:oracle:thin:@//localhost:1521/pdb1

catalog-datasource.initializeSize

2

catalog-datasource.maxIdle 11

catalog-datasource.maxActive 12

catalog-datasource.maxWait 10000

catalog-datasource.validationQuery

select 1 from dual

catalog-datasource.validationQuery

SELECT 1

catalog-datasource.testOnBorrow

false

catalog-datasource.validationInterval

5000

catalog-datasource.testWhileIdle

true

catalog-datasource.timeBetweenEvictionRunsMillis

5000

Page 39: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

39 | Postinstallation Tasks     

Property Name Default Property Value

catalog-datasource.minEvictableIdleTimeMillis

5000

catalog-datasource.numTestsPerEvictionRun

5

catalog-datasource.defaultAutoCommit

false

catalog-datasource.rollbackOnReturn

false

catalog-datasource.commitOnReturn

false

catalog-datasource.customProperty

-

 

Property Name Default Property Value

emsServerURL tcp://localhost:7222

security_protocol -

ssl_enable_verify_host -

emsServerUsername admin

emsServerPassword admin

jndiConnectionFactory TopicConnectionFactory

Messaging Configurations

Page 40: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

40 | Postinstallation Tasks     

Property Name Default Property Value

initialContextFactory com.tibco.tibjms.naming.TibjmsInitialContextFactory

jmsSessionTransacted true

timeoutMillis 10000

globalCacheCleanupTopicName tibco.fos.global.cache.clean.publish

 

Property Name Default Property Value

authorization.server.oauth.url http://localhost:9091/oauth/token

authorization.client.id order-management-client

authorization.client.secret order-management-secret

Authentication Server Configuration Properties Used for Swagger UI

 

Property Name Default Property Value

authentication.token.signing.key ENC(nSa0k6lmjPPN8ZA5SO6BpQ==)

Application Security Configurations

 

Common configuration Service Properties

Property Name Default Property Value

default.tenant.id TIBCO

General Configurations

Page 41: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

41 | Postinstallation Tasks     

Property Name Default Property Value

enableSecureAPI true

cmPluggableCache true

amPluggableCache true

Postinstallation Task 6: Starting or Restarting the ServicesStart or Restart all the services:

 1. To start or restart the Configurator service, navigate to the $OPE_HOME/roles/configurator/standalone/bin directory and run $./start.sh script.

 2. To start or restart the configuration service, navigate to the $OPE_HOME/roles/configuration-service/standalone/bin directory and run $./start.sh script.

 3. To start or restart all other services, navigate to the $OPE_HOME/roles/<service-name>/standalone/config directory and update application.properties for configuration.service.url. Then start the service from $OPE_HOME/roles/<service-name>/standalone/bin by running $./start.sh script.

Note: Before starting offer search index service, make sure that the catalog service is up and isOfferSearchIndexEnabled flag value is set as true.

Page 42: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

42 | Docker

Docker microservices are containerized and run on hosts that support the Docker environment. The Docker files are delivered as part of the TIB_ope_5.1.0.zip. You can build images using those Docker files and then run them as containers. You can see all the Docker files in respective container folders. You must have an Internet connection to download the base Docker image.

You need to take care of the instructions under the comment "REQUIRED FILES TO BUILD THIS IMAGE" in each Docker file before building the Docker images.

Note: Some of the microservices are optional and you can choose not to run them in case they are not suitable for your use cases.

 l Authorization - These microservices are optional and you can choose to not deploy these in case you do not need authorization or authentication for your deployment, or have an external tool managing this functionality.

 l OfferSearchIndex Service - You can choose not to deploy this service if you do not want to connect to Elasticsearch with your Offer and Price Engine deployment.

 

Building a Docker Image Without an Internet ConnectionIn $OPE_HOME/docker/base/1.0/Dockerfile, the "FROM alpine" instruction initializes a new build stage and sets the base image for subsequent instructions. You can accept the default base image, which is the alpine image from the Docker's public repository, or you can change the instruction and provide a valid source for a different base image. You can pull a valid base image from the Docker's public repository or you can create your base image, push it to a public or private Docker registry, and then use the newly created image as a base image. For more information about creating your base Docker image, see the Docker documentation related to Creating a Base Image.

Page 43: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

43 | Docker

In $OPE_HOME/docker/base/1.0/Dockerfile, you can find instructions for downloading wget and unzip utilities. These instructions can be modified to pick up the installers of the utilities from the Docker context and install them in the image.

In this case, the Docker context for $OPE_HOME/docker/base/1.0/Dockerfile is $OPE_HOME/docker/base/1.0

Copying Files to Docker ContextThe term Docker Context refers to the directory where the Docker file is available.

You must copy files to the Docker context before building the required Docker images.

Procedure

 1. Install Docker 19.03.13 (or later), Docker Compose 1.24.0 (or later), and TIBCO Offer and Price Engine on the host machine.

 2. Copy the jdk 11 64-bit tar file, for example jdk-11*_linux-x64_bin.tar.gz, to the $OPE_HOME/docker/ base/1.0 directory.

 3. Run the $OPE_HOME/roles/<service-name>/standalone/bin/copyLib.sh script. For more information, see the Postinstallation Task 1: Copying Dependencies topic.

 4. Go to the $OPE_HOME/docker directory and runrun the copy-required-files.sh script.

This shell script copies all the required directories from OPE_HOME to a specific Docker context. These files are required to build Docker images. This script works on OPE_HOME set in the environment or takes the value of OPE_HOME as user input.

 

Setting Up the .env FileSet the required variables, which vary according to the user's environment. All of these variables must be changed according to the user's environment.

All of these variables are in the .env file located in the $OPE_HOME/docker directory.

 

Page 44: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

44 | Docker

Building Docker ImagesAfter the required files are copied to the Docker context, you can build the Docker images. Use Docker Compose for building the Docker images.

Procedure

 1. Go to the $OPE_HOME/docker directory and run the following command:docker-compose --file docker-compose-build-complete.yml build

 2. Execute the following command to check the images that are created:$] docker images

Preparing Docker VolumesA Docker volume (commonly referred as data volume) is a specially-designated directory within one or more containers that bypasses the Union File System. Docker volumes provide several useful features for persistent and shared data. Docker volumes can be shared and reused among containers.

Docker volumes persist even if the container itself is deleted. You can create a Docker volume container from an existing image. The volume container has the mapping of the host's directory to the container. For more information, see the Docker documentation on volume.

Before you start running the Docker containers, you are required to have the following directories on the host machine:

 

 l The $OPE_HOME/roles/configurator/standalone/config directory. This directory contains all the configuration files required by the Configurator server; this directory is mapped as a data volume inside the Docker containers.

Note: All the other containers refer to the database to access any of the property files.

 l A logs directory that you must create.

Procedure

Page 45: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

45 | Docker

 l Create a logs directory where logs from all the containers are available on your host machine. For example, $OPE_HOME/logs.

 

Note: Since the Docker container reads and writes in the two directories mentioned, it is mandatory to give read and write privilege to others on the host machine on the directories where you are creating volumes. Since Docker is writing to the existing files in the volume, each file in the volume must have read and write privileges. For example:

$] chmod o+rw -R$OPE_HOME/roles/configurator/standalone/config

Running the Docker ContainersAfter building the Docker images, you can run the images as containers to start containerized TIBCO Offer and Price Engine.

Start the Docker container by using the specific docker compose file.

Procedure

 1. Start the Configurator Docker container.

$> docker-compose --file docker-compose-run-configurator.yml up -d

 2. Access the configurator UI and configure according to your environment and requirement.

 3. Start the configuration service, which is used by all Offer and Price Engine services to load each service-specific configuration.

$> docker-compose --file docker-compose-run-configuration-service.yml up -d

Page 46: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

46 | Docker

 4. Start the authorization service to fetch the token, which is then used across all Offer and Price Engine services to authorize and authenticate the user.

$> docker-compose --file docker-compose-run-authorization-service.yml up -d

You can start any of the Docker services by using the following compose commands:

 a. Start the catalog service container.

$> docker-compose --file docker-compose-run-catalog-service.yml up -d

 b. Start Offer and Price Engine service container.

$> docker-compose --file  docker-compose-run-ope.yml up -d

 c. Start shopping cart service container.

$> docker-compose --file  docker-compose-run-shoppingcart.yml up -d

 d. Start offerSearchIndex service container.

$> docker-compose --file  docker-compose-run-offersearchindex-service.yml up -d

 5. Execute "$] docker ps -a" to check the containers that are started.

Extend Docker-Compose FilesYou can extend the Docker-Compose files provided as part of the TIBCO Offer and Price Engine installation.

This is mainly done to handle different environments. For example, this is done in case you required separate parameters for the containers based on your environment, such as a testing or production environment.

Page 47: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

47 | Docker

 

The suggested way to do this is to have multiple Docker compose files for each environment. For more information, see the Docker documentation on Multiple Compose Files.

Modifying a Container Time-ZoneThe default time-zone for any Docker container is UTC. In the case where you want the Docker container's time-zone to be in sync with the host machine's time-zone, you can apply these changes either in the Docker file or in the Docker-Compose YAML file.

Docker containers always use the system clock of the host machine but it sets its time-zone as UTC. The following steps are an example of changing time zone for an Order Management Server container.

Procedure

 l You can modify a container's time zone with either of the following two ways:

 o This approach can be applied when you have not created any images. Open the $OPE_HOME/ docker/ope/5.1.0/Dockerfile in a suitable editor and modify the file as shown:

FROM tibco/base:1.0COPY ope $OPE_HOME/ope ENV TZ-Asia/KolkataRUN ln -snf /user/share/zoneinfo/$TZ etc/localtime "echo $TZ > /etc/timezone RUN chmod -R a+x $OPE_HOME/ope/standalone/bin && \chgrp -R 0 $OPE_HOME/ope && \ chmod -R g=u $OPE_HOME/opeENTRYPOINT ["/opt/tibco/ope/5.1.0/ope/standalone/bin/start.sh", "-- run=FG"]EXPOSE 8090

In this example, the following has been modified:ENV TZ=Asia/KolkataRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ /etc/timezoneHere youhave to change the value of the TZvariable as per your time zone (in the example, the time zone is Asia/Kolkata).

 o This approach can be applied if your images are already created and now you want to change the container time zone at runtime. Open $OPE_

Page 48: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

48 | Docker

HOME/docker/docker-compose-run-ope- service.yml in a suitable editor and modify the file as shown:

version: "3" services:ope:image: "tibco/ope:${OPE_VERSION_TAG}" ports:"${HOST_OPE_SERVICE_PORT}:8090"volumes:"${HOST_LOG_ROOT_LOCATION_DIR_PATH}:/opt/tibco/ope/5.1.0/ope/standalone/logs"environment:- "TZ=Asia/Kolkata"command: sh -c "ln -snf/user/share/zoneinfor/$TZ /etc/localtime && echo $TZ> /etc/timezone"

In this example, the following has been modified:environment:- "TZ=Asia/Kolkata"

command: >sh -c "ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/ timezone"

Here youhave to change the value of the TZvariable as per your time zone (in the example, the time zone is Asia/Kolkata).

Reading Container LogsWhen all the desired containers are up and running, it is best practice to check the logs for all the running services.

Logs for all the started and exited containers are available at the path you have mentioned for the LOG_ROOT_LOCATION_DIR_PATH variable in the .env file. So all the logs are preserved on your host machine.

 

Troubleshooting Error from Building Docker ImagesThe following error might occur when building Docker images:

rm: cannot remove '/home/tibuser/tibco/ope/5.1.0/configurator/standalone/config/ backup': Directory not empty

Page 49: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

49 | Docker

Perform the following steps to troubleshoot this error:

Procedure

 1. Run the following command on the host machine:

$] docker info | grep 'Storage Driver' | awk -F':' '{print $2}' overlay$]

 2. If the output is overlay, then apply the following workaround:

 a. Stop the Docker engine.

 b. Changed DOCKER_OPTS to set storage-driver value to device mapper, edit /etc/docker/ daemon.json, and add "storage-driver" : "devicemapper" at the end of existing keys.

 c. Start the Docker engine.

Note:  You can lose the existing Docker images due to the above change.

 d. Verify the fix by running the following command:

$] docker info | grep 'Storage Driver' | awk -F':' '{print $2}' devicemapper$]

 

Page 50: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

50 | Verifying Installation

Verifying InstallationMake sure the required TIBCO OPE microservices have been installed and are running fine without any error.

Managing Health and Liveness Endpoints TIBCO Offer and Price Engine supports the following health and liveness endpoints to check the overall health of the system and generate the response accordingly:

 l Health Endpoint

 l Ready Endpoint

The HTTP response code numbers are the same for both the endpoints:

 l On Success - 200 (OK)

 l On Failure - 503 (Service unavailability)

Managing Health EndpointThe custom Health Endpoint provides information about the overall health status of the application resources like the Elastic search database and disk space. http://<host>:<port>/management/health

{"status":"UP"}

Managing Ready EndpointThe Ready Endpoint provides the Offer and Price Engine server liveness status. It also checks if the server is ready to accept the external requests.

http://<host>:<port>/management/ready

{"is_ope_ready":"true"}

Page 51: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

51 | Verifying Installation

Hawkular Monitoring SupportTIBCO Offer and Price Engine provides support for exposing the application bean JMX endpoints on the HTTP protocol by using the Jolokia library.

Jolokia is a third-party bridge released under Apache license and enables exposing application JMX information on HTTP protocol. An OpenShift monitoring application such as Hawkular uses this information to display the additional metrics as shown in the following image:

Page 52: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

52 | Verifying Installation

For an example of an OPE deployment yaml file with Jolokia configuration, see Application Deployment

Hawkular Monitoring SupportThe TIBCO Offer and Price Engine provides support for exposing the application bean JMX endpoints on the HTTP protocol, by using Jolokia bridge.

Jolokia is a third-party bridge released under Apache license and enables exposing application JMX information on HTTP protocol. An OpenShift monitoring application such as Hawkular uses this information to display the additional metrics as shown in the

Page 53: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

53 | Verifying Installation

following image:

An example of an Offer and Price Engine deployment YAML file with Jolokia configuration:

Page 54: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

54 | Verifying Installation

ope_openshift.yaml

apiVersion: v1kind: Listitems:- apiVersion: v1  kind: Service  metadata:    name: ope  spec:    ports:    - port: 8090      targetPort: 8090      name: jolokia    selector:      deploymentconfig: ope- apiVersion: v1  kind: DeploymentConfig  metadata:    name: ope    annotations:      hawkular-openshift-agent: ope-jolokia  spec:    replicas: 1    selector:      deploymentconfig: ope    strategy:      # We set the type of strategy to Recreate, which means that it will be scaled down prior to being scaled up      type: Recreate    template:      metadata:        labels:          deploymentconfig: ope      spec:        containers:        - image: tibco/ope:5.1.0          name: ope          ports:          - name: jolokia            containerPort: 8090          - name: http            containerPort: 8090          env:          - name: configuration.service.url            value: http://configuration.192.168.99.100.nip.io/          volumes:            - name: hawkular-openshift-agent              configMap:                name: ope-jolokia          readinessProbe:              failureThreshold: 3

Page 55: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

55 | Verifying Installation

              httpGet:                path: /actuator/ready                port: 8090                scheme: HTTP              periodSeconds: 300              successThreshold: 1              timeoutSeconds: 3          livenessProbe:              failureThreshold: 3              httpGet:                path: /actuator/health                port: 8090                scheme: HTTP              periodSeconds: 300              successThreshold: 1              timeoutSeconds: 3          resources:            limits:              cpu: '2'              memory: 2Gi            requests:              cpu: '1'              memory: 1Gi- apiVersion: v1  kind: ConfigMap  metadata:    name: ope-jolokia    labels:      name: ope-jolokia  data:    hawkular-openshift-agent: |      endpoints:      - type: jolokia        protocol: http        port: 9090        path: /actuator/jolokia/        collection_interval: 15s        metrics:        # int data value        - name: java.lang:type=Memory#ObjectPendingFinalizationCount          type: gauge          description: Object Pending Finalization Count        # long data value        - name: java.lang:type=OperatingSystem#OpenFileDescriptorCount          type: gauge          description: Open File Descriptor Count        # double data value        - name: java.lang:type=OperatingSystem#ProcessCpuLoad          type: gauge          description: Process CPU Load        # composite data value        - name: java.lang:type=Memory#HeapMemoryUsage#used

Page 56: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

56 | Verifying Installation

          type: gauge          description: Heap Memory Used          units: B        # boolean value        - name: java.lang:type=Memory#Verbose          type: gauge          description: Memory Verbose Mode- apiVersion: v1  kind: Route  metadata:    name: ope  spec:    to:      kind: Service      name: ope- apiVersion: autoscaling/v1  kind: HorizontalPodAutoscaler  metadata:    name: ope  spec:    scaleTargetRef:      kind: DeploymentConfig       name: ope       apiVersion: v1       subresource: scale    minReplicas: 1     maxReplicas: 3     targetCPUUtilizationPercentage: 5 

Page 57: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

57 | Red Hat Openshift Deployment

Red Hat Openshift DeploymentTIBCO Offer and Price Engine containers can be deployed on Red Hat OpenShift 3.10 PaaS environment. The following topics describe TIBCO Offer and Price Engine compatibility with Red Hat OpenShift 3.10 deployment.

Make sure that your OpenShift environment is up and running and has access to its internal Docker registry.

Application Deployment The following is a sample template for deploying a new TIBCO Offer and Price Engine application on OpenShift. Sample OpenShift configuration files for deploying all the OPE microservices are present at the following installation location: <OPE_HOME>/ocp/

ope_openshift.yaml

apiVersion: v1kind: Listitems:- apiVersion: v1  kind: Service  metadata:    name: ope  spec:    ports:    - port: 8090      targetPort: 8090      name: jolokia    selector:      deploymentconfig: ope- apiVersion: v1  kind: DeploymentConfig  metadata:    name: ope    annotations:      hawkular-openshift-agent: ope-jolokia  spec:    replicas: 1    selector:      deploymentconfig: ope    strategy:      # We set the type of strategy to Recreate, which means that it will be scaled down prior to being scaled up

Page 58: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

58 | Red Hat Openshift Deployment

      type: Recreate    template:      metadata:        labels:          deploymentconfig: ope      spec:        containers:        - image: tibco/ope:5.1.0          name: ope          ports:          - name: jolokia            containerPort: 8090          - name: http            containerPort: 8090          env:          - name: configuration.service.url            value: http://configuration.192.168.99.100.nip.io/          volumes:            - name: hawkular-openshift-agent              configMap:                name: ope-jolokia          readinessProbe:              failureThreshold: 3              httpGet:                path: /actuator/ready                port: 8090                scheme: HTTP              periodSeconds: 300              successThreshold: 1              timeoutSeconds: 3          livenessProbe:              failureThreshold: 3              httpGet:                path: /actuator/health                port: 8090                scheme: HTTP              periodSeconds: 300              successThreshold: 1              timeoutSeconds: 3          resources:            limits:              cpu: '2'              memory: 2Gi            requests:              cpu: '1'              memory: 1Gi- apiVersion: v1  kind: ConfigMap  metadata:    name: ope-jolokia    labels:      name: ope-jolokia

Page 59: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

59 | Red Hat Openshift Deployment

  data:    hawkular-openshift-agent: |      endpoints:      - type: jolokia        protocol: http        port: 9090        path: /actuator/jolokia/        collection_interval: 15s        metrics:        # int data value        - name: java.lang:type=Memory#ObjectPendingFinalizationCount          type: gauge          description: Object Pending Finalization Count        # long data value        - name: java.lang:type=OperatingSystem#OpenFileDescriptorCount          type: gauge          description: Open File Descriptor Count        # double data value        - name: java.lang:type=OperatingSystem#ProcessCpuLoad          type: gauge          description: Process CPU Load        # composite data value        - name: java.lang:type=Memory#HeapMemoryUsage#used          type: gauge          description: Heap Memory Used          units: B        # boolean value        - name: java.lang:type=Memory#Verbose          type: gauge          description: Memory Verbose Mode- apiVersion: v1  kind: Route  metadata:    name: ope  spec:    to:      kind: Service      name: ope- apiVersion: autoscaling/v1  kind: HorizontalPodAutoscaler  metadata:    name: ope  spec:    scaleTargetRef:      kind: DeploymentConfig       name: ope       apiVersion: v1       subresource: scale    minReplicas: 1     maxReplicas: 3     targetCPUUtilizationPercentage: 5 

Page 60: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

60 | Configuration

Configuration

Application Properties

Key Description

com.tibco.af.ope.flags.chkrelevantoludfs Validates User Defined Fields attached to the product that are defined as input characteristics of the product. The default value is false.

com.tibco.af.ope.flags.chkvalidoludfs Validates mandatory characteristics attached to the product model that are found in the corresponding product instance as User Defined Fields in the request. The default value is false.

com.tibco.af.ope.flags.chkvalidlinkudfs Validates mandatory linking User

Offer and Price Engine Integration Configuration

Page 61: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

61 | Configuration

Key Description

Defined Fields that are attached as User Defined Fields to the product in the order request. The default is false.

com.tibco.af.ope.flags.chkrecordtypevalid Checks if the RecordType is valid. The default is false.

com.tibco.af.ope.extn.enableRuleBasedEligibilityEvaluation Enables the Eligible rule for Eligible products. The default value is false.

com.tibco.af.ope.extn.enableRuleBasedIneligibilityEvaluation Enables the InEligible rule for InEligible products. The default value is false.

com.tibco.af.ope.extn.enableRuleBasedIncompatibilityEvaluation Enables the Incompatible rule for Incompatible products. The default value is false.

com.tibco.af.ope.extn.missingRuleEntityDefault Used for missing

Page 62: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

62 | Configuration

Key Description

rule entity. The default value is false.

com.tibco.af.ope.extn.invConf.host The default value is localhost.

com.tibco.af.ope.extn.invConf.port The default value is 8080.

com.tibco.af.ope.extn.invConf.user The default value is admin@tibco.

com.tibco.af.ope.extn.invConf.password The default value is admin.

com.tibco.af.ope.flags.setnorecordstatustoactive Sets no RecordStatus to active. The default value is false.

com.tibco.af.ope.flags.validateudfdatatype Validates the data types for orderline User Defined Fields. The default is false.

com.tibco.af.ope.flags.validateudfrange Validates that the orderline User Defined Fields are within the specified range specified.

Page 63: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

63 | Configuration

Key Description

The default is false.

com.tibco.af.ope.flags.validateudfregex Validates that the orderline User Defined Fields have the values per the regex. The default is false.

com.tibco.af.ope.flags.regexcurrency The regular expression for currency. The default value is [0-9]*.?[0-9]*.

com.tibco.af.ope.flags.regexdigits The regular expression for digits. The default value is [0-9]*.?[0-9]*.

com.tibco.af.ope.flags.regexdate The regular expression for date. The default value is [0-3]?[0-9]/[0-1][0-9]/[1-2][0-9]{3}.

com.tibco.af.ope.flags.regextime The regular expression for time. The default value is [0-2]?[0-9]:[0-5]

Page 64: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

64 | Configuration

Key Description

[0-9].

com.tibco.af.ope.flags.regexboolean The regular expression for Boolean. The default value is TRUE|FALSE.

com.tibco.af.ope.flags.udfignorelist The User Defined Fields in this property are not shown as incompatible if they are in the same order:

EPMR_ACTION_PROVIDE

EPMR_ACTION_UPDATE

EPMR_ACTION_CEASE

EPMR_ACTION_WITHDRAW

COMPENSATE_PROVIDE

COMPENSATE_UPDATE

COMPENSATE_CEASE

MODIFICATION_IDENTIFYING_ATTR

Page 65: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

65 | Configuration

External Application Logging ConfigurationOffer and Price Engine logging can be configured using the environmental variable CONSOLE_LEVEL to specify the logging level.

Also, to configure the logging level through log4j2.xml file under config, you can also configure the logging level using the environmental variable CONSOLE_LEVEL.

You can set the variable and its values such as shown in the following example,

Variable Name: CONSOLE_LEVEL

Valid Values: ALL / DEBUG / ERROR / FATAL / INFO / OFF / TRACE / WARN

Default Value: ERROR

Page 66: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

66 | Troubleshooting

TroubleshootingThe following section describes troubleshooting information for TIBCO Offer and Price Engine.

Error Solution

ERROR: for elasticsearch Cannot start service elasticsearch:

OCI runtime create failed: container_linux.go:344:

starting container process caused "process_linux.go:424:

container init caused \"rootfs_linux.go:58: mounting \\\" to

rootfs \\\"/var/lib/docker/devicemapper/mnt/

2bf96ca7365c66c9e5f4a3a69a23c23eb5a

4b4f721c4b06c20db626fc7e49e63/

rootfs s and is the expected type

ERROR: for elasticsearch Cannot start service elasticsearch:

OCI runtime create failed: container_linux.go:344: starting

container process caused "process_linux.go:424: container

init caused \"rootfs_linux.go:58: mounting \\\" to rootfs \\\"/var/lib/docker/devicemapper/mnt/

2bf96ca7365c66c9e5f4a3a69a23c23eb5a4

b4f721c4b06c20db626fc7e49e63

/rootfs\\\" at \\\"/var/lib/docker/devicemapper/mnt/

2bf96ca7365c66c9e5f4a3a69a23c23eb5a

Check if the specified host path exists and is the expected type.

Create Elastic directory and copy the elasticsearch.yml from samples under Elastic directory.

Also give 777 privileges on the Elastic directory:

sudo docker-compose --file docker-compose.yml up elasticsearch

Page 67: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

67 | Troubleshooting

Error Solution

4b4f721c4b06c20db626fc7e49e63/

rootfs/usr/share/elasticsearch/config/elasticsearch.yml\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory

onto a file (or vice-versa)? Check if the specified host path

exists and is the expected type

ERROR: Encountered errors while bringing up the project.

ERROR: Encountered errors while bringing up the project.

 

 

elasticsearch | [2019-02-07T18:55:44,689][INFO ]

[o.e.b.BootstrapChecks ] [es01] bound

or publishing to a non-loopback address, enforcing bootstrap checks

elasticsearch | ERROR: [2] bootstrap checks failed

elasticsearch | [1]: initial heap size [536870912] not equal to

maximum heap size [2634022912]; this can cause resize pauses

and prevents mlockall from locking the entire heap

elasticsearch | [2]: max virtual memory

areas vm.max_map_count [65530] is too low, increase to at least [262144]

 

Run the command:

sudo sysctl -w vm.max_map_count=262144

 

Page 68: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

68 | Troubleshooting

Error Solution

 

Creating elasticsearch ...

Creating elasticsearch ... error

ERROR: for elasticsearch Cannot start service elasticsearch:

driver failed programming external connectivity on endpoint elasticsearch (447e4dcea1af447021e29cbaafe1c8

7ce08c5f8bfa8063e5faa8fa40eedd20c0):

(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9300 -j DNAT --to-destination 172.20.0.2:9300 ! -i br-b99ab24b2e0e: iptables: error

(exit status 1))

 

Enable firewall where Elastic Search are deployed, and open the ports needed:

firewall-cmd --zone=work --add-port=9200/tcp --permanent

Page 69: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

69 | TIBCO Documentation and Support Services

TIBCO Documentation and Support ServicesFor information about this product, you can read the documentation, contact TIBCO Support, and join TIBCO Community.

How to Access TIBCO Documentation

Documentation for TIBCO products is available on the TIBCO Product Documentation website, mainly in HTML and PDF formats.

The TIBCO Product Documentation website is updated frequently and is more current than any other documentation included with the product.

Product-Specific Documentation

The following documentation for this product is available on the TIBCO® Offer and Price Engine documentation page:

 l TIBCO® Offer and Price Engine Release Notes

 l TIBCO® Offer and Price Engine Installation and Configuration Guide

 l TIBCO® Offer and Price Engine Concepts Guide

 l TIBCO® Offer and Price Engine User's Guide

 l TIBCO® Offer and Price Engine Web services Guide

 l TIBCO® Offer and Price Engine Security Guidelines

How to Contact TIBCO Support

Get an overview of TIBCO Support. You can contact TIBCO Support in the following ways:

 l For accessing the Support Knowledge Base and getting personalized content about products you are interested in, visit the TIBCO Support website.

 l For creating a Support case, you must have a valid maintenance or support contract with TIBCO. You also need a user name and password to log in to TIBCO Support website. If you do not have a user name, you can request one by clicking Register on the website.

Page 70: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

70 | TIBCO Documentation and Support Services

How to Join TIBCO Community

TIBCO Community is the official channel for TIBCO customers, partners, and employee subject matter experts to share and access their collective experience. TIBCO Community offers access to Q&A forums, product wikis, and best practices. It also offers access to extensions, adapters, solution accelerators, and tools that extend and enable customers to gain full value from TIBCO products. In addition, users can submit and vote on feature requests from within the TIBCO Ideas Portal. For a free registration, go to TIBCO Community.

Page 71: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

71 | Legal and Third-Party Notices

Legal and Third-Party NoticesSOME TIBCO SOFTWARE EMBEDS OR BUNDLES OTHER TIBCO SOFTWARE. USE OF SUCH EMBEDDED OR BUNDLED TIBCO SOFTWARE IS SOLELY TO ENABLE THE FUNCTIONALITY (OR PROVIDE LIMITED ADD-ON FUNCTIONALITY) OF THE LICENSED TIBCO SOFTWARE. THE EMBEDDED OR BUNDLED SOFTWARE IS NOT LICENSED TO BE USED OR ACCESSED BY ANY OTHER TIBCO SOFTWARE OR FOR ANY OTHER PURPOSE.

USE OF TIBCO SOFTWARE AND THIS DOCUMENT IS SUBJECT TO THE TERMS AND CONDITIONS OF A LICENSE AGREEMENT FOUND IN EITHER A SEPARATELY EXECUTED SOFTWARE LICENSE AGREEMENT, OR, IF THERE IS NO SUCH SEPARATE AGREEMENT, THE CLICKWRAP END USER LICENSE AGREEMENT WHICH IS DISPLAYED DURING DOWNLOAD OR INSTALLATION OF THE SOFTWARE (AND WHICH IS DUPLICATED IN THE LICENSE FILE) OR IF THERE IS NO SUCH SOFTWARE LICENSE AGREEMENT OR CLICKWRAP END USER LICENSE AGREEMENT, THE LICENSE(S) LOCATED IN THE “LICENSE” FILE(S) OF THE SOFTWARE. USE OF THIS DOCUMENT IS SUBJECT TO THOSE TERMS AND CONDITIONS, AND YOUR USE HEREOF SHALL CONSTITUTE ACCEPTANCE OF AND AN AGREEMENT TO BE BOUND BY THE SAME.

This document is subject to U.S. and international copyright laws and treaties. No part of this document may be reproduced in any form without the written authorization of TIBCO Software Inc.

TIBCO, the TIBCO logo, and the TIBCO O logo are either registered trademarks or trademarks of TIBCO Software Inc. in the United States and/or other countries.

Java and all Java based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates.

This document includes fonts that are licensed under the SIL Open Font License, Version 1.1, which is available at: https://scripts.sil.org/OFL

Copyright (c) Paul D. Hunt, with Reserved Font Name Source Sans Pro and Source Code Pro.

All other product and company names and marks mentioned in this document are the property of their respective owners and are mentioned for identification purposes only.

This software may be available on multiple operating systems. However, not all operating system platforms for a specific software version are released at the same time. See the readme file for the availability of this software version on a specific operating system platform.

THIS DOCUMENT IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.

Page 72: TIBCO® Offer and Price Engine

TIBCO® Offer and Price Engine Installation and Configuration Guide

72 | Legal and Third-Party Notices

THIS DOCUMENT COULD INCLUDE TECHNICAL INACCURACIES OR TYPOGRAPHICAL ERRORS. CHANGES ARE PERIODICALLY ADDED TO THE INFORMATION HEREIN; THESE CHANGES WILL BE INCORPORATED IN NEW EDITIONS OF THIS DOCUMENT. TIBCO SOFTWARE INC. MAY MAKE IMPROVEMENTS AND/OR CHANGES IN THE PRODUCT(S) AND/OR THE PROGRAM(S) DESCRIBED IN THIS DOCUMENT AT ANY TIME.

THE CONTENTS OF THIS DOCUMENT MAY BE MODIFIED AND/OR QUALIFIED, DIRECTLY OR INDIRECTLY, BY OTHER DOCUMENTATION WHICH ACCOMPANIES THIS SOFTWARE, INCLUDING BUT NOT LIMITED TO ANY RELEASE NOTES AND "READ ME" FILES.

This and other products of TIBCO Software Inc. may be covered by registered patents. Please refer to TIBCO's Virtual Patent Marking document (https://www.tibco.com/patents) for details.

Copyright © 2010-2021. TIBCO Software Inc. All Rights Reserved.