Welcome to the IBM Websphere Commerce Hub


Welcome to the IBM Websphere Commerce Hub

Come join me in my journey to explore the various features and capabilities of IBM Websphere Commerce and understand how retailers can benefit from its really cool out-of-box functionality.

Wednesday, November 21, 2012

WC Search Customizations - Introducing new facets

Faceted search is the dynamic clustering of items or search results into categories that let users drill into search results (or even skip searching entirely) by any value in any field. Each facet displayed also shows the number of hits within the search that match that category. Users can then “drill down” by applying specific contstraints to the search results. Faceted search is also called faceted browsing, faceted navigation, guided navigation and sometimes parametric search.



One of the common customization scenario is to introduce custom attributes as facets. The following should guide a developer through the process:

Important SOLR Configuration Files

Location : <WCDE>\search\solr\home\MC_<master_catalog_id>\en_US\CatalogEntry\conf

1. schema.xml
Introduce a child element "field" for the element "fields" for CATENTRY.FIELD1.

Place it at the end of the attributes under "Catentry's basic attributes" for logical grouping

<fields>
 <!--
   Catentry's basic attributes: map to table CATENTRY
   -->
<field name="catentry_id" type="long" indexed="true" stored="true" required="true" multiValued="false"/>
.
.
<field name="catenttype_id_ntk_cs" type="wc_keywordText" indexed="true" stored="true"  multiValued="false"/> 
 <field name="field1" type="long" indexed="true" stored="true" multiValued="false"/>

where ,
indexed: true if this field should be indexed (searchable or sortable)
stored: true if this field should be retrievable

multiValued: true if this field may contain multiple values per document

2. wc-data-config.xml
We will update the queries that are used to populate the Solr index from the WebSphere Commerce database tables. Each query needs to retrieve the data stored in field1 of the CATENTRY table.The wc-data-config.xml file loads catalog entry data in three separate parts. Product data is loaded first. This is followed by bundle data and finally all other catalog entry types. For each of the three sections there is a query for populating the full index and another query for delta updates. For each section (product, bundle and other), we need to update the two queries and then add a new field element to assign the data from the WebSphere Commerce database to the field1 field in the Solr index. All together there are nine updates you need to make to this file.

The modified file can be downloaded from here. Search "FIELD1" in the downloaded file to know the modifications required.


Important Database Tables
SRCHATTR

SQL updates required

insert into srchattr (srchattr_id, indexscope, indextype, identifier) values ((select max(srchattr_id)+1 from srchattr ) , '0', 'CatalogEntry','_cat.Field1');

insert into srchattrprop (srchattr_id, propertyname, propertyvalue)
values ((select max(srchattr_id) from srchattr ),'facet','field1');

Here , propertyvalue ' field1' is the name specified in the schema.xml

Also, srchattr_id should match in both the above queries

Code File Changes



1. SearchFacetsDisplay.jspf
Location : /Stores/WebContent/Madisons/Snippets/ReusableObjects/
This JSP fragment loops through the available global facets and includes another JSP fragment to display each facet’s data.We will introduce code to display the facet data for field1 in the left sidebar.

Search for the below <c:otherwise> tag and introdule the below code before the tag:

<c:when test="${facetField.value eq 'field1'}">
         <%@ include file="../../Snippets/Search/Field1FacetDisplay.jspf" %>
         <c:set var="f" value="${f + 1}" />                   
</c:when>

We will create  "Field1FacetDisplay.jspf" in the next step.

2. Field1FacetDisplay.jspf
Download the file from here and place it in the location "/Stores/WebContent/Madisons/Snippets/Search/".

Republish and Test!

Demo Video
Coming shortly

Friday, November 2, 2012

Saturday, September 22, 2012

Aurora - Watch out Madison! ;)

Aurora - is the new starter store launched with WCS 7 FEP 5 - it has really sleek and neat look.
Though it looks like it is still in the nascent state and does not support all the features which are available in the Madisons store - but I am sure we will see her growing fast.

Looks like Madisons has a competition in the B2C space. ;)

To read more about Aurora , refer the below link :
Aurora Starter Store

Catch the below video to know more about Aurora :





References :
Bob Balfe - blog.balfes.net

RESOLVED : DB2 9.7 setdbtype createdb issues



Issues Faced during the database creation while executing the setdbtype.bat

When we checked the “reorgdb2.err.log”, we found the few of the packaged failed during the reorg operations and we can find errors similar to below in the log file:

SQL0551N: The user “XXXXXX” does not sufficient priviliges to rebind the package 'SYSIBMADM.P201372405' of database 'WCS7DB'. UniqueId=213123…..

Problem (Abstract)
In DB2 Version 9.7, a user who holds SYSADM authority no longer has implicit DBADM authority and therefore has limited capabilities compared to those available in Version 9.5.  

Symptom
Example authorization errors are SQL1092N, SQL0551N and SQL0552N:
SQL1092N
authorization-ID does not have the authority to perform the requested command or operation.

SQL0551N
authorization-ID does not have the required authorization or privilege to perform operation operation on object object-name.

SQL0552N
authorization-ID does not have the privilege to perform operation operation.
 
Cause
Prior to DB2 Version 9.7 a user with SYSADM authority had implicit DBADM authority. Common configurations have the instance owner account as a member of the SYSADM group. Applications that are run under the instance owner account had unlimited authority on the database.
In DB2 V9.7 a user with SYSADM authority no longer has implicit DBADM authority. As a result any applications that are run under the instance owner account might experience authorization errors when trying to perform operations that are no longer within the scope of a SYSADM.
 
Environment
The UPGRADE DATABASE command and the RESTORE DATABASE command (for a downlevel database) grant DBADM authority to the SYSADM group, however this is not the case for any new V9.7 database.


