WebSphere Product Center: WebSphere Commerce Integration

Version 5.2

 

 

 

 

 

 

 


Note! Before using this information and the product it supports, read the information in "Notices" at the end of this document.

 

23 March2005

This edition of this document applies to WebSphere Product Center, version 5.2 (5724-I68), and to all subsequent releases and modifications until otherwise indicated in new editions.

Copyright International Business Machines Corporations 2005. All rights reserved.
US Government Users Restricted Rights-Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

Table of Contents

Ch 1 Overview

Ch 2 Architecture

Application Design
Product Center custom scripts

Ch 3 Integration with WebSphere Commerce

Commerce Configuration
Exporting WC Data to Commerce

Setup for preview

Product Center Configuration

Ch 4 Business Processes

Full Export
Delta Export Delete

Delta Export Update

Appendix A - Data Model Reference

Commerce objects
Commerce related Product Center Objects

Notices

Ch 1 - Overview

Commerce integration provides a foundation for customers to establish a comprehensive, highly productive authoring environment for product information for their Business to Business (B2B) and Business to Consumer (B2C) e-commerce Web sites. WebSphere Product Center (hereafter called Product Center) can greatly extend the value of e-commerce implementations by dramatically improving the preparation of rich and accurate product information for publishing. 

In combination with an e-commerce platform, it provides tools for orchestrating the contributions of multiple users across functions to various Commerce processes. It also offers features and capabilities to significantly simplify aggregating, enhancing, managing, and approving large amounts of complex product information. 

Business processes supported include: new product introductions; creating cross-sells, up-sells and promotions; product end-of-life; synchronizing item information; mass uploads of items and their attributes to a Web site; and syndicating product information to multiple customer touch points in addition to e-commerce Web sites. 

Commerce server integration includes:

Requirements

Limitations

The product data that is defined in Product Center and loaded onto Commerce contains default inventory . The user would need to use the Commerce Suite Accelerator for changing it.

Ch 2 - Architecture

Data exchange between Product Center and Commerce is based on XML documents. The Commerce team should provide the DTD for their latest mass upload tool. Product Center scripts are used to create XML documents, which can be validated against the Commerce DTD, and FTP them to one pre- defined location from where the Commerce application will pick up the document and process the same. In case of any errors encountered during processing the XML document needs to be handled manually. 

The First catalog feed to commerce is considered to be the Full Export and subsequently only the objects that have either changed or deleted in Product Center are exported to commerce as part of the delta feed.

Product Center generates the XML that adheres to the DTD defined by commerce (WCS.dtd). The delta process always involves the execution of the delete xml first and then the update, to remove any inconsistency in the object states.

 

The integration of WebSphere Product Center and WebSphere Commerce accomplishes the following objectives:

Note: Refer to Appendix A for details on data model reference.

Application Design

The following objects are included in the Product Center integration package:

WCCatentryCtg – The Master Catalog in Product Center

WCSKUCtg – The SKUs that belong to a Product

WCSalesHr – The Sales Catalog

ActivityLog– The Activity Log Catalog

Product Center Custom Scripts

A number of Product Center scripts aid in the data-model representation of the commerce objects in Product Center. The following table describes them

Script Name Script Type Description/Functionality
WCCatentry Post Processiong Script  Catalog Script – Post Process

Performs basic data model validations like duplicate part number, defining attribute related validations etc

CatentryCtg post save WCSKUCtgPostSave

Checks if the item saved is a product, then creates the product as a category in the SKU catalog and also attaches the defining attribute as a secondary spec

WCSKUCtgPostSave  WCSKUCtgPostSave

Creates entry in activity log catalog

WCCatentryCtg Entry Preview Script  Entry Preview

Builds the XML for the item requested for preview and uploads the XML data as a HTTP Post and invokes the commerce preview command

WCSkuCtgEntryPreview Entry Preview 

Same as above, preview for a SKU

DataExportToCommerceScript  Report Script

The Report that facilitates the user to perform full/delta catalog feeds to commerce. This script in conjunction with some trigger scripts build the XML by computing the items to be exported from ActivityLog Catalog incase of delta , FTP the XML to a predefined directory ( described in the lookup table) and invokes the commerce command.

WC-Export.Wc.XmlFormat Trigger Script

ASP/JSP like This script is an important piece in building the XML. All the commerce XML nodes are described in this script as functions which are called from the trigger scripts.

WC.Validation.Utility.Lib Trigger Script

A validation trigger script to perform basic validations on the objects like not null, filtering of special characters, uniqueness validation etc.

WCExportUtil.wpcs Trigger Script 

The main work horse script which is invoked in case of full/delta export as well as during preview. Handles all the business logic and builds the XML

activityLogger.wpcs Trigger Script

This script handles all activity log catalog related entries. 

WC.utility.Lib Trigger Script

Has utility functions like changed Multi occurrence values for a item, creating secondary spec, deleting SKU relationship for catalog items etc.

CopyItemsandCategory Trigger Script 

This script is used to copy the items or the categories from the master catalog’s to the Sales Catalogs.

Library Logger  Trigger Script

 A logger utility used by dev to have a log of events.Currently commented out as logger is not thread safe.

 

