Conga Product Documentation

Welcome to the new doc site. Some of your old bookmarks will no longer work. Please use the search bar to find your desired topic.

Show Page Sections

Setup

Once the application installed, the correct parameters must be associated in order to have the more accurate behavior.

In this section, we detail first the database configuration, then the application server configuration and finally the parameters for CPQ.

Tip: CPQ is compatible with the Vault encryption provided by JBOSS that allows encoding password in properties files. For more details about this technology, please refer to the JBOSS documentation available online.

How to Configure the Database

DATABASE INITIALIZATION

As explained in the reference document CPQ Installation Guide, The database configuration must follow the requirements in the table below:

CONFIGURATIONCPQ SUPPORTED VALUESOBSERVATION
Database server and client versionsOracle XE universal (for standalone usage), Oracle 10g, Oracle 11g R2
Character set of the Oracle databaseAL32UTF8To verify the correctness of your character set, execute the following query: select value from nls_database_parameters where parameter = ‘NLS_CHARACTERSET’
Specific tablespace for Smart CPQAny Oracle tablespace nameTo create a tablespace, execute : create tablespace cameleon_tablespace, data file ’/oracle/cameleon_tablespace.dbf’, size 1G, online
Specific user for Smart CPQAny Oracle user nameTo create a user, execute : create user cameleon_database_user, identified by cameleon_database_password, default tablespace cameleon_tablespace
Specific user for QuoteAny Oracle user nameTo create a user, execute : create user cart_database_user, identified by cart_database_password, default tablespace cameleon_tablespace
Specific user for CCSAny Oracle user nameTo create a user, execute : create user CCS_database_user, identified by CCS_database_password, default tablespace cameleon_tablespace
The Oracle user rights for Smart CPQConnect, resourceTo create a user, execute : grant connect, resource to cameleon_database_user, grant connect, resource to cart_database_user, grant connect, resource to CCS_database_user

Do not: Database users must be tied to the “cameleon_tablespace” and cannot be a DBA.

In the standard installation tool, both tables and indexes are installed in the same tablespace.

As, for large database, it is recommended to dissociate indexes and tables in two distinct tablespaces, this architecture is supported for CPQ but must be done manually.

Reference: To encrypt the database credentials, please refer to the CPQ Installation Guide.

How to Configure the Application

OPTIMIZING THE JBOSS STANDALONE.SH/.BAT FILE

After installing CPQ, a default server profile is provided. This server profile has the following form:

SERVER_PROFILE="-Xms128m -Xmx1024m -Xss512k -XX:MaxPermSize=256m"

It is recommended to update the server profile in order to optimize the environment based on the expected load.On 64-bit environments, we recommend adding the -XX:+UseCompressedOops option, which can improve performance of the 64-bit JRE when the Java object heap is less than 32 gigabytes in size. In this case, Hotspot compresses object references to 32 bits, reducing the amount of data that it must process. The server profile would thus become:

SERVER_PROFILE="-Xms128m -Xmx1024m -Xss512k -XX:MaxPermSize=256m - XX:+UseCompressedOops”

MAIN CONFIGURATION FILE: CAMELEON.PROPERTIES

The cameleon.properties file contains all the parameters of CPQ that can impact the behavior of the application.

This file can be found in: \conf\

The cameleon.properties file contains a list of parameters grouped by theme. We present the different parameters into the following section except for those for the caches that are detailed in a further section.

cameleon.properties

NETWORK CONFIGURATION
java.naming.provider.urlFor internal use only. When using an external web server (Apache), this URL should point to the CPQ server.jnp://<IP of the server>:<JNDI Port of the server>
cameleon.url.publicCPQ public urlhttp://<IP of server>:<Port
cameleon.url.privateCPQ private urlhttp://<IP of server>:<Port
cameleon.work.dirCPQ working (temporary) directory${cameleon.home}/work
QUOTE MODEL CACHE MANAGEMENT
provider.remote.url.cluster.nodesList of remote cluster node URLs separated by ';' delimiter. This is used to clean quote model cache.Empty by default. For instance: remote://cpq1:4647;remote://cpq2:4647
provider.http.url.cluster.nodesList of cluster's node urls separated by ';' delimiter. This is used to clean quote model cache.Empty by default.For instance: http://cpq1:8280;http://cpq2:8280
Warning: Multi-nodes deployment

When the cart model is modified and saved on one node, the disk synchronization with other nodes can take up to 2 minutes. Clearing the cache on other nodes should therefore be

done after this sync time only, otherwise the modification will not be taken into account.

JMX CONSOLEExamples
api.cross.domain.allowed.originsList of allowed origins used to filter the cross-domain requests. The list of parameters, separated by commas, can be exact domains or domains with wildcards. Warning: with a single * all requests are accepted.
  • http://172.30.0.1:8080http://172.30.0.1:8080, http://172.30.0.7:8280
  • http://172.30.0.1:*
  • http://172.30.0.1:*, *:8580, http://*.0.1:*