Resolving the problem
The resolution to the errors is to verify the authorities for the userid.
To get the list of authorities held by the instance owner authorization ID perform these steps:

1.       Use the SYSPROC.AUTH_GET_INSTANCE_AUTHID() scalar function to determine the instance owner authorization ID.
For example:

VALUES SYSPROC.AUTH_GET_INSTANCE_AUTHID()

1
-----------------------------------------------------------------
XXXXXX

1 record(s) selected.

2.       Get the list of authorities for this authorization ID.
For example:
SELECT * FROM
TABLE (SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID (XXXXXX, 'U'))AS T
ORDER BY AUTHORITY

3.       Grant any missing authorities.
For example:
GRANT DBADM ON DATABASE TO USER XXXXXX
Connect to database using db2admin/password and then execute the above grant query.

4.       Execute a reorg for the entire database.
1.       Run the db2cmd
2.       Navigate to the WCInstall_Dir\bin
3.       Execute the following command
reorg.db2.bat databasename username password schemaname
Example:
reorg.db2.bat WCS7DB xxxxxx passw0rd XXXXXX
4.       Monitor the “reorgdb2.err.log” to ensure there are no errors.

Reference Link:
http://www-01.ibm.com/support/docview.wss?uid=swg21385801

Thursday, August 9, 2012

SQL1032N - Issues with DB2START - DB2 9.5 ESE & DB2 9.7 ESE

If db2start command fails giving the error code SQL1042C SQL1032N

SQL8000N DB2START processing failed; a valid product license was not found.
SQL1032N No start database manager command was issued. SQLSTATE=57019

Cause

These error typically indicate that the DB2 UDB product license has not been activated.

Answer

To activate the DB2 UDB product license, run this command:

db2licm -a license_filename

Where license_filename is the name of the license file.

Example:

The file db2ese.lic is the DB2 Enterprise Server Edition license file. The license file should be copied to a local directory (e.g. /tmp) and updated with the following command (resulting output shown):

=> db2licm -a /tmp/db2ese.lic
DBI1402I License added successfully.

DBI1426I This product is now licensed for use as specified in
the License Acceptance and License Information
documents pertaining to the licensed copy of this
product. USE OF THE PRODUCT CONSTITUTES ACCEPTANCE OF
THE TERMS OF THE IBM LICENSE ACCEPTANCE AND LICENSE
INFORMATION DOCUMENTS, LOCATED IN THE FOLLOWING
DIRECTORY: /usr/opt/db2_08_01/license/en_US.iso88591

The license information can be queried with this command (resulting output shown):

=> db2licm -l
Product Name = "DB2 Enterprise Server Edition"
Product Password = "DB2ESE"
Version Information = "8.1"
Expiry Date = "Permanent"
Registered Connect User Policy = "Disabled"
Number Of Entitled Users = "5"
Enforcement Policy = "Soft Stop"
Number of processors = "1"
Number of licensed processors = "1"
Annotation = ""
Other information = ""

Management Center : Increasing the Promotion Code Upload Limit

By default, the maximum file size of your CSV file or .zip is 10 MB. You can change the maximum file size.

The maximum file size limit is defined in both the Open Lazlo client and Websphere Commerce instance file.

Below are the steps required to be performed to increase the promotion code upload limit :

1. Update the client
  1. Open WebSphere Commerce Developer and switch to the Enterprise Explorer view.
  2. In the Enterprise Explorer view, expand LOBTools > WebContent > config> commerce> promotion> objectDefinitions
  3. Open the PromotionCodeImportPrimaryObjectDefinition.def file, and locate the defination name proBasePromotionCodeImportPrimaryObjectDefinition.
  4. Update the value of the maximumFileSize attribute. The default value is 10000000 bytes. You can change this value as needed, however, keep in mind the impact that larger files might have on your server.
    <PrimaryObjectDefinition copyProtected="true" creatable="true" definitionName="proBasePromotionCodeImportPrimaryObjectDefinition" displayName="${promotionResources.promotionCodeImportObjectName}" displayNameProperty="fileName" fileNamePropertyName="fileName" fileSizePropertyName="fileSize" headerIcon="promotionCodeImportHeaderIcon" helpLink="tasks/tprimportpromo.htm" icon="promotionCodeImportIcon" idProperty="promotionCodeImportId" isBaseDefinition="true" isFileObject="true" maximumFileSize="new_size" newDisplayName="${promotionResources.promotionCodeImport_newPromotionDisplayName}" newObjectMenuItemText="${promotionResources.contextMenuNewPromotionCodeImport}" objectGroups="PromotionCodeImportGroup" propertiesDefinitionName="proPromotionCodeImportProperties" searchType="FindPromotionCodeImports" writeUsage="IBM_ManagePromotionTool"> 

    where new_size is the size you want (in bytes).
  1. Update the server.
    1. Open the Updating the WebSphere Commerce configuration file, and locate the command element for com.ibm.commerce.promotion.commands.CreatePromotionCodeImportCmd name.
    2. Change the value of the maxuploadsize attribute to match the value specified for the client.
    3. Run the ANT target: UpdateEAR target to update the runtime configuration with the master configuration file.
After you complete your customization:
  1. Right-click LOBTools Project; then click Build OpenLaszlo Project to produce an updated ManagementCenter.swf file under the workspace_dir\LOBTools\WebContent directory. This setting is the default environment setting.
  2. Test your changes by viewing them in the Management Center, using this URL: https://hostname:8000/lobtools.
  3. Deploy your changes to your production environment.

Remote Widgets

Found this cool video which talks about Remote Widgets.. Hope this post also goes viral ! ;)