Ch 3 - Integration with WebSphere Commerce

This chapter provides the configuration for both Product Center and WebSphere Commerce. 


Commerce Configuration

Pre-requisites

Setup for Commerce integration

Configuring integration commands

Use the following steps to configure the integration commands in WebSphere Commerce.

1) Load the file SQLLoad.xml file copied into C:\test directory, into the database, by running the idresolver followed by massloader command in the same window, as shown below: 

idresgen -dbname <dbname> -dbuser <dbuser> -dbpwd <passwd> -infile C:\test\ SQLLoad.xml –outfile C:\test\ SQLLoadout.xml –method mixed

massload -dbname <dbname> -dbuser <dbuser> -dbpwd <passwd> -infile C:\test\ SQLLoadout.xml –method sqlimport 

Note: In the SQLLoad.dtd file, ensure that the path for wcs.dtd is set appropriately

For example, if the wcs.dtd exists in the directory D:\WebSphere\CommerceServer56\schema\xml then the path should be specified as below: 

<!ENTITY % wcs.dtd SYSTEM "D:\WebSphere\CommerceServer56\schema\xml\wcs.dtd"> 

2) Load the wpcwcUserGroup.xml file which was copied into <WC_installDir>\xml\policies\xml directory. For this, open a command prompt window, go to <WC_installDir>\bin directory and run the acpload command as below:

acugload <database name> <database user> <password> wpcwcUserGroup.xml <schema name>

where 

d bname is name of database
dbuser is name of the user connecting to database
dbpwd is the password for the user connecting to database
schemaname is the name of the target database schema

3) Load the wpcwcpolicy.xml file which was copied into <WC_installDir>\xml\policies\xml directory. For this, open a command prompt window, go to <WC_installDir>\bin directory and run the acpload command as below:

acpload <dbname> <dbuser> <dbpwd> wpcwcpolicy.xml <schemaname>

where 

dbname is name of database
dbuser is name of the user connecting to database
dbpwd is the password for the user connecting to database
schemaname is the name of the target database schema

4) Open the MANIFEST.MF file which exists in the directory <WAS_installdir>\installedApps\<cell_name>\WC_<instance_name>.ear\Stores.war\META-INF and add the jar file WPCWC.jar to the end of the Class-Path. 

5) Open the WPCWCProperties.properties file in <WAS_installdir>\installedApps\<cell_name>\WC_<instance_name>.ear\Stores.war\WEB-INF\classes, and modify the following values appropriately 

dbname is name of database
dbuser is name of the user connecting to database
dbpwd is the password for the user connecting to database
idresinfiledir is the directory where the Product Center should FTP the input files

    For example : C:/WPC-WC/testing

massloadinfile is the output file that would be gerenerated from IdResolver process and which would go as an input to the massloader process

    For example: C:/WPC-WC/testing/idresout.xml

schemaname is the name of the target database schema

customizer is the Customizer file which has to be provided for other databases like Oracle.
    For example : OracleConnectionCustomizer.properties

propfilename is the path for the properties file IdResolveKeys.properties

    For example : C:/WebSphere/CommerceServer56/properties/IdResolveKeys.properties

Note : 

1. Add the following entry to the end of the file IdResolveKeys.properties file which exists in the directory <WC_installDir>\properties.

    ATTRIBUTE=@LANGUAGE_ID@NAME@FIELD1:LANGUAGE_ID NAME FIELD1

2. Do not modify the other properties of mixedmethod, sqlmethod, deletemethod and optimize.

3. Ensure that wcs.dtd is placed in the directory specified by idresinfiledir.


Exporting WC Data to Commerce

This section describes how to extracting information from WebSphere Commerce to a commerce stpre.

Create a new user

Create a new user ( belonging to the root organization ) in Commerce through the Org. Admin Console with Administrative Privileges. Assign a WPCAdministrator Role to the user.

Extract metatdata

Use the following steps for extracting metadata information from WebSphere Commerce:

1) Extract the zip file onto a local directory

2) Copy the filter file Export_MetaData_Filter.xml to a temporary directory. For example, C:\test.

3) Open the Export_MetaData_Filter.xml file to make the following changes and save the file :

4) Open a command prompt window and change to the directory <WC_installdir>\bin

5) Run the massextract tool from <WC_installdir>\bin as below :

    massextract -dbname <dbname> -dbuser <username> -dbpwd <password> -filter 
    C:\test\Export_MetaData_Filter.xml -outfile <outfile> -schemaname <schemaname>

    where 

    dbname: is name of database
    username: is name of the user connecting to database
    password: is the password for the user connecting to database
    outfile: is the name of the output xml file where the extracted data will be stored
    schemaname: is the name of the target database schema

The metadata information would be generated in a file, as defined by the value given for <outfile> above.

Edit generated outfile

Edit the <outfile> generated in the previous section. Go to following element at the end of the file and replace the logonPwd with information about the correct password that was created in the "Create a new user" section .

<userId
logonid = “<logonId of the user >”
logonpassword =”<logonPwd of the user>” />

This edited outfile would be the metadata information supplied to Product Center.

Configure to copy image files from Product Center to Commerce 

