I Appendix: Configurator Auto-Populator
With release v22.0, the xcenter-spring-beans.xml has been removed (not deprecated). The Xadmin UI is now the one stop solution to configure broadcasters, integrations, Merchandise Hierarchy levels as well as Brazil and Italy country configurations for both cloud and on-premise solutions.
In order to facilitate a seamless upgrade for on-premise customers, Xadmin has been equipped with the config-auto-populator, a built-in tool to auto-populate the configurations from the xcenter-spring-beans.xml on Xadmin startup. It is expected that the retailer would continue to have the old xcenter-spring-beans.xml in the external configuration location along with a merged copy of xcenter.properties for this to work.
To merge xcenter.properties, locate the following commented out section at the very end of the xcenter.properties file for release v22. Follow its instructions to uncomment and copy values of all properties that are present in the old xcenter.properties file from a prior release.
#####-------------------------------------------------------------------
##### Auto Populate (Xoffice on premise only)
#####-------------------------------------------------------------------
## Starting from V22, xcenter-spring-beans.xml in external configuration
## directory is removed. Configurations for broadcasters, integrations, and
## merchandise hierarchy levels are stored in database and managed through
## Xadmin UI.
## To facilitate seamless upgrade, Xadmin provides "auto populate" feature.
## If xcenter-spring-beans.xml from a prior release is present in external
## configuration directory, Xadmin automatically converts its XML based
## configurations into database configurations for V22 during its start up
## time.
## For auto populate to work, if any of the following properties are present
## in prior release, uncomment and copy their values here for auto populate
## to consume.
#cloud.sftp.host=localhost
#cloud.sftp.username=encrypted username
#cloud.sftp.password=encrypted password
#cloud.sftp.locate.workingDir=locate
#cloud.sftp.relate.workingDir=relate
#cloud.fts.relate.endpointUrl=localhost
#cloud.fts.relate.workingDir=relate
#cloud.http.locate.endpoint=https://HOST:PORT/Locate/faws/FileService/OROB-IMPORTS
#cloud.http.locate.timeout.connect=30
#cloud.http.locate.timeout.read=30
#cloud.http.locate.compress=true
#cloud.http.locate.oauth2=false
#cloud.http.locate.username=encrypted username
#cloud.http.locate.password=encrypted password
#avatax.config.orgCompanyIds = 1000:2729114,2000:2729115
#avatax.connectionURL=https://localhost:443
#avatax.connection.servicePath.prefix=/api/v2/content/data/companies
#avatax.ping.servicePath.prefix=/api/v2/utilities/ping
#avatax.connection.username=encrypted username
#avatax.connection.password=encrypted password
#avatax.config.download_time=IMMEDIATE
#avatax.config.accountId=2001508678
#avatax.config.getDelta=true
#ocds.orgChainIds=1000:1
#ocds.connectionURL=https://localhost:443
#ocds.connection.servicePath.prefix=/ords/ocds/omnichannel
#ocds.connection.username=encrypted username
#ocds.connection.password=encrypted password
#ocds.retainJobHistory=90
#ocds.offset=30
#ocds.request.limit=-1
#ocds.retailLocation.tillAccountability=false
#ocds.retailLocation.locale=en_US
#ocds.taxGroupIdForNonTaxable=0
#ocds.includeFutureDate=false
#ocds.vatRoundingCode=HALF_UP
#ocds.vatRoundingDigits=2
#ocds.vatRoundingAtTransLevel=true
#ocds.orgHierarchyActive=true
#ocds.retailLocationActive=true
#ocds.merchHierarchyActive=true
#ocds.dimensionTypeActive=true
#ocds.dimensionValueActive=true
#ocds.itemActive=true
#ocds.enterpriseItemActive=true
#ocds.relatedItemActive=true
#ocds.enterpriseItemLocActive=true
#ocds.itemLocActive=true
#ocds.itemUpcActive=true
#ocds.priceActive=true
#ocds.regularPriceChangeActive=true
#ocds.clearancePriceChangeActive=true
#ocds.promotionActive=true
#ocds.vatActive=true
#####-------------------------------------------------------------------
##### End of Auto Populate
#####-------------------------------------------------------------------
On startup, the Xadmin Quartz scheduler now runs an AutoPopulateJob with no repeat interval. It auto populates only if there is an xcenter-spring-beans.xml file in the external configuration location and if there are no existing broadcasters, integrations, Merchandise Hierarchy Levels and Brazil/Italy country configurations in the database. It only runs for an on-premise solution. This job reads the spring bean definition from the Xml as an XmlDocument and uses XPath picks in the afore-mentioned configurations to generate SQLs and persist them into the corresponding database tables.
The configuration XML bean elements and attributes are mapped to the database tables and columns as follows:
Broadcasters
Broadcasters are configured in the "broadcasterManager" bean in the xcenter-spring-beans.xml file on a per organization basis. Each broadcaster bean referenced in the manager's "broadcasterList" property is mapped to a record in the cfg_broadcaster table with the bean's constructor-arg "orgId" and "broadcasterServiceId" serving as the record's primary keys. Any filters or modifiers specified in the broadcaster are mapped to records in the table cfg_broadcaster_filters and cfg_broadcaster_mods.
Note:
For Relate broadcaster of class "com.micros_retail.xcenter.broadcast.relate.RelateBroadcaster", its filters are ignored and not auto populated, because this broadcaster has built-in filters.All broadcasters are initially populated as disabled. Manual enablement of broadcasters through the Broadcaster Management UI in Xstore Office is required.
Following is an example of broadcaster - postTransactionRelate_1
Bean | Attribute/constructor-args/property | Database Table | Database Column | Value if specific |
---|---|---|---|---|
postTransactionRelate_1 |
broadcasterServiceId |
CFG_BROADCASTER |
SERVICE_ID |
NA |
postTransactionRelate_1 |
orgId |
CFG_BROADCASTER |
ORGANIZATION_ID |
NA |
postTransactionRelate_1 |
class |
CFG_BROADCASTER |
TYPE |
RELATE |
postTransactionRelate_1_jaxws |
endpointAddress |
CFG_BROADCASTER |
ENDPOINT_URL |
NA |
postTransactionRelate_1 |
retrySleepMillis |
CFG_BROADCASTER |
RETRY_SLEEP_MILLIS |
NA |
postTransactionRelate_1 |
workQueueBatchReadSize |
CFG_BROADCASTER |
BATCH_SIZE |
NA |
postTransactionRelate_1 |
pollingIntervalMillis |
CFG_BROADCASTER |
POLLING_INT_MILLIS |
NA |
postTransactionRelate_1 |
threadCount |
CFG_BROADCASTER |
THREAD_COUNT |
NA |
broadcasterBuilder |
constructor-arg 1 |
CFG_BROADCASTER |
CONNECT_TIMEOUT |
NA |
broadcasterBuilder |
constructor-arg 3 |
CFG_BROADCASTER |
REQUEST_TIMEOUT |
NA |
broadcasterBuilder |
constructor-arg 6 |
CFG_BROADCASTER |
USE_COMPRESSION_FLAG |
NA |
NA | NA |
CFG_BROADCASTER |
ENABLED |
false |
NA | NA |
CFG_BROADCASTER |
AUTH_MODE |
ORCE_CUSTOM |
NA | NA |
CFG_BROADCASTER |
USER_NAME |
NA |
NA | NA |
CFG_BROADCASTER |
PASSWORD |
NA |
removePCIData |
NA |
CFG_BROADCASTER_MODS |
NA | NA |
Integrations
Integration jobs are configured in the "jobsList" bean referenced by the "jobDetails" property of the "xcenterJobScheduler" bean in the xcenter-spring-beans.xml file. With the exceptions of NFE and Italy Invoice export, which are discussed in the Country Pack Configurations section, integration jobs are mapped to records in the cfg_integration and cfg_integration_p tables.
-
Locate, Avalara, and attachment integration jobs are configured in the xcenter-spring-beans.xml file on a per org basis. An integration job is mapped to a record in the cfg_integration table for the org specified in its integration task property "organizationId".
-
An OCDS scheduled or on-demand integration job configured in the xcenter-spring-bean.xml file is mapped to one or multiple records in the cfg_integration table, one for each organization specified in the "ocds.orgChainIds" property in the xcenter.properties file. In the following example, two cfg_integration records are created for an OCDS job, one for organization 1000 and another one for organization 2000.
#####------------------------------------------------------------------- ##### ocds.orgChainIds is a comma separated Xstore organization and OCDS ##### chain mappings. For example, the following maps organization 1000 ##### to chain 1, and organization 2000 to chain 2. #####------------------------------------------------------------------- ocds.orgChainIds=1000:1,2000:2
-
A Relate integration job configured in the xcenter-spring-bean.xml file is mapped to one or multiple records in the cfg_integration table, one for each organization specified in the Xcenter table com_external_system_map for external system ORCE. In the following example, two cfg_integration records are created for a Relate job, one for organization 1000 and another one for organization 2000.
All integrations are initially populated as disabled. Manual enablement of integrations through the Integration Management UI in Xstore Office is required.
Following is an example of Integration - Relate
Bean/Table | Attribute/constructor-args/property/column | Xcenter Property | Database table | Database Column | Value if specific |
---|---|---|---|---|---|
Bean relateFilePollFTSTask |
NA | NA |
CFG_INTEGRATION |
INTEGRATION_SYSTEM |
ORCE |
Bean relateFilePollFTSTask |
NA | NA |
CFG_INTEGRATION |
IMPLEMENTATION_TYPE |
CLOUD |
Bean relateFilePollFTSTask |
NA | NA |
CFG_INTEGRATION |
INTEGRATION_TYPE |
REST |
Bean relateFilePollFTSTask |
NA | NA |
CFG_INTEGRATION |
AUTH_MODE |
OAUTH2 |
Table com_external_system_map |
Column organization_id |
NA |
CFG_INTEGRATION |
ORGANIZATION_ID |
NA |
Table com_external_system_map |
Column system_cd |
NA |
CFG_INTEGRATION_P |
STRING_VALUE for PROPERTY_CODE ORG_CODE |
NA |
NA | NA |
cloud.fts.relate.endpointUrl |
CFG_INTEGRATION_P |
STRING_VALUE for PROPERTY_CODE ENDPOINT_URL |
NA |
NA | NA |
cloud.fts.relate.workingDir |
CFG_INTEGRATION_P |
STRING_VALUE for PROPERTY_CODE WORKINGDIR |
NA |
Bean relateFilePollFTSTrigger |
Property repeatInterval |
NA |
CFG_INTEGRATION_P |
STRING_VALUE for PROPERTY_CODE FILE_POLL_DELAY |
NA |
Country Pack Configurations
There are two country pack integration jobs configured in the xcenter-spring-beans.xml file: NFE and Italy Invoice export. Although they can be configured in the xml on an organization specific basis, they are mapped to Xadmin system settings in table cfg_system_setting which is not organization specific. This means once auto populated in v22, NFE or Italy invoice is either enabled for all organizations or none, and the integration start time is the same across organizations. If different start times are specified in the xcenter-spring-beans.xml file across different organizations, the last one overrides all previous ones in the Xadmin Settings.
All country pack integrations are initially populated as disabled. Manual enablement of integrations through Xadmin Settings in the Xstore Office UI is required.
Bean | Attribute/constructor-args/property | Database table | Database column | Value | Comments |
---|---|---|---|---|---|
italyInvoiceExportDataTask |
NA |
CFG_SYSTEM_SETTING |
CONFIG_ID |
ItalyInvoiceExportEnabled |
value is false |
italyInvoiceExportDataTrigger |
cronExpression |
CFG_SYSTEM_SETTING |
CONFIG_ID |
ItalyInvoiceExportJobStartTime |
NA |
nfePushDataTask |
NA |
CFG_SYSTEM_SETTING |
CONFIG_ID |
BrNFEExportEnabled |
value is false |
nfePushDataTrigger |
cronExpression |
CFG_SYSTEM_SETTING |
CONFIG_ID |
BrNFEExportJobStartTime |
NA |
Merchandise Hierarchy Levels
The Merchandise Hierarchy Level table itm_merch_hierarchy_levels was introduced in v22. In prior releases, custom merchandise levels are configured in the xcenter-spring-beans.xml file as "merchandiseHierarchyInfo" bean. The configuration is not organization specific, so there can only be one version of merchandise levels defined across multiple organizations. Once auto populated in v22, custom merchandise levels are created in table itm_merch_hierarchy_levels for each organization defined in the system.
If no custom merchandise levels are specified in the xcenter-spring-beans.xml file, built-in default merch levels DEPARTMENT/SUBDEPARTM/CLASS/SUBCLASS are populated in table itm_merch_hierarchy_levels for each organization.
If no custom merch levels are specified in the xcenter-spring-beans.xml file, built-in default merch levels DEPARTMENT/SUBDEPARTM/CLASS/SUBCLASS are populated in table itm_merch_hierarchy_levels for each organization.
Bean | Attribute/constructor-args/property | Database table | Database column |
---|---|---|---|
merchandiseHierarchyInfo |
level1Code |
ITEM_MERCH_HIERARCHY_LEVELS |
LEVEL_CODE |
merchandiseHierarchyInfo |
level2Code |
ITEM_MERCH_HIERARCHY_LEVELS |
LEVEL_CODE |
merchandiseHierarchyInfo |
level3Code |
ITEM_MERCH_HIERARCHY_LEVELS |
LEVEL_CODE |
merchandiseHierarchyInfo |
level4Code |
ITEM_MERCH_HIERARCHY_LEVELS |
LEVEL_CODE |