admin.fatals_history_lengthThe maximum number of fatal errors that will be displayed in the JMX console. The list of displayed errors is made of the latest ones.20
MODELING API
modeling.api.rmgFolderPoints to the folder where the Rich Media Gallery will be stored.<cpq_home>/jboss/standalone/deployments/cameleon.ear/cameleonResources.war/RMGRepository/
modeling.api.rmgURL.privatePoints to the private URL where the Rich Media Gallery is accessible.${cameleon.url.private}/cameleonResources/RMGRepository/
modeling.api.distributionFolderPoints to the folder where the export&import files will be stored.${cameleon.home}/export_import
modeling.api.indexFolderPoints to the folder where the index files will be stored.${cameleon.home}/indexes
eximp.simpEximp.cache.generateFlag to generate the cache automatically in the Simple Eximp processDefault is set to TRUE. TRUE, the cache is generated when the Simple Eximp process is launched. FALSE, the cache is not generated when the Simple Eximp process is launched.
eximp.simpEximp.full.text.generateFlag to generate full text search automatically in the Simple Eximp processDefault is set to FALSE. TRUE, the full text search is generated when the Simple Eximp process is launched. FALSE, the full text search is not generated when the Simple Eximp process is launched.
modeling.api.db.stats.strategyActivate the automatic Oracle statistic gathering after an XML/XLS import or Version creation. Could be valued with “gather” / “none” / “custom”.gather
modeling.api.db.stats.activitiesList of activities that trigger the statistics gathering. The default behavior is: all activities trigger a gathering.import;version
modeling.api.db.stats.bpsActivate the cleaning of BPS from orphan lines.STAT to run and only display the total number of BPS to clean and the total number of BPS lines to clean; CLEAN to run only the cleaning of BPS; CLEAN_STAT to run both the clean and stat.
MODELING API
eximp.simpEximp.full.text.generateFlag to generate full text search automatically in the Simple Eximp processDefault is set to FALSE. TRUE, the full text search is generated when the Simple Eximp process is launched. FALSE, the full text search is not generated when the Simple Eximp process is launched.
modeling.api.db.stats.strategyActivate the automatic Oracle statistic gathering after an XML/XLS import or Version creation. Could be valued with “gather” / “none” / “custom”.gather
modeling.api.db.stats.activitiesList of activities that trigger the statistics gathering. The default behavior is: all activities trigger a gathering.import;version
modeling.api.db.stats.bpsActivate the cleaning of BPS from orphan lines.STAT to run and only display the total number of BPS to clean and the total number of BPS lines to clean; CLEAN to run only the cleaning of BPS; CLEAN_STAT to run both the clean and stat.
COMMON UI CONFIGURATION
cameleon.ui.enableGZIPOnWSEnable (true) or Disable (false) GZIP on WS flowstrue
cameleon.ui.browserCacheLifetimeBrowser cache lifetime in minutes. If you set this parameter, browser cache will be automatically refreshed each browserCacheLifetime value. (Example: 10080 corresponds to a refresh every week: 7* 24 * 60).
cameleonUI.errorPage.exception.urlURL of a custom error page used to override the default Java Exception error page.See the Error Page Customization chapter for more details
COMMON UI CONFIGURATION
cameleonUI.errorPage.http.[errorCode].urlURL of a custom error page used when an HTTP [errorCode] is returned.The HTTP error codes handled by this property are the following: 400, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 500, 501, 502, 503, 504, 505, 511
cameleonUI.errorPage.http.urlURL of a custom error page used when an HTTP error code not handled by the cameleonUI.errorPage.http.[errorCode].url property is returned.See above to identify which error codes are concerned.
CONFIGURATOR UI CONFIGURATION
configurator.ui. layoutFileNameName of the Configurator User Interface configuration file to be used. Determines the default value in the Designer “run current” function. See the reference document CPQ User Interface for more details about this file.configuratorUI.xml
configurator.ui.configurationFileNameName of the default configuration XML file to be used when starting the Configurator. Determines the default value in the Designer “run current” function.configuration.xml
configurator.ui.savedConfigurationFileNameName of the default file to be used when saving a configuration in the Configurator.configuration-saved.xml
configurator.ui.upload.allowedExtensionsWhite list of file extensions allowed for upload in Form Properties of type File, separated by ‘;’txt;info;jpg;jpeg;gif;png;swf;jrxml;zip;pdf;doc;docx;ppt;pptx;xls;xlsx;rtf;csv
configurator.ui.upload.fileMaxSizeMax size for files uploaded via Form Properties of type File (in MB)15
CONFIGURATOR UI CONFIGURATION
configurator.ui.upload.directoryPath of the directory, under the CPQ install root directory, where the files uploaded via Form Properties of type File will be storedupload
configurator.ui.scrollModeconfigurator automatic scroll mode: previousFP: try to keep the last answered FP on the screen when answering the next FP nextFP: scroll to next FP (and put it at the top of the screen)previousFP Warning: The "previousFP" behavior does not apply on a change of Form (last FP of a form to first FP of the next Form)
configurator.ui.disableCatalogAuthenticationIf set to false, the navigation on the catalog will be dependent of the current session
configurator.codification.policyIn the codification rule, you can design either a mapping function or a codifying function. CPQ Designer provides two modes to manage the potential interactions between these functions. Standard mode: If both a mapping and a codifying functions have been provided, the codifying function will be deactivated Merge mode: If both a mapping and a codifying functions have been provided, the mapping function will be used and its result will be overridden by the parameters of the codifying function, including the system properties, the Business Properties and the Rich Media Objects.Merge (default) | standard
CONFIGURATOR UI CONFIGURATION
configurator.ui.hideIfCellExpressionDoesNotExistValue in cameleon.properties that determines what happens when the CPE pointed by a cell expression doesn’t exist, or one of its parents doesn’t exist. When equals true, the value is not displayed. When equals false, the value is displayed, regardless of the existence state of the target CPE and its parents.True
CATALOG CONFIGURATION
catalog.bookmark.enabledAuthorize or not bookmark capabilities.True by default. Set to false if bookmarks have to be forbidden
CATALOG UI CONFIGURATION
catalog.ui.layoutFileNameName of the Catalog User Interface configuration file to be used. Determines the default value in the Designer “run current” function and when launching the catalog from a bookmarked URL.catalogUI_2011.xml
catalog.ui.catalogFileNameName of the default Catalog XML file to be used when starting the Catalog. Determines the default value in the Designer 'run current' function and when launching the Catalog from a bookmarked URLcatalog.xml
catalog.ui.savedCartFileNameName of the default file to be used when saving products selected from the Catalogcart-saved.xml
catalog.ui.internationalSettingsNameAt runtime, the CPEs corresponding to the internationalSettings will be injected as settings and override the ones found in the catalog.xml file.
catalog.ui.applicationDateApplication date
catalog.ui.hotspots.comparatorThe sort class to use on hotspots. Must be a class to use to sort hotspots, i.e. : com.cameleon.configuratorui.comparator.HotspotAlphaNumComparator, com.cameleon.configuratorui.comparator.HotspotNaturalComparator (default is HotspotAlphaNumComparator)com.cameleon.configuratorui.comparator.HotspotAlphaNumComparator
EXTERNAL COMPONENTS CONFIGURATION- COMMON PARAMETERS
externalComponents.transform.disabledisable the init method if equal truetrue
MODELING UI CONFIGURATION- MODELINGUI INITIALIZATION
modeling.ui.defaultUser.internationalSettingsName of the international settings object which is to be associated with the default user created at first access.englishSettings
modeling.ui.defaultLocaleLocale of the default user created at first access. Also used to determine the default language of the Designer interface. In the Designer, if no locale is associated to the user, this value is set as the default locale for this user.en
modeling.ui.historySizeThe number of steps to memorize in the Designer history20
modeling.ui.searchResultSizeNumber of results displayed by object type in the Designer search field.5
modeling.ui.sharedSettingsPersistenceTimeoutFor internal use only. Do not change.1800000
MODELING UI CONFIGURATION- MODELINGUI INITIALIZATION
modeling.ui.sharedContextModeShared context modeMEM
modeling.ui.headerColor modeling.ui.environmentNameThese 2 parameters are used to customize your modeling environments. They are optional. You can set header color and environment name for each modeling environment.
modeling.ui.manageVersion.generateCheckedParameter used to check or uncheck by default the 'Generate Cache', 'Generate Search index' and 'Generate Sitemap' checkboxes when generating a version.true
modeling.ui.themes.management.enabledParameter used to enable/disable the possibility to manage themes for versioningtrue
modeling.full.text.auto.remove.versionParameter used to remove search indexes when a version is deletedtrue
MODELING UI CONFIGURATION- MODELINGUI INITIALIZATION
modeling.full.text.auto.generateParameter used to automatically create full text search indexes when a version is createdfalse
MODELINGUIMIGRATION CLASSIC TO CPQ OUTPUT FOLDER
modeling.ui.migrationOutputFolderOutput folder of the migration process from Classic to CPQ.${cameleon.home}/MigrationOutputFolder
MODELINGUI RICH MEDIA GALLERY UPLOAD PARAMETERS
modeling.ui.rmg.allowedExtensionsList of allowed file extensionstxt;info;jpg;jpeg;gif;png;swf;jrxml;zip;pdf;doc;docx;ppt;pptx;xls;xlsx;pdf;rtf;csv;dae;obj;json;wrl;jasper
modeling.ui.rmg.zipMaxSizeFile size limit for uploads (in MB)15
EXTERNAL APPLICATION RICH MEDIA GALLERY ACCESS
secure.rmg.enabledEnable secure static assets on RMGTrue to enable security on the assets.
secure.rmg.secretSecure assets secret key
EXTERNAL APPLICATION RICH MEDIA GALLERY ACCESS
secure.rmg.authorized.applicationsAuthorized applications (Use ',' separator if multiple)jasperreport-pros,catalog,configurator,cart,cpqdesigner
EXTERNAL LOGIN CONTROL CLASSES
modeling.ui.externalLoginClassName of the class which is used to bypass the login, and to call an external LDAP check. This class needs to be deployed in the same target as the “cameleon.ear” file.
modeling.ui.limitedRoleName of the role to be applied if the external login class sends back “LIMITED” (meaning the LDAP is down).
SSO SAML PARAMETERS
modeling.ui.appPortal.login.enableEnable AppPortal UI login for CPQ designer. If true all AppPortal properties without default value must be providedfalse
modeling.ui.appPortal.login.portal.uriApp portal login url for SellingPRO Designer.
modeling.ui.appPortal.application.idApplication id of CPQ designer in AppPortal.
SSO SAML PARAMETERS
modeling.ui.appPortal.tenant.idTenant id of the client using AppPortal.
modeling.ui.appPortal.application.secretApplication secret of the given tenant and application id in AppPortal.false
modeling.ui.appPortal.authenticator.typeAppPortal authentication type.session
modeling.ui.appPortal.whitelist.uri.prefixesList of url to skip by AppPortal security filter.Must be comma-delimited list, no whitespace. Keep comment if no url to whitelist.
modeling.ui.appPortal.application.oauth2.uriAppPortal application endpoints.oauth2
modeling.ui.appPortal.application.entry.uriAppPortal application base endpoint url
modeling.ui.appPortal.user.workgroupDefines the authenticated user workgroup.(provided by the customer).
modeling.ui.appPortal.user.autocreateAutomatically creates user with when logged in with AppPortal but not existing in the Application.false
SSO SAML PARAMETERS
modeling.ui.appPortal.user.default.teamUsers automatically created after an AppPortal login will belong to the default team if provided.Mandatory if user auto-creation is enabled (provided by the customer).
modeling.ui.appPortal.user.default.roleUsers automatically created after an AppPortal login will be granted the default role if provided.Mandatory if user auto-creation is enabled (provided by the customer).
CSV EXPORT
modeling.UI.CSVexport.maxLinesNumberMax number of lines that can be exported on a call to the CSV export feature in the Designer.500
PUSH METADATA TO CRM
modeling.ui.push.metadata.classJava Class allowing pushing CPQ XML structure to a CRM like MS Dynamics, so that CRM and CPQ meta elements remain in sync, meaning that every change done on the model in CPQ is proactively applied accordingly in the CRMcom.pros.integration.DefaultPushMetadataImpl
modeling.ui.push.metadata.crm.instancesList of CRM instance orgID separated by a commaorg55b5ee2c,org54dfe335
CWT INITIALIZATION
modeling.ui.cwt.config.upload.sizethresholdMaximum permitted size for a file to be uploaded in memory, without the creation of a temporary file on disk (for 512Kb, write 524288 = 512x1024)1024000
CWT INITIALIZATION
modeling.ui.cwt.config.upload.maxsizeThe maximum permitted size for a file to be uploaded (in bytes, for 512Kb, write 524288 = 512x1024).524288000
modeling.UI.CSVimport.maxFileSizeThe max CSV request size (in byte, for 512Kb, write 524288 = 512x1024)1024000
SPARE PART DESIGNER
modeling.ui.imagemagic.pathPath for Image Magic tool. Mandatory only for spare parts module hotspots detection (see http://www.imagemagick.org for more information)For default value refer to CPQ Installation Guide
modeling.ui.ocrad.pathPath for OCRAD tool. Mandatory only for spare parts module hotspots detection (see http://www.gnu.org/software/ocrad/ for more information)For default value refer to CPQ Installation Guide
modeling.ui.hotspots.comparatorHotspot sorting to use. Must be a class to use, i.e.: com.cameleon.modelingui.comparator.HotspotAlphaNumComparator or com.cameleon.modelingui.comparator.HotspotNaturalComparator (default is AlphaNum).com.cameleon.modelingui.comparator.HotspotAlphaNumComparator
MESSAGES CONFIGURATION
common.message.persistenceThis property allows activating the engine messages persistence mechanism. The default value is set to false to activate the previous engine messages behavior, i.e. purge of all engine messages on each call.false
LOGGING CONFIGURATION
log.maxParameterSizeThe maximum parameter size to display. (If a parameter exceeds this given size, it will be truncated to maxParameterSize). Default value, if no value is provided, is 20481000
LOGGING CONFIGURATION
log.showMethodsParams“true” in order to display method parameters during method trace, otherwise “false”.true
log.execTime.levelSpecifies the log level for execution times. Possible values: OFF, TRACE, DEBUG, INFO, WARNING, ERROR, FATAL.OFF
log.execTime.collectMethods“true” if statistics need to be collected for logging execution times, otherwise “false”.false
log.showLinesNumber“true” if line numbers need to be shown, otherwise “false”false
CPQ MACRO LANGUAGE CONFIGURATION
ml.langThe language to use for messages sent by the Macro Language. Typically used to change the tracing language. Possible values: US, FR.us
ml.macroLegacyNot ImplementedNot Implemented
ml.dbDriverThe ml.dbDriver attribute is a list (separated by comma) of driver class name to load.
ml.creationDBPoolThe ml.creationDBPool attribute is a list (separated by comma) of database pool definition. The pattern is the following: Name=...;Driver=..;Url=..;User=..;Password=..;MaxCapacity=..;InitCapacity=..;Timeout=...
ml.externDBPoolThe ml.externDBPool attribute is a list (separated by comma) of data source JNDI name
ml.javalibA list of class names (separated by comma) in order to extend the Macro Language with external libraries. The jar file(s) containing the classes corresponding to these external libraries will also have to be deployed in the CPQ JBoss target. An example of value could be:com.cameleon.business.dao.BusinessDAO .com.cameleon.framework.commons.type.Range, java.lang.Integer, com.cameleon.business.object.product.impl.StandardItemImpl, com.cameleon.business.object.metaobject.impl.BusinessPropertySetImpl, com.cameleon.business.object.metaobject.impl.BusinessPropertyImpl, com.cameleon.framework.business.cpe.CPEBuilderDefault value is null.
ml.traceActivates (or deactivates) the traces produced by the TRACE command in Business Macros. Should be ON in a development environment and OFF in a production environment. Indeed, Macro language traces must always be turned off in production environment where concurrent runs could happen in order to avoid concurrent write into the trace files. Possible values: ON, OFF.ON
ml.traceMaxSizeMaximum size of macro language trace file, in megabytes
CPQ MACRO LANGUAGE CONFIGURATION
ml.maxNbInstrMaximum number of instructions in a macro language script run
ml.chrootMLTraceDirPath of macroLanguage trace directory
ml.securityLevelSecurity level of the macro languageNone|Medium|High
ml.maxExecTimeMaximum execution time (in milliseconds) allowed for external java calls (post-checked)
CPQ LICENSE
license.timeoutThe license timeout, which will automatically liberate the license ticket if no activity has been registered. Has to be higher than 1 minute and is given in minutes.6
license.timeoutPolicyTimeout policy: Unlimited (default value) or LicenseTimeout (in this last case, sessions will timeout after a license.timeout duration of inactivity)Unlimited
license.logger.activationEnable (true) or Disable (false) the license loggerBy default is set to true
CPQ DISTRIBUTION
distribution.scheduler.startonloadIf this property is set to TRUE, then the scheduler will be started automatically on the Designer startup. The scheduler is the part of the CPQ distribution tool that automates the import of published versions. If this property is set to FALSE, then the scheduler will not be started.TRUE
distribution.publisher.defaultnameThe default name of a server that acts as a publisher. Can be overridden by the publisher.xml file.DEFAULT_PUBLISHER
distribution.repository.pathThe default distribution path.${cameleon.home}/distribution
CPQ DISTRIBUTION
distribution.subscriber.upload.folderThe name of the folder where import file of the Audit Import step are uploaded.upload

Engine Cache Configuration (cf. next chapter)

ENGINES LIMITATION
configurator.limit.productFilterSearch.maxItemNumberProvides a limit for product filters result size1000
configurator.limit.completeMatchingSearch.maxItemNumberProvides a limit for complete matchings result size1000
configurator.limit.partialMatchingSearch.maxItemNumberProvides a limit for partial matching result size1000
configurator.limit.manufacturingMatchingSearch.maxItemNumberProvides a limit for manufacturing matching result size1000
configurator.limit.needAnalysisSearch.maxItemNumberProvides a limit for need analysis search result size1000
engines.limit.searchProvides a limit for all engines (Configurator and Catalog) searches result size.1000

ERROR PAGES CUSTOMIZATION

The cameleon.properties file allows to declare URLs for customized error pages as follows:

ERROR PAGES CUSTOMIZATION
cameleonUI.errorPage.exception.urlURL of a custom error page used to override the default Java Exception error page.The HTTP error codes handled by this property are the following: 400, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 500, 501, 502, 503, 504, 505, 511.
cameleonUI.errorPage.http.[errorCode].urlURL of a custom error page used when an HTTP [errorCode] is returned.See above to identify which error codes are concerned.
cameleonUI.errorPage.http.urlURL of a custom error page used when an HTTP error code not handled by the cameleonUI.errorPage.http.[errorCode].url property is returned.
Example: When an HTTP 404 error occurs, the application will::

Look for the "cameleonUI.errorPage.http.404.url" property and use its value if any [If the previous step failed]

Look for the "cameleonUI.errorPage.http.url" property and use its value if any [If all of the previous steps failed]

Use the default (hardcoded) HTTP 404 error page

Tip: Customized error pages can be located both inside and outside the application.

In case of an outside custom error page used in the "cameleonUI.errorPage.exception.url" property, some information about the error might be forwarded to the error page (depending on the exception type) as GET parameters.

USER TRACING

The cameleon.properties file enables tracing of user connections via the following parameters:

EXTERNAL TRACING SERVICE CLASS
modeling.ui.externalTracingClassName of the class used to trace user actions in the Designer. This class uses the supervisionClass to trace.com.cameleon.modelingui.services.trace.CameleonDefaultTracingService
EXTERNAL SUPERVISION (TRACER) CLASS (USED BY TRACING SERVICE)
modeling.ui.supervisionClassName of the class used to print out traces.com.cameleon.framework.commons.trace.CameleonTracer
modeling.ui.supervisionCategoryThe log4j category is used by the supervision class. It should be defined in jboss-log4j.xml too.cameleon.designer.security
Tip: In addition to the above-mentioned parameters, the log.level parameter in cameleon.properties needs to be at least at the WARN level in order to activate tracing.

When tracing is activated, the following information will be logged:

  • The access type (ACCESS, SAVE, etc.)
  • The users’ IP address
  • The users’ original IP address
  • The timestamp
  • The user name (= the connected user in the Designer)
  • The users’ first name
  • The users’ last name
  • The process name
  • The parent object workspace/class/name
  • The version information:
    • Internal identifier
    • Fix number
    • Version label
    • Version start date
    • The user name for the user who created the version
    • The timestamp of creation
    • The user name for the user that fixed the version
    • The timestamp of fix creation
    • « false » (a static field, no longer used)
    • « false » if the version is a « real » version, « true » if the version is a working version
  • The concerned object (e.g. the object which has been saved)

REPORT GENERATION

The following parameters available in cameleon.properties are available for report generation:

REPORT GENERATOR CONFIGURATION
report.file.accessDetermine if report must upload and download every required files (XML, JRXML, ZIP, PDF ...). Due to performance reasons we recommend to use ReportGenerator remote generation capability only when a direct file sharing is possible through a NAS or shared disk. For quicker report generation: use LOCAL. Available values are: LOCAL (files can be reached through a common file structure) or REMOTE (files can be reached through HTTP protocol and stored in report gen cache).LOCAL
report.naming.provider.urlWhen using an external report engine server, this URL should point to the ReportEngine JNDI URL. If report engine is local, this property doesn't need to be defined (local JNDI is used). This parameter is client parameter (if not set, java.naming.provider.url will be used).${java.naming.provider.url}
report.product.nameThis entry provides the name of ReportGenerator ear name (due to EJB retrieving reasons). Leave blank if ReportGenerator is embedded into the CPQ ear. Pertinent value for remote usage can be 'ReportGenerator' if ear file name is: 'ReportGenerator.ear'. This parameter is client one (if not set, environment variable 'cameleon.product.name' is used instead)cpq
report.download.urlThis entry defines the URL to use for downloading reports when ReportGenerator is deployed remotely. This parameter is client side (if not set, no remote report generation can be done).${cameleon.url.public}/ReportGenerator/ReportDownload
REPORT GENERATOR CONFIGURATION
report.working.deleteDetermines if generated reports elements must be deleted in the report.working.dir (note that if report.working.dir is not set, reports elements will always be deleted). Assume that if this parameter is set to true, the report.working.dir will grow quickly. Ensure that folder is cleaned sometimes and this parameter comes back to true when report corrections are done.true
net.sf.jasperreports.xpath.executer.factoryDetermines which Jasper parser is in use among Xalan or Jaxen. Do not modify this parameter if you don’t know how to use it.net.sf.jasperreports.engine.util.xml.XalanXPathExecuterFactory or net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory
quotex.export.state_max_retriesMaximum number of iterations to check the status of the export executed by Performance Quoting during the Jasper report generationDefault value = 10
quotex.export.state_retries_delayNumber of milliseconds to wait between each iteration when checking the Performance Quoting export status during the Jasper report generationDefault value = 500

PRICING

PRICING
common.pricing.service.checkflagsduringpricescomputation = truePricing Calls and Aliases flags: When the parameter is found and equals True, then the aliases flags (defined in PROS Pricing or the standard Pricing Grid) for Must Answer and Must Be Answered are taken into account when getting prices from BRC aliases and ML / API calls (getPrice…). When the parameter is commented or equals False, then the aliases flags are only taken into account in BRC aliases (ex: fpProduct.value.PRGM/pmPricing.Range[1])True False

PROS PRICING INTEGRATION (POD OR PPSS)

PROS PRICING INTEGRATION
integration.pros.pricing.servicePricing System Integrated WithPPSS, POD

POD INTEGRATION

The following parameters available in cameleon.properties aim at managing the POD Integration:

POD INTEGRATION
integration.pros.pricing.loginPOD loginEx: SystemUserPODLogin
integration.pros.pricing.passwordPOD passwordEx: SystemUserPPODPassword
integration.pros.pricing.pricingsvcurlPOD Web service endpointEx: https://myPODServer.com:port/axis2/services/PricingService?wsdl

PPSS INTEGRATION

The following parameters available in cameleon.properties aim at managing the PPSS Integration:

PPSS INTEGRATION
integration.pros.pricing.loginPPSS loginEx: SystemUserPPSSLogin
integration.pros.pricing.passwordPPSS passwordEx: SystemUserPPSSPassword
integration.pros.pricing.pricingsvcurlPPSS Web service endpointEx: http://myPPSSServer:port/axis2/services/PricingService?wsdl
integration.pros.pricing.authenticationPPSS authentication mode'standard', 'nebula' or 'sso'
PPSS INTEGRATION
integration.pros.pricing.urlURL necessary to link the PPSS instance with the CPQ Designerhttps://myserver/PPSS
PPSS INTEGRATION WITH NEBULA AUTHENTICATION
integration.pros.pricing.nebulasvcurlPPSS Nebula service Url
integration.pros.pricing.nebulatokenPPSS Nebula authentication token
integration.pros.pricing.nebulatenantPPSS Nebula tenant
integration.pros.pricing.nebulauidPPSS Nebula unique id

STANDALONE CART INTEGRATION

The following parameters available in cameleon.properties aim to manage the standalone cart integration (indexWS)

STANDALONE CART
cart.validation.regexreg ex (regular expression) for authentificationBy default the password defined in defaultUsers.xml should contain upper and lower case characters, as well as numerical and special characters. You can lift or change these restriction by using a regex. For example cart.validation.regex=^((?!=")(?!=').)+$ will allow any type of password.

MS DYNAMICS CRM INTEGRATION

The following parameters available in cameleon.properties aim to manage MSCRM Integration:

MSCRM
integration.mscrm.loginMSCRM loginFor default value refer to CPQ Installation Guide
integration.mscrm.passwordMSCRM passwordFor default value refer to CPQ Installation Guide
integration.mscrm.discoverurlMSCRM discovery URL to retrieve Web service endpointFor default value refer to CPQ Installation Guide
Integration.mscrm.orguniquenameMSCRM organization unique IDFor default value refer to CPQ Installation Guide
integration.mscrm.webServiceTimeoutThe timeout of the MSCRM web service expressed in milliseconds300000=5mn
integration.mscrm.credential.filePath to a properties file managing the mscrm credential in replacement of the management in cameleon.properties. If not filled, the credential used are the one defined in cameleon.properties (see the above parameters)${cameleon.home}/conf/mscrm.properties

SFDC INTEGRATION- OAUTH SETUP

SFDC INTEGRATION
integration.sfdc.oauth.tokenSFDC Managed Package OAuth Connected App Consumer Key3MVG9yZ.WNe6byQB.d.atN_YP9v2Wrp432aDmfLdG71waVrwpQHggVnOuBEIiF2vcTDq2VreV5yCM_0lDxoqI
SFDC INTEGRATION
integration.sfdc.oauth.urlSFDC Oauth URL. This parameter should be modified when applying Domains in SFDC environment.Sandbox: https://test.salesforce.com/services/oauth2/token, Production (default): https://login.salesforce.com/services/oauth2/token
integration.sfdc.oauth.certificateSFDC OAuth self-signed certificate full path${cameleon.home}/conf/sfdc.jks
integration.sfdc.oauth.passwordSFDC OAuth self-signed certificate passwordPROS2016!

QUOTE

The following parameters available in cameleon.properties are dedicated to Quote administration:

QUOTE CONFIGURATION
cart.storage.modeQuote Storage Mode (DBStorageMode, XMLStorageMode or none)DBStorageMode
cart.lva.modeList of values management. If 1 we display code, if 2 we display description, if 3 we display description and code in values list.3
cart.max.decimal.numberMaximum decimal for all numbers2
cart.on.trigger.errorTreatment after Trigger error. Possible values are "fail" or "continue". By default, it’s "continue".continue
cart.enable.layoutCacheEnable or not cache layout xmlyes
cart.enable.servicesCache=yesEnable or not cache servicesyes
cart.emptyCartsValidityDurationValidity of empty quote5
cart.redirect.on.closePage redirection when user close application../cart/exitPage.jsp
cart.redirect.on.exitPage redirection when user hits the close button within exit page (commented out=no button)../cart/indexWS.jsp
cart.redirect.on.errorPage redirection when an error occurs and a button OK is set on error page (SFDC integration)/cart/exitOnError.do
QUOTE CONFIGURATION
cart.redirect.on.sessionexpiredRedirect to this error page if the session has expired../cart/sessionExpired.jsp
cart.redirect.on.toorderURL determining jsp file which do the order action./order/ToOrder.jsp
cart.documentrootPhysical path pointing to CPQ JSP file${cameleon.home}/jboss/standalone/deployments/cameleon.ear/cart.war
cart.refreshHTTPSessionURLURL to refresh quote HTTP session${cameleon.url.public}/cart/refresh.jsp
cart.parentRefreshURLParent Refresh URL${cameleon.url.public}/CCS/access/eCart/refresh.jsp
cart.cp7ExitURLUser is redirected on this URL after quitting Designer and Configurator.${cameleon.url.public}/cart/processCP7.jsp
cart.errorPageRedirect to this error page if the session has expired../cart/error.jsp
cart.upload.maxsizeSize limit of uploaded documents (merge in reports) in bytes2048000
cart.message.timerTime of display of the cart flyer message10 (2.4 seconds)
cart.enableGZIPOnWSDisable the GZIP on WS flowstrue
cart.edgeWebServiceTimeoutThe timeout of the CPQ web service expressed in milliseconds (300000=5mn).300000
cart.sharedSettingsPersistenceTimeoutShared Objects token time-out (in seconds)600
cart.lm.connectionTimeoutLicense token time-out (in seconds)600
cart.sharedContext.mode cart.sharedContext.exte rnalMode cart.sharedContext.jndi DataSourceWe differentiate the standard shared context and the external one (only used to initialize quote by WS, because HTTP and WS could be on different servers if cluster). In that case, we can choose the mode (MEM or DB) and if DB, use the EJB3 implementation by default (no jndi data source to give) or the native one (the jndidatasource is mandatory). And don't forget to set the corresponding timeout.MEM
[DEPRECATED] cart.xpath.implJAXP(Xpath) implementation URI. Use http://java.sun.com/jaxp/xpath/dom for Xalan/Apache implementation (Xpath 1.0) -default (parameter missing or empty value)- or http://saxon.sf.net/jaxp/xpath/om for Saxon implementation (Xpath 2.0)http://java.sun.com/jaxp/xpath/dom
QUOTE CONFIGURATION
cart.xmlTool.classCPQ is based by default on the Saxon XML parser to support Xpath 2.0 requests. This parameter allows one to switch to the Xalan XML parser if support of Xpath 1.0 is required for backward compatibility.com.accesscommerce.cart.xmlintegration.CartXmlToolSaxonImpl
cart.optimizeSyncEntriesOptimize process of re-applying user input values after editing a configurationyes
cart.multiPlexing.numberOfThreadWhen Multi Threading is activated on quote lines refresh this parameter drives the number of threads handling the refresh actions.5. Please contact your PROS representative to activate this feature.
QUOTE DESIGNER
cartdesigner.enable.config.settingsPossibility to view/modify the configuration settingsyes
cartdesigner.distrib.allowedExtensionsList of file extensions authorized for upload in the distribution module of the Designercss;ico;jpg;jpeg;gif;png;swf;ttf;svg;eot;woff;jrxml;jasper;pdf;properties
cartDesigner.enable.distributionThe distribution module will be activated only if this parameter is present and filled with the ‘yes’ value in cameleon.propertiesno
CONNECTORS
connector.CartDesignerLogin.classConnector for Quote Designer logincom.accesscommerce.cart.connector.defaultImpl.CartDesignerLoginImpl
connector.CartDesignerLogin.classConnector for Quote Designer Modeler logincom.accesscommerce.cart.connector.defaultImpl.CartDesignerLoginModelerImpl
connector.ExternalDocumentProvider.classConnector for reports mergeable documentscom.accesscommerce.cart.connector.defaultImpl.ExternalDocumentProviderImpl
connector.CartLogin.classConnector for contextual data retrieval at logincom.accesscommerce.cart.connector.defaultImpl.CartLoginImpl
CONNECTORS
connector.XmlReport.classConnector for building the XML datasource of the jasperreport template. It provides a way to change the quote language when a report is generated so that the quote lines are translated in a target language.com.accesscommerce.cart.connector.defaultImpl.XmlReportImpl
connector.AfterSaveOperation.classAfter Save Operation connector. It specifies interface to update the host application after a save.com.accesscommerce.cart.connector.defaultImpl.AfterSaveOperationImpl
connector.CartSkeletonWS.classConnector for the Cart Skeleton WScom.accesscommerce.cart.connector.defaultImpl.CartStatelessSkeletonWSImpl
connector.ForbiddenActions.classForbidden Actions connector. It specifies forbidden actions in host application.com.accesscommerce.cart.connector.defaultImpl.ForbiddenActionsImpl
connector.Currencies.classCurrencies connector provides an interface to get currency information from the host application.com.accesscommerce.cart.connector.wsImpl.CurrenciesWSImpl
connector.InternLVA.classInternal value list connector. It provides an interface to get value lists information from the host application.com.accesscommerce.cart.connector.wsImpl.InternLVAWSImpl
connector.GUIThemes.classGUI themes connector. It provides an interface to get available information for the GUI themes from the host application.com.accesscommerce.cart.connector.defaultImpl.GUIThemesImpl
connector.IDGenerator.classSpecifies interface to get unique identifiers from the host application.com.accesscommerce.cart.connector.defaultImpl.IDGeneratorImpl
connector.Languages.classLanguages connector provides an interface to get information for available languages from the host application.com.accesscommerce.cart.connector.wsImpl.LanguagesWSImpl
connector.LockManager.classIt specifies interface to the lock mechanism provided by the host application.com.accesscommerce.cart.connector.defaultImpl.LockManagerImplDB
connector.ConnectorJMXIdentification.classConnector for the JMX identificationcom.accesscommerce.cart.connector.defaultImpl.ConnectorJMXIdentificationImpl
CONNECTORS
connector.Services.classServices connector provides interface to get information for available services in the host application.com.accesscommerce.cart.connector.wsImpl.ServicesWSImpl
connector.UserGroupManager.classSpecifies the interface to get information related to user and groups provided by the user management of the host application.com.accesscommerce.cart.connector.wsImpl.UserGroupManagerWSImpl
connector.ELink.classInterface for ELink execution.com.accesscommerce.cart.connector.defaultImpl.ELinkImpl
connector.Service.classConnector for Servicescom.accesscommerce.cart.connector.wsImpl.ServiceWSImpl
connector.ELinkPage.classInterface for ELinkPage execution.com.accesscommerce.cart.connector.defaultImpl.ELinkPageImpl
connector.CICCatalogConnector.classThe connector interface to invoke the eCatalog component.com.accesscommerce.cart.connector.defaultImpl.CICCatalogConnectorImpl
connector.CICConfiguratorConnector.classThe connector interface to invoke the eConfigurator component.com.accesscommerce.cart.connector.defaultImpl.CICConfiguratorConnectorImpl
connector.CICAdvancedPricerConnector.classThe connector interface to invoke the ePricer component.com.accesscommerce.cart.connector.defaultImpl.CICAdvancedPricerConnectorImpl
connector.LDAPImplementationClassConnector for the LDAP Implementation
connector.CartInit.classConnector for the Cart init.
connector.CP7ConfiguratorConnector.classThe connector interface to override parameters before invocation of the eConfigurator component.com.accesscommerce.cart.connector.defaultImpl.CP7ConfiguratorConnectorImpl
connector.CT7CatalogConnector.classThe connector interface to override parameters before invocation of the eCatalog component.com.accesscommerce.cart.connector.defaultImpl.CT7CatalogConnectorExtImpl
CONNECTORS
connector.CT7CatalogConnectorExt.classExtension of the CT7 catalog connector This connector is intended to provide a factorization of some of the methods of the original connector CT7CatalogConnector by grouping initialization parameters into an complex object that will be the unique input attribute of the method.
connector.FieldTagAfter.classHelper interface to implement at integration step to surcharge the html render of a field at the end of FieldTag class.com.accesscommerce.cart.connector.defaultImpl.FieldTagAfterImpl
connector.Report.classThis interface constructs report data object and return it for ReportGeneratorcom.accesscommerce.cart.connector.defaultImpl.ReportImpl
QUOTE LINES MANAGEMENT
cart.create.inside.positionWhere to create/paste/move to a line when it must be put inside folder - as top or bottom element of this folderbottom
cart.default.insert.modeDefault quote line(s) insert mode on folder, inside or belowINSIDE
cart.pagination.modePagination type. Possible values: "NONE", no pagination, so, all quote lines are displayed on one page. "FIRST", pagination counts only quote lines. "TOTAL", pagination counts quote lines and sub lines.NONE
cart.pagination.rownumberMaximum number of lines per page5
QUOTE LINES MANAGEMENT
cart.collapse.linesDisplay mode for quote lines by default. Possible values: "no", the lines are expanded by default. "yes", the lines are collapsed by default. This parameter is only available if pagination mode is NONE. If a collapsed line is expanded by the user and the quote is saved, the quote will keep the line expanded next time the user will open the quote.no

AVALARA TAX MANAGEMENT

The following parameters available in cameleon.properties are dedicated to the integration of the Avalara Tax Management solution:

AVATAX API INTEGRATION
avalara.urlURL of the Avatax service associated to the Quotehttps://avatax.avalara.net/1.0/tax/get
avalara.userService user for requests to Avatax
avalara.passwordService password for requests to Avatax
avalara.mappingConfiguration file describing the mapping between Avatax required attributes and Quote elements (columns, header fields…)${cameleon.home}/conf/AvalaraMapping.xml

Reference: For more details on how to integrate the Quote with the Avatax API, please refer to the Quote Designer and Customization GuideNo Content found for /db/organizations/conga/repositories/current/content/documents/Production/Smart_CPQ/user_guide/designer_getting_started/designer_getting_started.dita.

CACHE CONFIGURATION

Cache Presentation

The Configurator uses at runtime two levels of cache.

The first level of cache that we called Application Cache is a versatile cache. The use of this cache enables to gather the efforts of loading of the configuration objects between the different users that run a configuration on the same application server. Indeed, configuration objects are loaded from the database level only once: when the first user of the server is trying to access to the object, the next users are loading the objects from the cache rather than the database. This cache is said to be versatile as the lifetime of the objects in the cache is the same than the lifetime of the application server itself.

The objects in the cache are java objects already well-formed so that the work to get the data and morph them into a new object is already done for all new users.

Warning: In order to get the best performance of the application, the cache should be filled with the configuration objects to avoid the “initial” loading times.

The second level of cache called Database Cache or DB Cache is a persistent cache. This cache takes place in the loading process between the database and the Application Cache. This cache enables to gather the efforts of loading of the configuration objects between the different users running configurations on anyone server among the set of parallel application servers. All objects in this Database Cache are stored as a java serialization object.

To clearly understand how these caches work together, consider the following typical sequence of actions to be performed when a request for an object is sent by the client application:



As we can see in the figure above, the retrieval of an object from the repository for a user session consists in one or two steps:

  1. Obtain the Java Object from the Server Cache

When the client application uses the CPQ API during a configuration session to get a new configuration object, this object is searched into the server cache.

In the case the object is already present in this cache, then

  • An instantiated copy of the object is retrieved to the client application.

In the case the object is not already present in this cache, then:

  • CPQ sends a request to the DB cache to get the data of the object. The tasks related to the DB cache in order to retrieve the data of the object are described in the step 2.
  • Once the DB Cache has retrieved the data of the object, CPQ converts these data (all data concerning the object are retrieved as a serialized form of the object) into a real java object. This Java Object is then injected into the server cache so that it will be available for any new request.
  • An instantiated copy of the object is retrieved to the client application.
    1. Obtain the serialized object from the DB cache

When CPQ sends a request to get the data of an object to the DB cache, two cases can occur: the object is already present in the DB cache or the object is not present.

In the case the object is already present in the DB cache, then

  • A copy of the serialized form of the object that is in the DB cache is retrieved to the client API.

In the case the object is not already present in this cache, then:

  • CPQ loads the data of the object from the database and build a java version.
  • Then, this java version of the object is serialized and the serialization is injected into the DB cache in order to be available for any further request.
  • Once the DB Cache has retrieved the data of the object, CPQ converts these data (all data concerning the object are retrieved as a serialized form of the object) into a real java object. This Java Object is then injected into the server cache so that it will be available for any new request.

By this mechanism, CPQ ensures any object is built only one time from the database which is the most costly operation. Once the engine object is built, it is serialized and will be stored into the DB cache in an asynchronous way. Any later access to this object will get the object in the worst case from this DB cache. Obviously, in the best case the object is already present in the application server cache and directly returned from this cache.

Natively, the caches load the object in an opportunistic way: objects are loaded at each level of cache when one user needs them. The first user to access to an object is thus penalized with the loading time of the object. To prevent this, CPQ integrates mechanisms to preload the caches. The preloading is managed by two optional daemons running on the application server: the Serialization Agent, in charge of the loading of objects into the DB Cache, and the Preload & Change Detection Agent, in charge of the loading of objects into the Application Cache and also in charge of maintaining the consistency of the Application Cache with the content of the DB Cache.

Focusing on the Serialization Agent

In order to accelerate the access time to objects (and especially new objects coming from a new released version), it is necessary to have the serialized form of objects already preloaded into the DB Cache before the first access to the objects.

When importing a new version the Serialization Agent must be informed of the list of new objects

that must be loaded into the DB Cache. This action can be done through the Designer or via a call to the API serializeObject.

According to the parameters of cameleon.properties of each JBoss target, the preloading of the DB Cache can be distributed among the different JBoss server instances:

  • The serializeObjects API is called on a server that is the one that leads the loading process. It adds into the database the list of primary keys of the objects to be loaded.
  • On all Jboss instances if activated, the Serialization Agent is running and is in charge of verifying at fixed time intervals if the DB cache needs to be filled. If some task must be performed, the agent will participate to the effort by loading a subset of the to-be-loaded objects. The activation and actions of this agent are conditioned by the cameleon.properties file.

Thus, the above picture shows the process is launched with the call on one server of the API serializeObjects that will populate a list of primary key in the DB cache.

Then, for all the servers where the serialization agent is activated, the serialization agent will access to the primary key list and take in charge a subset of keys.

For all element of this subset, the serialize agent will load the data of the object from the database, build the java object with these data, serialize the java object and finally register the serialize form of the object into the DB cache.

Warning: Project based benchmarks must be performed in order to define the appropriate architecture taken into account all the performance and deployment constraints and requirements.

Despite the use of the Serialization Agent to preload the cache, all objects of a version are not necessarily pre-loaded. Objects in the DB cache can still be loaded opportunistically on request.

Focus on the Preload & Change Detection Agent

Enabling the Preload & Change Detection Agent on each JBoss target node will automatically pre-loaded the Application Cache.

This agent will load in the Application Cache all objects from the DB Cache that belong to a valid version (meaning whose validity date is lesser or lesser or equal to) at + delayTime (the delay time is a parameter in cameleon.properties. See Cache Parameters).

Warning: This parameter should be valued with a duration long enough to allow to load all the new objects during this delay time (before the first user appears).

For instance, if you know a complete new version of your models is loaded in the application cache in 15 minutes, the parameter should at least be valued with 15.

This agent is also in charge of reloading all objects in the application server cache as soon as they have been updated into the DB Cache (update for a fix for instance via a new call to the API serializeObjects).

The activation and actions of this second agent are conditioned by parameter(s) in cameleon.properties.

The following schema gathers the actions that can influence the loading of objects in the caches:



In the above picture, one can see the DB cache is populated by two possible actions: the preloading API call or the use of an object that was not loaded and that is loaded on the fly.

Concerning the application cache, insertion of object can be done due to the preloading agent according to the DB cache or due to the access by the user to a not loaded object.

Note: objects can be excluded from the application cache when they are not used and when the limit size of the cache is reached. This limit depends on the parameters of the application cache.

Cache Parameters

Hereafter, can be found the complete list of parameters of the cameleon.properties file that are dedicated to the management of the cache agents:

ENGINE CACHE CONFIGURATION

SERIALIZATION AGENT
framework.cache.preloadedUse database cache to speed up cache accesstrue
configurator.cache.serialization.agent.serializeUse serialization agent to pre-serialize objectstrue
configurator.cache.serialization.agent.pushUse serialization agent to push new objects in the cache with opportunistic loadingtrue
configurator.cache.serialization.agent.intervalSerialization agent sleep time: the delay that the serialization agent waits before checking for new object to serialize. Expressed in milliseconds3000
configurator.cache.serialization.agent.timeoutSerialization agent timeout in minutes: once a server has started to serialize an object, we consider it failed after this delay10
SERIALIZATION AGENT
configurator.cache.serialization.agent.typesOptional list of types of elements to be serialized or pushed (separated by semicolon), This parameter can be used to limit the serialization mechanism. Examples: - Full: CP;FO;BRC;STPG;DSCM;SCG;SI;SP;BPS;RMO;BVAL;CL;LA;TEA;DW;BMAC;TPL - Light without SI and RMO for big catalogs: CP;FO;BRC;STPG;DSCM;SCG;SP;BPS;BVAL;CL;LA;TEA;DW;BMAC;TPL. An empty value on this parameter is equivalent to a “Full” mode.
PRELOAD & CHANGE DETECTION AGENT
configurator.cache.preloadchangedetection.agent.cleanUse preload change detection agent to clean objects in the Application cache when they are not consistent with the objects in the DB cachetrue
configurator.cache.preloadchangedetection.agent.reloadUse preload change detection agent to reload objectstrue
configurator.cache.preloadchangedetection.agent.intervalPreload change detection agent interval: the delay that the preload change detection agent waits before checking for new object to refresh. Expressed in seconds60
configurator.cache.preloadchangedetection.agent.active.deltaPreload change detection agent delay (in minutes) to specify how long, before a future version become active, the agent should start to load objects of this version in application cache.30
configurator.cache.preloadchangedetection.agent.past.deltaPreload change detection agent delay (in minutes) to specify how long, after a past version became inactive, the agent should stop to load objects of this version in application cache0
configurator.cache.preloadchangedetection.agent.typesOptional list of types of elements to preload (separated by semicolon), according to their order. This parameter can be used to limit the size of the cache or reorder preloading mechanism. Examples: Full: CP;FO;BRC;STPG;DSCM;SCG;SI;SP;BPS;RMO;BVAL;CL;LA;TEA;DW;BMAC;TPL Light with catalog elements first: CL;LA;TEA;CP;FO;BRC;BPS;STPG;DSCM;SI;SP;RMO;BVAL;DW;BMAC;TPL. An empty value on this parameter is equivalent to a “Full” mode.
configurator.cache.preloadchangedetection.agent.listenerOptional implementation of PreLoadChangeDetectionListener interface used to be notified of application cache changes due to database cache changes.

This parameter enables external applications to be informed of cache changes.

The content of the application cache can also be parameterized with the cache.xml file that can be found in the directory : \conf.

The cache.xml file defines what kind of configuration objects are used in the cache. With the default configuration file, the following objects will be subject to cache: Forms with their Form Properties, Configurable Products, Rich Media Object, Business Rules & Constraints, CPQ Meta Data, Sales Methods, Sales Pricing Grids, Sales Custom Grids, Standard Items, Business Property Sets, and Business Values.

Warning: We recommend not altering this file. If you have any memory problems that require tuning the content of the application cache, contact PROS Inc Professional Services.

EXTERNAL SERVICES: SERVICES.PROPERTIES FILE

Since version 8.0, the Designer allows integrating external services:

  • External Business Services : these services allow for Java classes to be called from within the Designer menu toolbar
  • Document Generation Services : these services allow for reporting services called from within the Designer menu toolbar

External Business Services

In order to add a business service, proceed as follows:

How-To: Write a Java class that respects the following interface::

com.cameleon.modelingui.services.plugins.ExternalService Set up a “business service” section in the services.properties file

The com.cameleon.modelingui.services.plugins.ExternalService interface to be implemented is the following:

package com.cameleon.modelingui.services.plugins;

/**

* The default external service behavior

*

* @author PROS

*/

public interface ExternalService

/**

* The execute method. You have to implement this method.

The input parameters implement the following interface:

The resulting output will have to implement the following interface:

}

The business service section template is the following:

BUSINESS SERVICE CONFIGURATION

#REPEAT THE FOLLOWING INFORMATION FOR EACH NEW BUSINESS SERVICE
business.IDENTIFIER.en_USDescription of the business service for locale en_US.
business.IDENTIFIER.fr_FRDescription of the business service for locale fr_FR.
business.IDENTIFIER.javaClassThe java class that will be called when executing the business service.
business.IDENTIFIER.refreshStepIndicates if the business service execution requires updating the current step. If yes, the Designer user interface will be reloaded after the business service execution.Possible values: yes, no
business.IDENTIFIER.logFileThe absolute URL pointing to a file into which the java class will log information.Sample value: file:///tmp/log.txt
business.IDENTIFIER.showConfirmationIndicates whether the result of the external service is shown in a popup at the end of the execution, or not.Possible values: yes, no
business.IDENTIFIER.iconURLIndicates the URL where the icons are located for the plugin. Icons should be located in the following folder: http:// /modelingUI/localresource /localresources/theme /toolbar/buttons/.Sample URL: http:// /modelingUI/localresource /localresources/theme /toolbar/buttons /btnPlugin.gif

External Reports

In order to add a report generation service, proceed as follows:

How-To:

  • Create a new reporting model
  • Set up a “business service” section in the services.properties file

REPORT SERVICE CONFIGURATION

#REPEAT THE FOLLOWING INFORMATION FOR EACH NEW REPORT SERVICE
service.IDENTIFIER.en_USDescription of the business service for locale en_US.
service.IDENTIFIER.fr_FRDescription of the business service for locale fr_FR.
service.IDENTIFIER.reportTitleThe title of the report
service.IDENTIFIER.reportFileURLThe absolute URL pointing to a zip file which contains the main report and all its sub-reportsSample value: file:///reports/report.zip
service.IDENTIFIER.reportEntryPointThe main report in the zip file holding the report and its sub-reportsSample value: myMainReport.jrxml
#REPEAT THE FOLLOWING INFORMATION FOR EACH NEW REPORT SERVICE
service.IDENTIFIER.reportOutputFormatsThe list of output formats. Currently, only “PDF” is supported.Sample value: PDF
service.IDENTIFIER.customReportParamXIdentifies a parameter to pass to the report engine. This attribute can be repeated for every parameter to be taken into account.

THE CPQ CONFIGURATION FILES

The CPQ engines (both Configurator and Catalog) can be initialized thanks to a setting file (XML format).

In addition to these settings, the CPQ User Interface engine requires another XML files detailing the layout of the different pages of the Configurator/Catalog.

Settings XML File

The settings file contains the initial data to start a catalog and/or a configuration. The default configuration.xml file can be found in the directory:

<CPQInstallDirectory>\conf\run\settings\configurator

The default catalog.xml file can be found in the directory:

<CPQInstallDirectory>\conf\run\settings\catalog

The default createCart.xml file can be found in the directory:

<CPQInstallDirectory>\conf\run\settings\cart

All details on the settings are given in the reference document CPQ Integration Guide.

Layout XML File (UI)

All details of the configuration and customization of the CPQ UI are given in the reference document CPQ Customization Guide.

THE DESIGNER CONFIGURATION FILES

These files essentially define parameters of the application that can be used by the modeling user. They can be found in the directory: <CPQInstallDirectory>\conf

These files are the following ones:

  • MeasurementUnits.xml: the file that defines the different supported unit. You can create new units by adding them in the file
  • modelingProcesses.xml: file for internal use only
  • predefinedParameters.xml: file for internal use only

ADDITIONAL CONFIGURATION FILES

The following files are used at modeling time by the Designer but also at runtime when running the Catalog (Preferences Sticker).

  • Currencies.xml: the file that defines all supported currencies in the applications. As soon as you want to add some new currencies to be supported they have to be defined in this file
  • InternationalSettings.xml: the file that defines the supported international settings. You can add new international Settings when required

DATABASE POOLING

Access to the database is provided by the file cameleon-ds.xml. This file is provided with default parameters:

<?xml version="1.0" encoding="UTF-8"?>

<datasources>

<local-tx-datasource>

<jndi-name>eModelingDS</jndi-name>

<connection-url>jdbc:oracle:thin:@172.31.1.211:1521:EDGE</connection-url>

<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>

<user-name>vmccm7prod</user-name>

<password>leon</password>

<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor

.OracleExceptionSorter</exception-sorter-class-name>

<new-connection-sql>ALTER SESSION SET NLS_SORT=BINARY NLS_COMP=BINARY

SKIP_UNUSABLE_INDEXES=TRUE</new-connection-sql>

<prepared-statement-cache-size>50</prepared-statement-cache-size>

<share-prepared-statements>true</share-prepared-statements>

<metadata>

<type-mapping>Oracle9i</type-mapping>

</metadata>

<set-tx-query-timeout>true</set-tx-query-timeout>

<application-managed-security/>

</local-tx-datasource>

</datasources>

In order to optimize database access, the following parameters have to be evaluated and added in function of the number of concurrent sessions (shown values are default values):

<!--pooling parameters-->

<!-- the minimum number of connections in the pool (default 0 - zero) -->

<min-pool-size>5</min-pool-size>

<!-- the maximum number of connections in the pool (default 20) -->

<max-pool-size>20</max-pool-size>

<!-- the length of time to wait for a connection to become available when all the

connections are checked out (default 30000 = 30 seconds) -->

<blocking-timeout-millis>30000</blocking-timeout-millis>

<!-- the number of minutes after which unused connections are closed

(default 15 minutes) -->

<idle-timeout-minutes>15</idle-timeout-minutes>

CPQ MACRO LANGUAGE SECURITY

In order to prevent the CPQ Macro Language from executing dangerous code, a certain number of parameters can be declared, in order to avoid a certain number of situations:

  • Dangerous system calls (e.g. format hard drive)
  • Dangerous database calls (e.g. drop user)
  • Performance-impacting calls (e.g. infinite loops)
  • Response-time increases (e.g. “long” java calls”
    Warning: In order to avoid calls that impact performances too much, the macro language offers the capability to limit the number of instructions when running a macro.

    The ml.maxNbInstr parameter can be used for that purpose.

    Warning: In order to avoid an increase in response times, the macro language offers the capability to check the execution time for external Java calls. The ml.maxExecTime parameter can be used for that purpose.
    Warning: In order to avoid “dangerous” calls, the macro language offers the capability to disable any commands or functions presenting a security risk. The ml.securityLevel parameter can be used for that purpose.

The following table shows the methods which are impacted by the securityLevel.

ML.SECURITYLEVELNONEMEDIUMHIGH
SAVEEnabledEnabledDisabled
ML.SECURITYLEVELNONEMEDIUMHIGH
VERSIONEnabledEnabledDisabled
DisableTraceEnabledEnabledDisabled
EnableTraceEnabledEnabledDisabled
EXECUTEEnabledEnabledDisabled
FILE_ACCESSEnabledEnabledDisabled
CopyFileEnabledEnabledDisabled
CreateDirectoryEnabledEnabledDisabled
CreateDirectoryTreeEnabledEnabledDisabled
CreateJarFileEnabledEnabledDisabled
CreateZipFileEnabledEnabledDisabled
DeleteFileEnabledEnabledDisabled
ExpandJarFileEnabledEnabledDisabled
ExpandZipFileEnabledEnabledDisabled
WRITE_FILEEnabledEnabledDisabled
CLOSE_FILEEnabledEnabledDisabled
ML.SECURITYLEVELNONEMEDIUMHIGH
FNAWKEnabledEnabledDisabled
READ_FILEEnabledEnabledDisabled
OPEN_FILEEnabledEnabledDisabled
ReadFileEnabledEnabledDisabled
RenameFileEnabledEnabledDisabled
WriteFileEnabledEnabledDisabled
SQL_BEGIN_TRANSACTIONEnabledEnabledDisabled
SQL_COMMITEnabledEnabledDisabled
SqlConnectPoolEnabledEnabledDisabled
SqlCloseCreatedPoolsEnabledEnabledDisabled
SQL_QUERYEnabledEnabledDisabled
SqlReadTableEnabledEnabledDisabled
SqlReadTableEnabledEnabledDisabled
SQL_ROLLBACKEnabledEnabledDisabled
ClearCleanupsToEnabledEnabledDisabled
ML.SECURITYLEVELNONEMEDIUMHIGH
GetNumCleanupsEnabledEnabledDisabled
PushCleanupEnabledEnabledDisabled
SetAnalyzeOnEnabledEnabledDisabled
SetAnalyzeOffEnabledEnabledDisabled
SHELLEnabledDisabledDisabled
WINEXE32EnabledDisabledDisabled
SQL_CONNECTEnabledDisabledDisabled
SQL_CREATEEnabledDisabledDisabled
SQL_DELETEEnabledDisabledDisabled
SQL_DROPEnabledDisabledDisabled
SQL_INSERTEnabledDisabledDisabled
SQL_UPDATEEnabledDisabledDisabled
getHttpResultEnabledDisabledDisabled
getHttpResultEnabledDisabledDisabled
getPropertyEnabledDisabledDisabled
ML.SECURITYLEVELNONEMEDIUMHIGH
getTcpIpResultEnabledDisabledDisabled
getCITHttpResultEnabledDisabledDisabled
getCITJMSResultEnabledDisabledDisabled
getCITTcpIpResultEnabledDisabledDisabled
setCITDatabaseEnabledDisabledDisabled
setCITDataDirectoryEnabledDisabledDisabled
setCITInputFileEnabledDisabledDisabled
setCITMLVariableEnabledDisabledDisabled
setCITOutputFileEnabledDisabledDisabled
setPropertyEnabledDisabledDisabled
setSystemParameterEnabledDisabledDisabled
setCITJMSAcknowledgerQueueEnabledDisabledDisabled
setCITJMSResponseQueueEnabledDisabledDisabled
setCITJMSServerQueueEnabledDisabledDisabled
setCITJMSTargetEnabledDisabledDisabled
ML.SECURITYLEVELNONEMEDIUMHIGH
setCITPoolEnabledDisabledDisabled
setCITTimeoutEnabledDisabledDisabled
ACRegistryKey()EnabledDisabledDisabled
OpenSubKeyEnabledDisabledDisabled
ACRegistryKey.closeKeyEnabledDisabledDisabled
ACRegistryKey.getStringValueEnabledDisabledDisabled
TYPEVAREnabledDisabledDisabled
SYSTEMEnabledDisabledDisabled
WINEXEEnabledDisabledDisabled
ROUNDEnabledDisabledDisabled

AUTOMATED VERSIONS REMOVAL

VERSION REMOVALDescriptionValue / Example
modeling.api.version.workflow.scheduler.nbVersionKeepThe maximum number of active versions. If there are more, the older versions will be removed by a batch process.Value must be greater than 0.
modeling.api.version.workflow.scheduler.cronExpressionCron expression used to trigger the version removal batch process execution. If no expression is found, the batch will not execute.Example: 0 00 13 * *

Trademarks

All other brands and their products are trademarks or registered trademarks of their respective holders and should be noted as such. This product includes software developed by the Apache Software Foundation https://www.apache.org/