1. Open the WPCWCProperties.properties file in <WAS_installdir>\installedApps\<cell_name>\WC_<instance_name>.ear\Stores.war\WEB-INF\classes, and go to the property name ConsumerDirectImgDir.

2. This name has to be changed according to the stores that has been published. In this case, ConsumerDirect is the identifier of the store that has been published, hence the name ConsumerDirectImgDir.

3. If the identifier of the store published is ToolTech, then this property name is given as ToolTechImgDir instead of ConsumerDirectImgDir.

4. The value for this property name ConsumerDirectImgDir is given a path where the images of the store is placed. This path is relative to the StoreDirectory. For example, if the path of the store on the commerce machine is:

    <WAS_installdir>/installedApps/<cell_name>/WC_<instance_name>.ear/Stores.war/ConsumerDirect

 and the images are to be placed in the images directory within it, then the property should be mentioned as :

    ConsumerDirectImgDir = images


Setup for preview

1. From the WPC_WC_Version_X.zip file extract the zip file PreviewUtils.zip to a temporary folder.

2. Extract PreviewUtils.zip contents to WAS_HOME\installedApps\<node_name>\<cellname.ear>\Stores.war

There are two approaches to preview:

          Approach A: Use the existing sample JSPs for ConsumerDirect store

1. Publish the ConsumerDirect store using the Admin console interface in Commerce

2. Extract the JSPs from the samples.zip to WAS_HOME\installedApps\<node_name>\<cellname.ear>\Stores.war\ConsumerDirect. 

For example, C:\WebSphere\AppServer\installedApps\vdev\WC_demo.ear\Stores.war\ConsumerDirect

3. Restart the commerce server

Approach B ( Needs JSP development): Modifying the store JSPs for any other store 

Assumptions : The Databeans in the JSP are populated using their keyId .

Logic for Preview to work:

a) The Data Beans corresponding to Data received from Product Center are cached on the Commerce Server end in a Data Structure. This data structure is housed in a HashMap . This Data Structure can be retrieved from the HashMap using the PreviewBeanId value passed in the session. The Data Beans can be retrieved from this Data Structure using their primary key values passed in the request. The JSP uses these DataBeans (which contain merged information) instead of constructing their own Data beans. 

b) The JSP can be made to use these databeans by having a JSP, which performs the process of loading these data Beans into the page scope. This JSP should be statically included in all the JSPs, that require the preview feature. The name of the variable / key used to load the variable into page scope should ideally be the same as the name of the variable that the data bean is going to be used as in the JSP. ( This is for ease of development when using JSTL)

c) Certain features which are not to be enabled during preview (such as Ordering an Item etc) should be conditionally blanked out / replaced with an appropriate message. 

Description of Approach with code snippets:

Retrieving Data Beans from the Commerce Server 

See PreviewDatabeanEnvironmentSetup.jsp in the PreviewHelper directory for implementation.

Retrieving the Data structure

1) Obtain the Preview Bean ID from the HashMap 

HttpSession session1 = requst.getSession();
String prvw_Bean_Id = (String)
session1.getAttribute(MappingConstants.PRVW_DATA_BEAN_ID); 

2) Obtain the Data Structure , using this ID:

if (prvw_Bean_Id != null) { 
CommDataHashBucket wpcComMapDataBucket = CommDataHashBucket.getCommDataHashBucket();
WPCCommerceMapDataStructure wpcComDataStructure = 
wpcComMapDataBucket.getComDataStructure(prvw_Bean_Id);
HashMap catlgObjMap = 
wpcComDataStructure.getCatalogObjectsMap();

Retreiving the Data Beans

1) Catalog Data Beans :

String catlgId = request.getParameter("catalogId");
if (catlgId != null) { 
CatalogPreviewDatabean cPrvwDb = null; 
HashMap catlgDBMap = (HashMap) 
catlgObjMap.get(MappingConstants.CATALOG_BEAN);
cPrvwDb = (CatalogPreviewDatabean) catlgDBMap.get(new Integer(catlgId));

2) Category Data Beans :

String catgryId = request.getParameter("categoryId"); 
if (catgryId != null) { 
CategoryPreviewDataBean catgryPrvwDB = null;
HashMap catlgDBMap = (HashMap) 
catlgObjMap.get(MappingConstants.CATEGORY_BEAN);
catgryPrvwDB = (CategoryPreviewDataBean) 
catlgDBMap.get(catgryId);

3) For any of the other Product Related Data Beans

