Complete this task to migrate your IBM Websphere Commerce Version 7 Feature Pack 8 Aurora store
to HCL Commerce Version 9.1. After migration, your store will remain a local
store.
The store migration process involves exporting the following assets as archive files, and then
importing the archive files:
- Custom static store assets
- Custom Java code
- Custom JSP files
Stores that are migrated from
IBM Websphere Commerce Version 7 or
IBM Websphere Commerce Version 8
to
HCL Commerce Version 9.1, are deployed to the
Transaction server, where
they serve live traffic. Stores that are created on
HCL Commerce Version 9.1
follow the new programming model and are deployed to a separate
Store server. For more information about migrating or creating a store
on
HCL Commerce Version 9.1, see:
Procedure
-
Export the Stores dynamic web project from your Feature Pack 8 development environment
workspace.
-
Open your Feature Pack 8 development environment workspace, then open the J2EE
perspective.
-
From the Enterprise Explorer view, right-click the Stores project, then
click .
The Export window
appears.
- Expand the General folder, then click
.
- Under the Stores directory, clear the
Stores check box, and select the following subdirectories.
- Ensure the Create only selected directories option is
selected.
- Click Browse and define a path where the archive file is to be
exported.
For example, c:\stores.zip.
- Under Options, ensure that the following export option is
defined.
- Create only selected directories
-
Click Finish.
A
Stores.zip file is
created and is ready to be imported into your
HCL Commerce Version 9 development
environment.
Important: Create a backup of this archive, as you will need some of the
configuration files in the Struts 2 migration later on.
- Copy the exported Stores.zip file to your HCL Commerce Version 9 development environment.
-
Import your custom project.
-
Open your HCL Commerce Version 9 development environment workspace,
and then open the Java EE perspective.
-
From the Enterprise Explorer view, right-click the
Stores project, then click .
The Import window appears.
-
Expand the General folder, then click .
-
Click Browse, then select the
Stores.zip file that you exported from your
Feature Pack 8 development environment.
-
Click the Overwrite existing resources without
warning check box.
-
Click Finish.
-
Manually copy all the directories and files in the following path from your
Feature Pack 8 development environment to the same path in the HCL Commerce Version 9.1 development environment:
workspace_dir/WC/properties/tools/stores/store_dir/
Where store_dir is the directory name for your store.
- Review the following files to ensure that your database configuration is correct. Edit
each file if necessary.
- WCDE_installdir/workspace/WC/META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/deployments/defaultApp/resources.xml
- Liberty_installdir/usr/servers/searchServer/configDropins/overrides/datasources.xml
- WCDE_installdir/workspace/WC/META-INF/ibmconfig/cells/defaultCell/security.xml
- Remove the nonexistent filter in your web.xml file.
- Open the following file for editing.
- WCDE_installdir/workspace/Stores/WebContent/WEB-INF/web.xml
- Remove the following block of code.
<filter>
</icon>
<filter-name>LikeMindsFilter</filter-name>
<filter-class>com.ibm.commerce.likeminds.filter.LikeMindsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LikeMindsFilter</filter-name>
<servlet-name>Stores Request Servlet</servlet-name>
</filter-mapping>
- Save and close the file.
-
Remove the remote store configuration from your foundation
wc-component.xml file.
-
Open the following file for editing.
- workspace_dir/WC/xml/config/com.ibm.commerce.foundation/wc-component.xml
-
Locate and remove the
configgrouping
named
RemoteStoreConfiguration.
For example, remove the following code block:
<_config:configgrouping name="RemoteStoreConfiguration">
<!-- value to remote store web host name -->
<_config:property name="wc.store.remote.webHostName" value="store"/>
<!-- value to remote store web host HTTP port number -->
<_config:property name="wc.store.remote.webNonSSLPort" value="8080"/>
<!-- value to remote store web host HTTPS port number -->
<_config:property name="wc.store.remote.webSSLPort" value="8443"/>
<!-- value to remote store context root -->
<_config:property name="wc.store.remote.webContextPath" value="/shop"/>
<!-- value to remote store preview context root -->
<_config:property name="wc.store.remote.previewContextPath" value="/webapp/remote/preview/servlet"/>
<!-- value to kafka servers connection string -->
<_config:property name="wc.store.remote.kafka" value=""/>
<!-- value to kafka servers topic prefix -->
<_config:property name="wc.store.remote.kafka.topicPrefix" value="sampleprefix"/>
<!-- value to remote store web alias -->
<_config:property name="wc.store.remote.webAlias" value="/wcsstore"/>
<!-- value to remote store app host name (used for invoking email JSPs in remote store) -->
<_config:property name="wc.store.remote.appHostName" value="localhost"/>
<!-- value to remote store app host HTTPS port number (used for invoking email JSPs in remote store) -->
<_config:property name="wc.store.remote.appSSLPort" value="8443"/>
</_config:configgrouping>
-
Save and close the file.
Warning: This change will need to be
done again after upgrading the development environment to a higher
fix pack, because that procedure will overwrite the
wc-component.xml file. The newly changed
file will then need to be deployed to the upgraded production
environment.
- Update your struts-config.xml file.
In HCL Commerce Version 9.1, URLs based on the HTTP protocol are no longer
supported, which might cause some users to encounter problems where category
pages fail to load after they log in to your store.
- Open the /Stores/WebContent/WEB-INF/struts-config.xml file for
editing.
- Locate the following property.
<set-property property="https" value="0:0"/>
- Update the
value
from "0:0"
to
"0:1"
.Your updated code appears as
follows.
<set-property property="https" value="0:1"/>
- Save and close the file.
-
In HCL Commerce Version 9.1, all services use HTTPS. The stores
project that you imported into HCL Commerce Version 9.1 might still use
HTTP values. Review the following files, and change any
value="http:
code to value="https:
.
Note: Skip any files in the list that do not exist in your
environment.
- /Stores/WebContent/SitemapIndex.jsp
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/Common/EnvironmentSetup.jspf
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/EmailTemplates/Common/eMarketingSpotDisplay.jsp
- /Stores/WebContent/AuroraStorefrontAssetStore/Common/EnvironmentSetup.jspf
- /Stores/WebContent/AuroraStorefrontAssetStore/EmailTemplates/Common/eMarketingSpotDisplay.jsp
- /Stores/WebContent/Widgets_701/Common/EnvironmentSetup.jspf
- /Stores/WebContent/Widgets_801/Common/EnvironmentSetup.jspf
-
Correct the migrated password reset e-mail template
(PasswordResetNotify.jsp).
- Open the following files with a text editor.
- /WebContent/AuroraStorefrontAssetStore/EmailTemplates/User/PasswordResetNotify.jsp
- /WebContent/AuroraB2BStorefrontAssetStore/EmailTemplates/User/PasswordResetNotify.jsp
- Remove all instances of the following tag:
<%out.flush()%>
.
- Save and close the files.
Note: Failure to correct this template results in no
password reset email being generated and sent. Instead, the following error
is observed in
logs.
javax.persistence.TransactionRequiredException: No active transaction for PuId=ts#Enablement-BaseComponentsData.jar#WC
- Convert number values to string values by using the
fn:trim ()
function
within your <c:if test>
JSP tags.
Base classes within the JSP tag library differ between Feature Pack 8 and HCL Commerce Version 9.1. If your Feature Pack 8 JSP files use the
<c:if test>
tag to evaluate expressions, you must
update those JSP files in HCL Commerce Version 9.1 to use the
fn:trim ()
function. In some of your JSP files, you
might compare a string to a number. The underlying HCL Commerce Version 9.1 logic tries to convert the string to a number
before comparing them. If there are non-numeric characters in the string, a
conversion error is reported. The fn:trim ()
function
forcibly converts strings to numbers before they are compared by HCL Commerce Version 9.1 logic.
The following code example shows
<c:if test>
tag without the
fn:trim
()
function within the
/Stores/WebContent/AuroraStorefrontAssetStore/Container/SubCategoryPageContainerWithTabs.jsp
file:
<c:if test="${childWidget.slot.internalSlotId == slotNumber && !foundCurrentSlot}">
The following code example shows
<c:if test>
tag with the
fn:trim
()
function added within the
/Stores/WebContent/AuroraStorefrontAssetStore/Container/SubCategoryPageContainerWithTabs.jsp
file:
<c:if test="${childWidget.slot.internalSlotId == fn:trim(slotNumber) && !foundCurrentSlot}">
Notice
how the
fn:trim ()
function is applied to
slotNumber
value.
-
From your HCL Commerce Version 9.1 development
environment, open the following Search result page
JSP files.
- /Stores/WebContent/Aurora/Container/SubCategoryPageContainerWithTabs.jsp
- /Stores/WebContent/AuroraStorefrontAssetStore/Container/SubCategoryPageContainerWithTabs.jsp
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/Container/SubCategoryPageContainerWithTabs.jsp
- Locate the following line of code in each file.
<c:if test="${childWidget.slot.internalSlotId == slotNumber && !foundCurrentSlot}">
- Update the lines of code by adding the
fn:trim ()
function to the
slotNumber
values, as illustrated in the following code example.
<c:if test="${childWidget.slot.internalSlotId == fn:trim(slotNumber) && !foundCurrentSlot}">
- Save and close the files.
- Open the following Product detail page JSP files.
- /Stores/WebContent/Aurora/Container/ProductPageContainer.jsp
- /Stores/WebContent/Aurora/Container/ProductPageContainerFullWidth.jsp
- /Stores/WebContent/AuroraStorefrontAssetStore/Container/ProductPageContainer.jsp
- /Stores/WebContent/AuroraStorefrontAssetStore/Container/ProductPageContainerFullWidth.jsp
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/Container/ProductPageContainer.jsp
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/Container/ProductPageContainerFullWidth.jsp
- Locate the following line of code in each file.
<c:if test="${childWidget.slot.internalSlotId == slotNumber && !foundCurrentSlot}">
- Update the lines of code by adding the
fn:trim ()
function to the
slotNumber
values, as illustrated in the following code example.
<c:if test="${childWidget.slot.internalSlotId == fn:trim(slotNumber) && !foundCurrentSlot}">
- Save and close the files.
- Open the following Register page JSP file.
- /Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.AddressForm/AddressForm_UI.jspf
- /Stores/WebContent/Widgets_801/com.ibm.commerce.store.widgets.AddressForm/AddressForm_UI.jspf
- /Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.OrganizationUserInfo/UserInfoUI/UserDetailsForm_UI.jspf
- /Stores/WebContent/Widgets_801/com.ibm.commerce.store.widgets.OrganizationUserInfo/UserInfoUI/UserDetailsForm_UI.jspf
- /Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.OrganizationUserInfo/UserInfoUI/UserDetailsDisplay_Data.jspf
- /Stores/WebContent/Widgets_801/com.ibm.commerce.store.widgets.OrganizationUserInfo/UserInfoUI/UserDetailsDisplay_Data.jspf
- Locate the following line of code.
<c:if test="${language.localeName == preferredLanguage || language.languageId == preferredLanguage }">
- Update the line of code by adding the
fn:trim ()
function to the
slotNumber
value, as illustrated in the following code example.
<c:if test="${language.localeName == fn:trim(preferredLanguage) || language.languageId == preferredLanguage }">
-
Save and close the file.
- Update the definitions that are associated with EJB in your
GlobalLoginOrganizationAndContract_UI.jspf file.
- Open the following file for editing.
- /Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.GlobalLogin/GlobalLoginOrganizationAndContract_UI.jspf
- Replace all instances of
organizationIdInEJBType
with
organizationId
.
- Save and close the file.
-
Feature Pack 8 and HCL Commerce Version 9.1 differ in the way they
generate and analyze SKU lists in JSON data. To account for this difference, you
must update specific JavaServer Page (JSP) and JavaServer Page Fragment (JSPF)
files.
-
Open the following files for editing.
- /Stores/WebContent/Aurora/ShoppingArea/CatalogSection/CatalogEntrySubsection/ProductDisplay.jsp
- /Stores/WebContent/AuroraStorefrontAssetStore/ShoppingArea/CatalogSection/CatalogEntrySubsection/ProductDisplay.jsp
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/ShoppingArea/CatalogSection/CatalogEntrySubsection/ProductDisplay.jsp
- /Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.PDP_DefiningAttributes/DefiningAttributes_Data.jspf
- /Stores/WebContent/Aurora/Widgets/CompareProduct/CompareProduct_UI.jspf
- /Stores/WebContent/AuroraStorefrontAssetStore/Widgets/CompareProduct/CompareProduct_UI.jspf
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/Widgets/CompareProduct/CompareProduct_UI.jspf
-
In each file, locate the following lines.
<c:set var="replaceStr" value='\\\\"'/>
<c:set var="replaceStr01" value="\\\\'"/>
-
Update the value from
value='\\\\"'
to
value='\\"'
.
The following example shows how the code looks after your
update.
<c:set var="replaceStr" value='\\"'/>
<c:set var="replaceStr01" value="\\'"/>
-
Save and close the files.
-
Update your RegistrationUpdateCommonPage.jsp file to
resolve a potential HCL Commerce Version 9.1 parsing error that occurs
when the Personal information page loads.
-
Open the following files for editing.
- /Stores/WebContent/Aurora/UserArea/AccountSection/RegistrationSubsection/RegistrationUpdateCommonPage.jsp
- /Stores/WebContent/AuroraStorefrontAssetStore/UserArea/AccountSection/RegistrationSubsection/RegistrationUpdateCommonPage.jsp
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/UserArea/AccountSection/RegistrationSubsection/RegistrationUpdateCommonPage.jsp
-
Around line 40, add the following block of code to the variable
section.
<c:set var="personSession" value="${requestScope.personSession}"/>
<c:if test="${empty personSession || personSession==null}">
<wcf:rest var="personSession" url="store/{storeId}/person/{personId}" scope="request">
<wcf:var name="storeId" value="${WCParam.storeId}" encode="true"/>
<wcf:var name="personId" value="${userId}" encode="true"/>
</wcf:rest>
</c:if>
-
Around line 120, locate the following line of code.
<fmt:param><fmt:formatDate type="both" dateStyle="long" value="${CommandContext.user.lastSessionInEJBType}"/></fmt:param
-
Update the line of code with the following.
<fmt:param><c:out value="${personSession.lastSession}"/></fmt:param>
-
Save and close the files.
- Update specific JavaScript (JS) and Cascading Style Sheet (CSS) files to account for
errors when a user cancels recurring and subscriptions orders.
- Open the following files for editing.
- /Stores/WebContent/Aurora/javascript/UserArea/MyAccountDisplay.js
- /Stores/WebContent/AuroraStorefrontAssetStore/javascript/UserArea/MyAccountDisplay.js
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/javascript/UserArea/MyAccountDisplay.js
- Around line 719, add the following line of code.
params["orderId"] = "null";
The following example shows how the code looks after your
update.
/*For Handling multiple clicks. */
if(!submitRequest()){
return;
}
cursor_wait();
var params = [];
params["orderId"] = "null";
params["subscriptionId"] = subscriptionId;
params["URL"] = "";
params["storeId"] = MyAccountServicesDeclarationJS.storeId;
params["catalogId"] = MyAccountServicesDeclarationJS.catalogId;
params["langId"] = MyAccountServicesDeclarationJS.langId;
wc.service.invoke("AjaxCancelSubscription", params);
- Save and close the files.
- Open the following files for editing.
- /Stores/WebContent/Aurora/css/legacy1_1.css
- /Stores/WebContent/Aurora/css/legacy1_1_rtl.css
- /Stores/WebContent/AuroraStorefrontAssetStore/css/legacy1_1.css
- /Stores/WebContent/AuroraStorefrontAssetStore/css/legacy1_1_rtl.css
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/css/legacy1_1.css
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/css/legacy1_1_rtl.css
- Around line 3750, locate the following line of code.
background-image: url('../images/colors/color1/popup_center_tile_sm.png');
- Change the code to the following.
background-image: url('../images/colors/color1/popup_center_tile_mini.png');
- Save and close the files.
- Update specific JavaScript (JS), Java Server Page (JSP), and JavaScript
Page Fragment (JSPF) files to account for errors that can be encountered when using the Store
Preview function, or on the storefront.
- Correct an issue where associated merchandising product descriptions are not displayed
appropriately on the storefront.
- Open the following file for editing.
- /Stores/WebContent/Widgets_701/Common/ProductDescription/ProductDescription_Data.jspf
- Locate the following section of
code.
<c:choose> <c:when test="${!empty param.hasAssociations}"> <c:set var="hasAssociations" value="${param.hasAssociations}"/> </c:when> </c:choose>
- Add the following lines before and after this
section.
<c:set var="hasAssociations" value="false"/>
<c:choose>
<c:when test="${!empty param.hasAssociations}">
<c:set var="hasAssociations" value="${param.hasAssociations}"/>
</c:when>
</c:choose>
<c:if test="${hasAssociations == 'true'}">
<c:remove var="catalogEntryDetails" />
</c:if>
- Save and close the file.
- Correct a site malfunction that is encountered after a promotion is applied when using
the Store Preview function.
- Open the following file for editing.
- /Stores/WebContent/AuroraStorefrontAssetStore/javascript/CommonControllersDeclaration.js
- Locate the following line of
code.
dojo.eval(dojo.byId('addToRequisitionListScript_' + orderItem.value).innerHTML);
- Wrap the line within the following condition
statement.
if(dojo.byId('addToRequisitionListScript_' + orderItem.value) != null)
{ dojo.eval(dojo.byId('addToRequisitionListScript_' + orderItem.value).innerHTML); }
- Locate the following line of
code.
dojo.eval('addReqListsJS' + orderItem.value + '.setCatEntryId("' + dojo.byId('catalogId_' + (orderItem.id.substring(orderItem.id.indexOf('_') + 1))).value + '");');
- Wrap the line within the following condition
statement.
if(dojo.byId('addReqListsJS_' + orderItem.value) != null)
{ dojo.eval('addReqListsJS' + orderItem.value + '.setCatEntryId("' + dojo.byId('catalogId_' + (orderItem.id.substring(orderItem.id.indexOf('_') + 1))).value + '");'); }
- Save and close the file.
- Correct a cart merge edge case that can result in a blank page after logging in and
checking out a cart.
- Open the following files for editing.
- /Stores/WebContent/AuroraStorefrontAssetStore/Snippets/Order/Cart/CheckoutLogon.jsp
- /Stores/WebContent/AuroraStorefrontAssetStore/javascript/CheckoutArea/ShipmodeSelectionExt.js
- In CheckoutLogon.jsp, locate the following line of
code.
<form method="post" name="AjaxLogon" id="AjaxLogon" action="Logon">
- Add the following line below the
line.
<form method="post" name="AjaxLogon" id="AjaxLogon" action="Logon">
<input type="hidden" name="mergeCart" value="true" id="WC_RememberMeLogonForm_FormInput_mergeCart_In_AjaxLogon_1"/>
- In ShipmodeSelectionExt.js, locate the following line of code in the
guestShopperLogon
method.document.AjaxLogon.URL.value = completeOrderMoveURL;
- Replace the line with the
following.
document.AjaxLogon.URL.value = "&URL="+afterOrderCalculateURL;
- Save and close the files.
- Optional: Correct default error message properties files to
ensure that improper error messages are not displayed on the storefront.
This is only
required if your site does not use custom error messages.
- Open the following files, and any additional languages that your store uses, for editing.
- WCDE_installdir/workspace/Stores/WebContent/WEB-INF/classes/AuroraStorefrontAssetStore/storeErrorMessages.properties
- WCDE_installdir/workspace/Stores/WebContent/WEB-INF/classes/AuroraStorefrontAssetStore/storeErrorMessages_en_US.properties
- WCDE_installdir/workspace/Stores/WebContent/WEB-INF/classes/AuroraB2BStorefrontAssetStore/storeErrorMessages.properties
- WCDE_installdir/workspace/Stores/WebContent/WEB-INF/classes/AuroraB2BStorefrontAssetStore/storeErrorMessages_en_US.properties
- Remove the following message from the B2B error message property
files.
_ERR_CMD_INVALID_PARAM = An error occurred during registration. Please try again later or contact the store for assistance.
- Locate and replace incorrect messages.
- Locate the following two messages in all
files.
_ERR_CMD_INVALID_PARAM.5030 = Type a name in the Nickname field.
_ERR_NICKNAME_ALREDY_EXIST.5040 = The nickname you entered already exists. Type another name in the Nickname field and try again.
- Replace the messages to swap out the references to
nickname
in the messages
with
recipient
._ERR_CMD_INVALID_PARAM.5030 = Type a name in the Recipient field.
_ERR_NICKNAME_ALREDY_EXIST.5040 = The recipient you entered already exists. Type another name in the Recipient field and try again.
- Save and close all files.
- Update your JavaServer Page Fragment (JSPF) files so site users can click the subscribe
link on your storefront.
- Open the following files for editing.
- /Stores/WebContent/Aurora/Common/JSTLEnvironmentSetupExtForRemoteWidgets.jspf
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/Common/JSTLEnvironmentSetupExtForRemoteWidgets.jspf
- /Stores/WebContent/AuroraStorefrontAssetStore/Common/JSTLEnvironmentSetupExtForRemoteWidgets.jspf
- /Stores/WebContent/Widgets_701/Common/JSTLEnvironmentSetupExtForRemoteWidgets.jspf
- In each of the files, locate and remove the following code.
<c:when test="${!empty restNonSSLPort}">
<c:set var="restURLPort" value="${restNonSSLPort}" scope="request"/>
<c:set var="restURLScheme" value="http" scope="request"/>
</c:when>
- Save and close the files.
- Update JavaScript (JS) files to resolve an email notification issue for
wishlist creation.
- Open the following files for editing.
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/javascript/UserArea/MultipleWishLists.js
- /Stores_v7/WebContent/AuroraStorefrontAssetStore/javascript/UserArea/MultipleWishLists.js
- In each file, locate the following lines.
// maps email input to param required by AjaxGiftListAnnouncement
form.recipientEmail.value = form.recipient.value;
form.senderName.value = form.sender_name.value;
- Add the following line into this section of each file.
// maps email input to param required by AjaxGiftListAnnouncement
form.recipientEmail.value = form.recipient.value;
form.recipient.value = "";
form.senderName.value = form.sender_name.value;
- Save and close both files.
- Update your payments and billing JavaServer Page fragment (JSPF) files to handle the
Apple Pay payment method.
- Open the following files for editing.
- /Stores/WebContent/Aurora/ShoppingArea/CheckoutSection/CheckoutPaymentsAndBillingAddress.jspf
- /Stores/WebContent/AuroraStorefrontAssetStore/ShoppingArea/CheckoutSection/CheckoutPaymentsAndBillingAddress.jspf
- /Stores/WebContent/AuroraB2BStorefrontAssetStore/ShoppingArea/CheckoutSection/CheckoutPaymentsAndBillingAddress.jspf
- Around line 500, locate the following code.
<c:if test="${currentPaymentMethodName != 'PayInStore' && currentPaymentMethodName
!= 'CompatiblePayment' && (currentPaymentMethodName ne 'SimplePunchout' or (currentPaymentMethodName
eq 'SimplePunchout' and punchoutPaymentAllowed))}">
- Update the code by adding
currentPaymentMethodName != 'ApplePay'
method.
The following example shows how the code looks after your
update.
<c:if test="${currentPaymentMethodName != 'ApplePay' && currentPaymentMethodName
!= 'PayInStore' && currentPaymentMethodName != 'CompatiblePayment' &&
(currentPaymentMethodName ne 'SimplePunchout' or (currentPaymentMethodName eq 'SimplePunchout'
and punchoutPaymentAllowed))}">
- Save and close the files.
-
Update your STORECONF table with your extended sites store
IDs. Repeat this process on your development and production environment
databases.
-
Open a command prompt to your HCL Commerce Version 9.1 database.
-
Run the following SQL select query to retrieve the store IDs for your
specific type of store.
select store_id from store where directory in ('store_name');
Where
- store_name
- The base name of your store, for example,
AuroraESite
.
-
For each extended site store ID retrieved, insert a corresponding
record into your STORECONF table by running the
following insert query.
Insert into storeconf values(STOREENT_ID, 'wc.store.isRemote','0',0);
Where:
- STOREENT_ID
- The ID of the store that you retrieved from the previous
SQL command.
-
If you are migrating to HCL Commerce Version 9, you must upgrade your Struts
configuration. See Migrating customized IBM Websphere Commerce Version 7 Feature Pack 6 web applications to Struts 2.
- Update your ListTable_UI.jspf file to work with
the Requisition List Upload function.
- Open the following file for editing.
- /Stores/WebContent/Widgets_701/Common/MyAccountList/ListTable_UI.jspf
- Locate the following code.
<input type="file" id="UpLoadedFile" name="UpLoadedFile" class="button_text"
- Update the
Update name="UpLoadedFile"
to
name="filename"
.
- Save and close the file.
- Remove the EJB from the store preview header.
-
Open the
\Stores\WebContent\tools\preview\StorePreviewerHeader.jsp
file for editing.
- Locate the following snippet.
pageContext.setAttribute("workspaceId", abWorkspace.getWorkspaceIdInEJBType().toString());
- Replace the snippet with the following.
pageContext.setAttribute("workspaceId", abWorkspace.getWorkspaceId().toString());
-
Save and close the file.
-
Update address-related JSPs to correctly display the shipping and billing
address on the checkout page.
-
Open the following files for editing.
- Stores\WebContent\AuroraB2BStorefrontAssetStore\ShoppingArea\CheckoutSection\SingleShipment\ShippingAddressSelect.jsp
- Stores\WebContent\AuroraStorefrontAssetStore\ShoppingArea\CheckoutSection\SingleShipment\ShippingAddressSelect.jsp
-
Locate the following code snippet.
<c:set var="selectedAddressId" value="${param.addressId}"/>
-
Replace it with the following code snippet.
<c:set var="selectedAddressId" value="${orderShipInfo.usableShippingAddress[0].addressId}"/>
-
Save and close the files.
-
Open the following files for editing.
- Stores\WebContent\AuroraStorefrontAssetStore\Snippets\Member\Address\AddressDisplay.jsp
- Stores\WebContent\AuroraB2BStorefrontAssetStore\Snippets\Member\Address\AddressDisplay.jsp
-
Locate the following code snippet.
<c:if test="${empty WCParam.addressId}" >
-
Replace it with the following code snippet.
<c:if test="${empty WCParam.addressId || WCParam.addressId ne param.addressId }" >
-
Save and close the files.
-
Update Content_UI.jspf to correctly display the icon that
symbolizes URL attachments for marketing content.
-
Open the following files for editing.
- \Stores\WebContent\Widgets_701\com.ibm.commerce.store.widgets.ContentRecommendation\Content_UI.jspf
- \Stores\WebContent\Widgets_801\com.ibm.commerce.store.widgets.ContentRecommendation\Content_UI.jspf
-
Locate the following code snippet.
<c:if test="${not empty fileType}">
-
Below this snippet, add the following code.
<c:if test="${fileType eq 'html' || fileType eq 'htm' || mimeType eq 'text/html'}">
<c:set var="attachmentType" value="html"/>
</c:if>
-
Save and close the files.
-
Update the JSP files related to the Price filter that are used for generating
URLs.
-
Open the
Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.CatalogEntryList/CatalogEntryList_UI.jspf
file for editing.
-
Open the
Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.CatalogEntryList/javascript/SearchBasedNavigationDisplay.js
file for editing.
- Locate the following line of code.
checkPriceInput:function(event)
- Replace the line with the following.
checkPriceInput:function(event, currencySymbol)
- Locate the following line of code.
this.appendFilterPriceRange();
- Replace the line with the following.
this.appendFilterPriceRange(currencySymbol);
- Locate the following line of code.
appendFilterPriceRange:function()
- Replace the line with the following.
appendFilterPriceRange:function(currencySymbol)
- Locate the following line of code.
var label = this.currencySymbol + byId("low_price_input").value + " - " + this.currencySymbol + byId("high_price_input").value;
- Replace the line with the following.
var label = currencySymbol + byId("low_price_input").value + " - " + currencySymbol + byId("high_price_input").value;
- Locate the following line of code.
restoreHistoryContext:function()
- Replace the line with the following.
restoreHistoryContext:function(currencySymbol)
- Locate the following line of code.
this.appendFilterPriceRange();
- Replace the line with the following.
this.appendFilterPriceRange(currencySymbol);
-
Open the
Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.FacetNavigation/FacetNavigation_HorizontalView_UI.jspf
file for editing.
- Locate the following line of code.
<input id="low_price_input" role="textbox" aria-label="<fmt:message key="LN_SEARCH_FACET_LOWER_BOUND" bundle="${widgetText}"/>" onkeyup="SearchBasedNavigationDisplayJS.checkPriceInput(event);" class="range_input" type="tel"/>
- Replace the line with the following.
<input id="low_price_input" role="textbox" aria-label="<fmt:message key="LN_SEARCH_FACET_LOWER_BOUND" bundle="${widgetText}"/>" onkeyup="SearchBasedNavigationDisplayJS.checkPriceInput(event, '<c:out value='${env_CurrencySymbolToFormat}' escapeXml='false'/>');" class="range_input" type="tel"/>
- Locate the following line of code.
<input id="high_price_input" role="textbox" aria-label="<fmt:message key="LN_SEARCH_FACET_UPPER_BOUND" bundle="${widgetText}"/>" onkeyup="SearchBasedNavigationDisplayJS.checkPriceInput(event);" class="range_input" type="tel"/>
- Replace the line with the following.
<input id="high_price_input" role="textbox" aria-label="<fmt:message key="LN_SEARCH_FACET_UPPER_BOUND" bundle="${widgetText}"/>" onkeyup="SearchBasedNavigationDisplayJS.checkPriceInput(event, '<c:out value='${env_CurrencySymbolToFormat}' escapeXml='false'/>');" class="range_input" type="tel"/>
- Locate the following line of code.
setTimeout("SearchBasedNavigationDisplayJS.restoreHistoryContext();", 200);
- Replace the line with the following.
setTimeout("SearchBasedNavigationDisplayJS.restoreHistoryContext(\"<c:out value='${env_CurrencySymbolToFormat}' escapeXml='false'/>\");", 200);
-
Open the
Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.FacetNavigation/FacetNavigation_VerticalView_UI.jspf
file for editing.
- Locate the following line of code.
<input id="low_price_input" role="textbox" aria-label="<fmt:message key="LN_SEARCH_FACET_LOWER_BOUND" bundle="${widgetText}"/>" onkeyup="SearchBasedNavigationDisplayJS.checkPriceInput(event);" class="range_input" type="tel"/>
- Replace the line with the following.
<input id="low_price_input" role="textbox" aria-label="<fmt:message key="LN_SEARCH_FACET_LOWER_BOUND" bundle="${widgetText}"/>" onkeyup="SearchBasedNavigationDisplayJS.checkPriceInput(event, '<c:out value='${env_CurrencySymbolToFormat}' escapeXml='false'/>');" class="range_input" type="tel"/>
- Locate the following line of code.
<input id="high_price_input" role="textbox" aria-label="<fmt:message key="LN_SEARCH_FACET_UPPER_BOUND" bundle="${widgetText}"/>" onkeyup="SearchBasedNavigationDisplayJS.checkPriceInput(event);" class="range_input" type="tel"/>
- Replace the line with the following.
<input id="high_price_input" role="textbox" aria-label="<fmt:message key="LN_SEARCH_FACET_UPPER_BOUND" bundle="${widgetText}"/>" onkeyup="SearchBasedNavigationDisplayJS.checkPriceInput(event, '<c:out value='${env_CurrencySymbolToFormat}' escapeXml='false'/>');" class="range_input" type="tel"/>
- Locate the following line of code.
setTimeout("SearchBasedNavigationDisplayJS.restoreHistoryContext();", 200);
- Replace the line with the following.
setTimeout("SearchBasedNavigationDisplayJS.restoreHistoryContext(\"<c:out value='${env_CurrencySymbolToFormat}' escapeXml='false'/>\");", 200);
-
Save and close the files.
Results
Your Aurora-based store is successfully migrated.Note: In HCL Commerce Version 9.1.3.0 and later, the Store preview feature is
supported for Struts 2 migrated local stores, in non-workspace context environments only.For more information on enabling
the Store Preview feature in your migrated local store environment, see step
4.c of Migrating REST-based Search.