String prodId = request.getParameter("productId"); 
if (prodId != null) { 
    HashMap catlgDBMap = (HashMap) catlgObjMap.get(MappingConstants.PRODUCT_BEAN);

    Object prodLvLObj = catlgDBMap.get(prodId);

    if (prodLvLObj != null) {
    if (prodLvLObj instanceof ProductPreviewDataBean) {
        ProductPreviewDataBean prodPrvwDB = 
        (ProductPreviewDataBean) prodLvLObj;
                                                                            ; 
    }
    else if (prodLvLObj instanceof ItemPreviewDataBean) {
        ItemPreviewDataBean itemPrvwDB = (ItemPreviewDataBean) prodLvLObj;
    
    }
    else if(prodLvLObj instanceof PackagePreviewDataBean) 
    {
        PackagePreviewDataBean itemPrvwDB = 
        (PackagePreviewDataBean) prodLvLObj;

}
else if(prodLvLObj instanceof BundlePreviewDataBean){
    BundlePreviewDataBean itemPrvwDB = (BundlePreviewDataBean) prodLvLObj;

}else if(prodLvLObj instanceof DynamicKitPreviewDataBean){
DynamicKitPreviewDataBean itemPrvwDB = (DynamicKitPreviewDataBean) prodLvLObj;

}

Load these DataBeans into the Page scope 

if (cPrvwDb != null) {
pageContext.setAttribute("catalog",cPrvwDb,1); 

The name of variable used to put it in the page scope should be the same as the one used to instantiate it in the Store JSP. This has be to done for all kinds of Catalog Objects.

Statically include this JSP in the Existing JSP used for display of the catalog object.

For example: <%@ include file="../../PreviewHelper/PreviewDatabeanEnvironmentSetup.jsp" %> 

Ensure this Data Bean is used in the JSP

1) If using JSTL : No change required

2) If using regular JSP coding , perform a similar action to the one shown in the code snippet below:

DynamicKitDataBean DynamicKitDataBean = null;
String storeId = ((TypedProperty)request.getAttribute(ECConstants.EC_REQUESTPROPERTIES)).getString(ECConstants.EC_STORE_ID); 

if (pageContext.getAttribute("DynamicKitDataBean") == null) {
DynamicKitDataBean = new DynamicKitDataBean ();
com.ibm.commerce.beans.DataBeanManager.activate (DynamicKitDataBean, request);
} else {
DynamicKitDataBean = (DynamicKitDataBean) pageContext.getAttribute("DynamicKitDataBean");
}

Conditionally blanking out certain actions in Preview mode

To take care of these scenarios , Check for a value for PreviewBeanId and if set take appropriate action such as display a message stating action disabled. As shown in the following piece of code:

<c:when test="${!empty PreviewBeanId}">
<span class="text"><fmt:message key="SKU_NOT_BUYABLE" bundle="${storeText}" /></span><br /><br /> 
</c:when>

Configuration steps for Preview:

Fill up the corresponding entries shown below in the WPCWCproperties.properties file. These are the pages that will be used for Preview for various catalog objects created in Product Center. The keys are the combination of Store Identifier and Catalog Object Display. (In the below example : The Store Identifer is ConsumerDirect)

######### CATALOG DISPLAY JSP's ###############
ConsumerDirectCategoryDisplay = ShoppingArea/CatalogSection/CategorySubsection/CategoriesDisplay.jsp
ConsumerDirectProductDisplay = ShoppingArea/CatalogSection/CatalogEntrySubsection/ProductDisplay.jsp
ConsumerDirectItemDisplay = ShoppingArea/CatalogSection/CatalogEntrySubsection/ItemDisplay.jsp
ConsumerDirectDynamicKitDisplay = ShoppingArea/CatalogSection/CatalogEntrySubsection/DynamicKitDisplay.jsp
ConsumerDirectPackageDisplay = ShoppingArea/CatalogSection/CatalogEntrySubsection/PackageDisplay.jsp
ConsumerDirectBundleDisplay = ShoppingArea/CatalogSection/CatalogEntrySubsection/BundleDisplay.jsp


Product Center Configuration

Use the following steps to configure Product Center for WebSphere Commerce integration.

1. Create a company called carmel in WPC environment by running the command src/db/schema/cmp/create_cmp.sh --code=carmel

2. Now get the .zip file commerce_carmelV1.0.zip using FTP from the below specified location

Server : <refer to the covering note>
User name : <refer to covering note>
Password : <refer to covering note>
Location : <refer to covering note>

3. Extract the zip file in some local dir. This .zip file will contain below listed ones

4. As a work around to a bug in import/export tool first create the attribute collection WCSKUAttrValColl with out any content in it.

5. Import first COMMERCE_CARMELLKP.ZIP then COMMERCE_CARMELNONLKP.ZIP using WPC import environment feature into carmel company created in step 1.

6. Get the help from commerce team in filling the details for the below specified lookup table fields for the lookup table WCConfigLkpTbl, leave the other values in this lookup table as is:

a. WC1_STORE_ID 

ID of the store that is published

b. WC1_MEMBER_ID 

Commerce member ID

c. WC1_MASTER_CATALOG_ID 

ID of the master catalog for the store published

d. WC1_LANGUAGE_ID 

Will be always 1, don't change this value

e. WC1_ITEM_TYPE_ID 

Don't change this value

f. WC1_ITEM_SPC_ID 

Don't change this value 

g. WC1_BASE_ITEM_ID 

Don't change this value 

h. WC1_FFMCENTER_ID 

Get the help from Commerce team to fill in this value

i. WC1_QUANTITY_ID 

Don't change this value 

j. WC1_TRADE_POSCN_ID 

Get the help from Commerce team to fill in this value

k. WC1_SALES_CATALOG_ID 

One sales catalog must be created in the commerce instance and the ID of that catalog must be given here, get the help from commerce team to do that

l. WC1_FTP_HOST_NAME 

IP of the box where the commerce server is running

m. WC1_FTP_PORT 

FTP Port, normally this will not change, depends on the configuration of the FTP server in the commerce server box

n. WC1_FTP_USER_ID 

FTP user name for the commerce server box FTP server, get the help from commerce team to fill in this value

o. WC1_FTP_PASSWORD 

FTP password for the commerce server box FTP server, get the help from commerce team to fill in this value

p. WC1_FTP_PATH 

Path from which the massload tool will pickup the FTPed file, get the help from commerce team to fill in this value

q. WC1_SALES_HIERARCHY_NAME 

This should not be changed, predefined sales hierarchy for the sales/navigational catalog created in commerce as part of the step k

r. WC1_SERVER_NAME 

Name of the server where commerce server is running

s. WC1_LAST_UPLOAD_TIME 

Keep this empty first time so that initial load will be started, from then onwards this key will have the value of the last run time stamp of the report, if this is empty initial load will be executed

t. DEFAULT_LOCALE 

This attribute must have the default locale for the integration part. THIS MUST BE SET AT THE TIME OF DEPLOYMENT AND SHOULD NOT BE CHANGED AT A LATTER STAGE, ALSO THIS LOCALE MUST BE PART OF THE COMPANY ATTRIBUTES AND AS PART OF SPECS WCCatentryCtg, WCSKUCtg

u. WC1_LOGON_CMD 

This must be the fully qualified URL of the new Commerce Logon Cmd

http://<serverName_where_Commerce_installed>/webapp/wcs/stores/servlet/WPCWCLogOn?

v. WC1_LOGON_CMD_USER 

 User created for security purpose ( Consult commerce team )

w. WC1_LOGON_CMD_USER_PASSWORD 

 Password of the user created in v.

7. The lookup table " WCCurrencyLkpTbl" has to be filled with the supported currencies in commerce, the exact three character value for each currency needs to be filled for both key and value. For example, USD as key and USD as value.   Get the help from commerce team in getting the list of currencies supported in the respective commerce version.

8. To run the initial load / delta upload execute the Product Center report DataExportToCommerce. Depending on the value of the above said field either initial load or delta load will be executed

9. Make sure the commerce server IP is available as part of the /etc/hosts file in the Product Center installed box.

10. Because of a bug in the Import/Export tool, the attribute collection for the hierarchy WCPdtHier, WCPdtHierAttrColl needs to be set manually.

11. Make sure to set the value for "Locale for Item and Category Data Display" in Home > My Settings is set to the proper Locale so that user be able to see the content in the preview feature in the same locale as the user expects.

12. Make sure to have the link attribute catentry of WCCatentryCtg in attributes page is properly linked to WCSKUCtg attribute catentry_id, as because of a import / export bug this link attribute is not getting set

13. Mount the public_html directory.

14. Make sure that the catalog attributes have the entries for identifier and name with values as Master and MyMasterCatalog

Steps to add a sales hierarchy

1. Create a sales catalog in Commerce

2. Create a category tree with spec as WCCgrySalesHSpec

3. Attach this as a secondary hierarchy to the catalog WCCatentryCtg

4. Make a new entry in the lookup table SalesLookupTable

5. Make a new entry in the lookup table Last Sequence Register

6. Copy the content from "Copy Items or Category" from Data Model Manager -> scripting -> script console -> Entry Preview Script, then create a new entry preview script with the name as current sales category tree name appended with "Copy Items or Category" so that it will be unique

7. Copy the script content from post save and post process event for WCSalesHr and paste the same content for newly created sales hierarchy as well

 

Ch 4 Business Processes

The First catalog feed to commerce is considered to be the Full Export and subsequently only the objects that have either changed or deleted in Product Center are exported to commerce as part of the delta feed.

Product Center generates the XML that adheres to the DTD defined by commerce (WCS.dtd). The delta process always involves the execution of the delete xml first and then the update, to remove any inconsistency in the object states.

Full Export 

Delta Export – Delete

Delta Export – Update

Appendix A - Data Model Reference

Commerce objects

As the primary objective of the integration is to share the data available in Product Center, and the XML data model that will be generated from Product Center for this purpose is the mass upload document which is a direct representation of different tables in commerce, an understanding of commerce internal objects and in which table an object is stored and which tables that have relationships between different commerce objects would be helpful.

 

Store 

We may look at this as a master container under which all the data will be available interrelated. It is possible to have multiple stores in the same commerce application, and the same information is available in more than one stores. All the store information will be stored in the commerce table store and storeent.

Catalog 

These catalogs are similar to Product Center catalogs. These catalogs will be attached to atleast one store. Catalog related information will be stored in 2 different tables catalog / catalogddsc. Relationship between catalog and store will be stored in storecat. 

Category 

These categories are similar to category in Product Center. These categories will be under catalogs. Category related information will be store in 2 tables, catgroup / catgrpdesc. Relationship between different categories will be stored in catgrprel table. Relationship between category and catalog is stored in cattogrp table and relationship between category and store is stored in storecgrp table.

Product 

 These products will be attached under categories. All the product related information will be stored in 3 different tables, baseitem / catentry / catentdesc. Product, bundle, static kit, dynamic kit, item all these objects will be stored in the same set of tables catentry / catentdesc, if catenttype_id field of catentry has the value as productBean, then current object is product. Also product, static kit, dynamic kit related info will be stored in one more table called baseitem, where if the itemtype_id field has the value as ITEM, current object is Product. Storecent table will store the relationship between store and product. Relationship between category and product will be stored in the table catgpenrel.

Attributes 

 These attributes will be attached to a product and attribute related information will be stored in the table attribute including relationship between attribute and product. 

Item 

 These items are similar to items in Product Center. Items will be attached under products. Information related to item is stored in 2 tables, catentry / catentdesc. Both item and product is stored in the same table. catenttype_id is the one which differentiates between product and item. For item value for catenttype_id will be itemBean. Similar to products, items will also be related to specific stores and that will information will be stored in the same place as products storecent table. Catentrel table maintains the relationship between product and item. 

Attributes Values 

 These attributes values will be attached under items and will hold the value for the attributes attached to the product to which these items are attached. Attribute value related information will be stored in attrvalue table including the relationship between item and attribute value.

Bundles 

 Bundle is a grouping object which can have different set of items / products / static kit / dynamic kit object to form one bundle. This bundle will be stored in 2 tables’ catentry and catentdesc. catenttype _id for this object is BundleBean.

Static kit 

 Similar to bundles, except that bundles can be disassociated, but static kits can’t be and static kits can contain only SKU. Catenttype_id for static kit is StaticBean. In addition to catentry and catentdesc tables, portion of info related to static kit will also be stored in baseitem table, here if the value of the field itemtype_id is STKT current object is static kit.

Dynamic Kit 

 Similar to static kit, main difference here is that this can hold the product configurator URL where the item information is available locally, but will be resolved by product configurator in the specified URL. In addition to catentry and catentdesc tables, portion of info related to static kit will also be stored in baseitem table, here if the value of the field itemtype_id is DNKT current object is dynamic kit. In the catentry table catentrytype_id for this object is DynamicKitBean.

Commerce related Product Center Objects

All commerce related Product Center objects are pre-pended with WC, so that there is no conflict with any other objects.

The following table summarizes the previous table above. Please refer to the validation section that follows the table below for a set of validations that is applicable.

Object / feature

Product Center Representation Commerce Representation

Store

Below values will be stored as key value pairs in Product Center lookup table
  • store_id
  • member_id
  • ffmcenter_id
  • allocationgoodfor – if 1 ATP enabled, for ATP Product Center needs to load some more static values, else no need.
  • identifier
  • tradeposcn_id
Store related info is store in tables STORE and STOREENT. Every store is associated with one master catalog and multiple sales catalogs

Catalog

Mater catalog is represented as 2 catalogs and 2 hierarchies in Product Center

1. Catentry catalog
2. SKU catalog
3. Product Hierarchy
4. product SKU Hierarchy

Any catalog specific attributes will be stored as part of catalog attributes in Product Center. For commerce specific attributes we will use the custom catalog attribute definition feature where we can specify a key and respective value for catalog attributes. Hierarchy related attributes will also be stored in the same way. Catenetry catalog will have the representation of WC objects product, bundle, static kit and dynamic kit

All catalog specific data is stored in tables catalog, catalogdsc, storecat. Different objects that can be associated with master catalog are category, Product, Item, Bundle, Static Kit and Dynamic Kit. These information is stored in below tables

1. catgroup

2. catgrpdesc

3. cattogrp

4. storecgrp

5. catgrprel

6. baseitem

7. catentry

8. catentdesc

9. catgpenrel

10. catentrel

11. attribute

12. attrvalue

Category

Similar to Product Center category. Product Hierarchy will be used to store the category related details. In the product sku hierarchy we will make sure that user can’t create any category under the product category and no items created under any other category other than the leaf category which is a product. All category related information is stored in tables

1. catgroup

2. catgrpdesc

3. cattogrp

4. storecgrp

5. catgrprel

Product

Product will have its own attributes as well as set of attributes will be defined specific to products, for which value will be given at the item level. As there is no direct representation of this in Product Center, product will be defined in the catentry catalog where for the catentrytype_id field user will select the value as Product, in the post save of that catalog one category will be created in the product sku hierarchy and the defined attributes given for this product in the catenetry catalog will be created as secondary spec and attached to the newly created category in product sku hierarchy as item category spec, also one relationship attribute in this hierarchy spec will related the respective item in the catentry catalog. There is no need for the user to add this product category separately. The moment he creates the product in the catenetry catalog, this category will be created automatically and ready to add item. Products can’t have value for relationship attributes, if the user had entered then validation error will be thrown
Product information is stored as part of tables baseitem, catentry, cateentrydesc tables. In the base item identifier for product will be field itemtype_id having value as ITEM and in the catentry table field catenttype_id having the value as ProductBean

SKU

All SKU related details are stored in the SKU catalog. This catalog is associated to the product sku hierarchy in which all the products will the leaf category in which attributes for them are attached as item category specs in the post save of catenetry catalog. While the SKU is getting added it will be pre-populated with the respective attribute values from the linked product and user may change it and save it as per his request. All SKU related details will be stored in catentry, cateentrydesc tables. If the field catenttype_id in catentry table has the value as ItemBean current entry is SKU

Bundle

In the catenetry catalog catenttype_id field having the value as Bundle will represent bundle object of commerce. This spec will have one link attribute which is multi occurrence attribute and attached to SKU catalog. This will be used to group different SKUs from SKU catalog. These bundles can have descriptive attributes but not defined attributes All bundle related details will be stored in catentry, cateentrydesc tables. If the field catenttype_id in catentry table has the value as BundleBean current entry is bundle

Static kit

Catentry catalog will represent static kit object of commerce and the value for the catentrytype_id must be StaticKit. This catalog will be attached to product hierarchy. Current spec will have one link attribute which is multi occurrence attribute and will be linked to SKU catalog. 
All static kit related details will be stored in baseitem, catentry, cateentrydesc tables. If the field catenttype_id in catentry table has the value as StaticBean current entry is bundle and if the field itemtype_id in baseitem has the value as STKT current object represents static kit

Dynamic Kit

Catenetry catalog will represent dynamic kit object of commerce and the value for the field catentrytype_id must be DynamicKit. This catalog will be attached to product hierarchy. Current catalog spec will have one link attribute which is multi occurrence attribute and attached to SKU catalog. Along with this one more multi occurrence attribute of type URL will be used to represent the product configurator URL All dynamic kit related details will be stored in baseitem, catentry, cateentrydesc tables. If the field catenttype_id in catentry table has the value as DynamicKitBean current entry is bundle and if the field itemtype_id in baseitem has the value as DNKT current object represents static kit

ATP

If the field ALLOCATIONGOODFOR in the table store has the value as 1, this feature is enabled. There is no computation or any user entry is required to represent this feature in Product Center. Pre defined static values which will be provided by commerce team is used to create XML snippets to fill the respective tables in commerce. 
Below tables in commerce are used to represent ATP feature1. itemversn2. distarrang3. storeitem4. storeitmffc5. inventory6. itemspc7. versionspc8. itemffmctr

Merchandising

This feature is implemented using set of merchandising specific attributes that are defined in the current spec of catentry catalog. There will be 2 important attributes merchandising type attribute which can have the values as X-SELL,UPSELL, ACCESSORY, REPLACEMENT and other attribute will be a relationship attribute where the user can select the cantentry catalog or SKU catalog and relate the respective WC objects  Below set of tables are related to merchandising in commerce1. massoctype2. massoc3. massoccece

Sales

This feature will be represented by having one hierarchy which will have different categories in it, either created directly by the user or user may choose to have same set of category along with its children from the product hierarchy. This can have only information till category. To differentiate the sales hierarchy from other hierarchies, we will add one hierarchy attribute, HIERARCHY_TYPE and the value as SALES.

Product, SKU, bundle, static kit and dynamic kit information can’t be represented as part of the sales hierarchy. There can be as many sales hierarchies as required by the user.In addition to user creating his own categories, if he chooses to copy the structure from the master catalog or from other sales catalog he should be able to. For this purpose we will add entry preview script to any sales hierarchy where he can choose to copy structure from other sales catalog or master catalog under the current category.

One normal catalog is created and field mastercatalog in storecat is set to 0.

Item preview

Entry preview script will be used for this feature, on selecting this feature one URL in commerce will be invoked along with necessary item information. This item information will be again a mass upload XML for the current entry, which might be a category, product, bundle, static kit or dynamic kit. Along with invoking the URL of WC, we will be passing on type of the WC object as well.  

Add

Any add operation involves adding images as well as attributes, during export the attribute information will be transferred as part of the mass upload XML structure, images will zipped and be sent along with the mass load XML document  

Modify

Similar to add. Any change in any attribute will trigger to have all the attributes sent along, no partial information will be sent  

Delete

Always any delete in Product Center will trigger to set the markfordelete field in commerce tables, which is again update action in respective commerce tables and to invoke one command URL in WC where that command can take care of any further action like SQLs to be fired to complete this action  

Localization

All the attributes that are having language_id, will be defined as localized attributes in Product Center. In the Product Center settings user may enable all the locales that he / she wants to enable Locales supported using the language_id field in different tables. As of now commerce supported locales are en_US, ja_JP, fr_FR, de_DE, it_IT, es_ES, pt_BR, zh_CN, zh_TW, ko_KR

Currency

In the Product Center settings user may configure all the currencies that the user wants to. As of now commerce supported currencies are BRL, CNY, EUR, JPY, KRW, TWD,USD

Below set of basic validations will be applied while the user is saving the item in the catentry catalog as part of the post processing script. 

Commerce table definitions are directly converted to XML tags having table name as the element name and different table fields defined as element attributes. Attributes values are the actual values that need to be filled in those table fields. For the primary key alone, they are pre-pended with the @ symbol so that the primary key generation rule of commerce will be used to recreate the primary before storing these values in commerce tables. 

It is possible, during implementation, to add one or more extensions of this table and add few more fields as needed. During these kind of situations, the extender table will have the link to the corresponding record in extended table in the form of foreign key. 

Data transfer between Product Center and commerce will be in the form of XML documents. As specified in the solution brief, these generated documents will be placed in one common place known to both Product Center and commerce and commerce will pickup those documents from and process them. 

Note: Error handling as part of this data exchange is handled manually. There will not be any communication from commerce to Product Center; it will always be from Product Center to Commerce.

XML document generated from Product Center MUST be compatible with this DTD. XML document generated as per this DTD is direct representation of Commerce data model in the schema level. 

For Product Center Item preview capability in commerce, using custom tools item preview menu will be added in Product Center and whenever req. user may choose that menu item while after selecting that item. Now the item details which can be shown in the static page provided by commerce for this item preview capability will be passed on using HTTP Post method. Now the same will be parsed in the commerce side and shown in the commerce static page at the appropriate place. How the static page should look like, what are the other places user may navigate from that page, how the user will be controlled with in that static page is up to the commerce team to decide on.

Requirement from Product Center team will to have a URL where it can do a HTTP Post call along with the necessary data to be shown in the static page.

Notices

IBM may not offer the products, services, or features discussed in this document in all countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service.

IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to:

IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
U.S.A.

The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law:

INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you.

This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or program(s) described in this publication at any time without notice.

Any references in this information to non-IBM Web sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk.

IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you.

Licensees of this program who wish to have information about it for the purpose of enabling: (i) the exchange of information between independently created programs and other programs (including this one) and (ii) the mutual use of the information which has been exchanged, should contact:

IBM Burlingame Laboratory
Director IBM Burlingame Laboratory
577 Airport Blvd., Suite 800
Burlingame, CA 94010
U.S.A

Such information may be available, subject to appropriate terms and conditions, including in some cases, payment of a fee.

The licensed program described in this document and all licensed material available for it are provided by IBM under terms of the IBM Customer Agreement, IBM International Program License Agreement, or any equivalent agreement between us.

Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurement may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment.

Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not necessarily tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.

This information may contain examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples may include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental.

All statements regarding IBM's future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only.

Programming interface information

Programming interface information, if provided, is intended to help you create application software using this program.

General-use programming interfaces allow you to write application software that obtain the services of this program's tools.

However, this information may also contain diagnosis, modification, and tuning information. Diagnosis, modification and tuning information is provided to help you debug your application software.

Warning: Do not use this diagnosis, modification, and tuning information as a programming interface because it is subject to change.

Trademarks and service marks

The following terms are trademarks or registered trademarks of International Business Machines Corporation in the United States or other countries, or both:

IBM
the IBM logo
AIX
CrossWorlds
DB2
DB2 Universal Database
Domino
Lotus
Lotus Notes
MQIntegrator
MQSeries
Tivoli
WebSphere

Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both.

MMX, Pentium, and ProShare are trademarks or registered trademarks of Intel Corporation in the United States, other countries, or both.

Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.

Other company, product or service names may be trademarks or service marks of others.


IBM WebSphere Product Center contains certain Excluded Components (as defined in the relevant License Information document), to which the following additional terms apply. This software is licensed to you under the terms and conditions of the International Program License Agreement, subject to its Excluded Components provisions. IBM is required to provide the following notices to you in connection with this softwatre:

i.) IBM WebSphere Product Center includes the following software that was licensed by IBM from the Apache Software Foundation under the terms and conditions of the Apache 2.0 license:

- Apache Regular Expression v1.2
- Apache Axis v1.1
- Apache XML4J v3.0.1
- Apache Log4j v1.1.1
- Apache Jakarta Commons DBCP Package v1.1
- Apache Jakarta Commons Pool Package v1.1
- Apache Jakarta Commons Collections Package v3.0

Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all ther entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation, and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

ii.) IBM WebSphere Product Center includes the following software that was licensed by IBM from Scott Hudson, Frank Flannery and C. Scott Ananian under the following terms and conditions:

- Cup Parser Generator v0.10k

CUP Parser Generator Copyright Notice, License, and Disclaimer
Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian 
Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the names of the authors or their employers not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. The authors and their employers disclaim all warranties with regard to this software, including all implied warranties of merchantability and fitness. In no event shall the authors or their employers be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of this software. 

iii.) IBM WebSphere Product Center includes the following software that was licensed by IBM from Elliot Joel Berk and C. Scott Ananian under the following terms and conditions:

- JLex v1.2.6

JLEX COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.
Copyright 1996-2003 by Elliot Joel Berk and C. Scott Ananian 
Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the name of the authors or their employers not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. The authors and their employers disclaim all warranties with regard to this software, including all implied warranties of merchantability and fitness. In no event shall the authors or their employers be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of this software. Java is a trademark of Sun Microsystems, Inc. References to the Java programming language in relation to JLex are not meant to imply that Sun endorses this product. 

iv.) IBM WebSphere Product Center includes the following software that was licensed by IBM from International Business Machines Corporation and others under the following terms and conditions:

- ICU4J v2.8

ICU License - ICU 1.8.1 and later
COPYRIGHT AND PERMISSION NOTICE

Copyright (c) 1995-2003 International Business Machines Corporation and others
All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder.

-----------------------------------------------------------------------------
All trademarks and registered trademarks mentioned herein are the property of their respective owners.