Migración del proyecto web de la tienda Aurora Feature Pack 6 de IBM Websphere Commerce Version 7

Complete esta tarea para migrar la tienda Aurora de Feature Pack 6 de IBM Websphere Commerce Version 7 a HCL Commerce Version 9.1. Después de la migración, la tienda sigue siendo una tienda local.

El proceso de migración de tienda implica exportar los elementos siguientes como archivos de archivado y, a continuación, importar los archivos de archivado:
  • Elementos de tienda estáticos personalizados
  • Código Java personalizado
  • Archivos JSP personalizados
Las tiendas que se migran desde IBM Websphere Commerce Version 7 o IBM Websphere Commerce Version 8 a HCL Commerce Version 9.1 se implementan dentro de Transaction server, donde dan servicio al tráfico en tiempo real. Las tiendas que se crean en HCL Commerce Version 9.1 siguen el nuevo modelo de programación y se despliegan en un Store server independiente. Para obtener más información sobre cómo migrar o crear una tienda en HCL Commerce Version 9.1, consulte:

Procedimiento

  1. Exporte el proyecto web dinámico Stores de un espacio de trabajo del entorno de desarrollo de Feature Pack 6.
    1. Abra el espacio de trabajo del entorno de desarrollo de Feature Pack 6 y abra la perspectiva J2EE.
    2. En la vista Explorador de empresa, pulse el botón derecho del ratón en el proyecto Stores y, a continuación, pulse Exportar > Exportar....
      Aparecerá la ventana Exportar.
    3. Expanda la carpeta General, a continuación, pulse archivo de archivado > Siguiente.
    4. En el directorio Stores, deseleccione el recuadro de selección Tiendas y seleccione los subdirectorios siguientes.
      • WebContent
      • src
    5. Asegúrese de que la opción Crear solo directorios seleccionados está seleccionada.
    6. Pulse Examinar y defina una vía de acceso donde se exporte el archivo de archivado.
      Por ejemplo, c:\stores.zip.
    7. En Opciones, asegúrese de que se defina la opción de exportación siguiente.
      • Crear solo directorio seleccionados
    8. Pulse Finalizar.
      Se crea un archivo Stores.zip y está listo para ser importado al entorno de desarrollo de HCL Commerce Version 9.
      Importante: Cree una copia de seguridad de este archivador, ya que necesitará algunos de los archivos de configuración en la migración de Struts 2 más adelante.
    9. Copie el archivo exportado Stores.zip en su entorno de desarrollo HCL Commerce Version 9.
  2. Importe el proyecto personalizado.
    1. Abra el espacio de trabajo de entorno de desarrollo de HCL Commerce Version 9 y, a continuación, abra la perspectiva Java EE.
    2. En la vista Explorador de empresa, pulse el botón derecho del ratón en el proyecto Stores y, a continuación, pulse Importar > Importar....
      Aparece la ventana Importar.
    3. Expanda la carpeta General, a continuación, pulse archivo de archivado > Siguiente.
    4. Pulse Examinar y, a continuación, seleccione el archivo Stores.zip que ha exportado del entorno de desarrollo de Feature Pack 6.
    5. Pulse el recuadro de selección Sobrescribir recursos existentes sin aviso.
    6. Pulse Finalizar.
  3. Copie manualmente todos los directorios y los archivos de la siguiente ruta de acceso del entorno de desarrollo de Feature Pack 6 en la misma ruta de acceso del entorno de desarrollo de HCL Commerce Version 9.1:

    workspace_dir/WC/properties/tools/stores/store_dir/

    Donde store_dir es el nombre del directorio de la tienda.

  4. Revise los siguientes archivos para asegurarse de que la configuración de la base de datos es correcta. Edite los archivos si es necesario.
    • 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
  5. Elimine el filtro no existente en el archivo web.xml.
    1. Abra el archivo siguiente para editarlo.
      • WCDE_installdir/workspace/Stores/WebContent/WEB-INF/web.xml
    2. Elimine el bloque de código siguiente.
      <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>
      
    3. Guarde y cierre el archivo.
  6. Elimine la configuración de la tienda remota del archivo wc-component.xml de la fundación.
    1. Abra el archivo siguiente para editarlo.
      • workspace_dir/WC/xml/config/com.ibm.commerce.foundation/wc-component.xml
    2. Localice y elimine el configgrouping denominado RemoteStoreConfiguration.
      Por ejemplo, elimine el bloque de código siguiente:
      <_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>
    3. Guarde y cierre el archivo.
      Aviso: Este cambio deberá realizarse de nuevo después de actualizar el entorno de desarrollo a un FixPack superior, porque dicho procedimiento sobrescribirá el archivo wc-component.xml. El archivo recién cambiado tendrá que implementarse en el entorno de producción actualizado.
  7. Actualice el archivo struts-config.xml.

    En HCL Commerce Version 9.1, las URL basadas en el protocolo HTTP ya no son compatibles, lo que puede provocar que algunos usuarios detecten problemas en los que las páginas de categoría no se cargan después de iniciar sesión en la tienda.

    1. Abra el archivo /Stores/WebContent/WEB-INF/struts-config.xml para editarlo.
    2. Localice la siguiente propiedad.
      <set-property property="https" value="0:0"/>
    3. Actualice value desde "0:0" a "0:1"
      El código actualizado aparece como se indica a continuación.
      <set-property property="https" value="0:1"/>
    4. Guarde y cierre el archivo.
  8. En HCL Commerce Version 9.1, todos los servicios utilizan HTTPS. El proyecto de stores que ha importado en HCL Commerce Version 9.1 puede seguir utilizando valores HTTP. Revise los archivos siguientes y cambie el código value="http: por value="https:.
    Nota: Omita los archivos de la lista que no existan en el entorno.
    • /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
  9. Convierta los valores de número por valores de serie utilizando la función fn:trim () en las etiquetas JSP <c:if test>.

    Las clases base en la biblioteca de códigos JSP difieren de Feature Pack 6 y HCL Commerce Version 9.1. Si los archivos JSP de Feature Pack 6 utilizan la etiqueta <c:if test> para evaluar expresiones, debe actualizar estos archivos JSP en HCL Commerce Version 9.1 para utilizar la función fn:trim (). En algunos archivos JSP, es posible que compare una serie con un número. La lógica de HCL Commerce Version 9.1 subyacente intenta convertir la serie en un número antes de compararlos. Si no hay caracteres no numéricos en la serie, se informa de un error de conversión. La función fn:trim () convierte a la fuerza series en números antes de compararlos con la lógica de HCL Commerce Version 9.1.

    El ejemplo de código siguiente muestra la etiqueta <c:if test> sin la función fn:trim () dentro del archivo /Stores/WebContent/AuroraStorefrontAssetStore/Container/SubCategoryPageContainerWithTabs.jsp:
    <c:if test="${childWidget.slot.internalSlotId == slotNumber && !foundCurrentSlot}">
    El ejemplo de código siguiente muestra la etiqueta <c:if test> con la función añadida fn:trim () dentro del archivo /Stores/WebContent/AuroraStorefrontAssetStore/Container/SubCategoryPageContainerWithTabs.jsp:
    <c:if test="${childWidget.slot.internalSlotId == fn:trim(slotNumber) && !foundCurrentSlot}">
    Observe cómo la función fn:trim () se aplica al valor slotNumber.
    1. En el entorno de desarrollo de HCL Commerce Version 9.1, abra los archivos JSP Página de resultados de búsqueda siguientes.
      • /Stores/WebContent/Aurora/Container/SubCategoryPageContainerWithTabs.jsp
      • /Stores/WebContent/AuroraStorefrontAssetStore/Container/SubCategoryPageContainerWithTabs.jsp
      • /Stores/WebContent/AuroraB2BStorefrontAssetStore/Container/SubCategoryPageContainerWithTabs.jsp
    2. Localice la línea de código siguiente en cada archivo.
      <c:if test="${childWidget.slot.internalSlotId == slotNumber && !foundCurrentSlot}">
    3. Actualice las líneas de código añadiendo la función fn:trim () a los valores slotNumber, tal como se muestra en el ejemplo de código siguiente.
      <c:if test="${childWidget.slot.internalSlotId == fn:trim(slotNumber) && !foundCurrentSlot}">
    4. Guarde y cierre los archivos.
    5. Abra los archivos JSP Página de detalles del producto.
      • /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
    6. Localice la línea de código siguiente en cada archivo.
      <c:if test="${childWidget.slot.internalSlotId == slotNumber && !foundCurrentSlot}">
    7. Actualice las líneas de código añadiendo la función fn:trim () a los valores slotNumber, tal como se muestra en el ejemplo de código siguiente.
      <c:if test="${childWidget.slot.internalSlotId == fn:trim(slotNumber) && !foundCurrentSlot}">
    8. Guarde y cierre los archivos.
    9. Abra el archivo JSP Registrar página.
      • /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
    10. Localice la línea de código siguiente.
      <c:if test="${language.localeName == preferredLanguage || language.languageId == preferredLanguage }">
    11. Actualice la línea de código añadiendo la función fn:trim () al valor slotNumber, tal como se muestra en el ejemplo de código siguiente.
      <c:if test="${language.localeName == fn:trim(preferredLanguage) || language.languageId == preferredLanguage }">
    12. Guarde y cierre el archivo.
  10. Actualice las definiciones que están asociadas con EJB en el archivo GlobalLoginOrganizationAndContract_UI.jspf.
    1. Abra el archivo siguiente para editarlo.
      • /Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.GlobalLogin/GlobalLoginOrganizationAndContract_UI.jspf
    2. Sustituya todas las instancias de organizationIdInEJBType por organizationId.
    3. Guarde y cierre el archivo.
  11. Feature Pack 6 y HCL Commerce Version 9.1 difieren en la forma en que generan y analizan las listas de SKU en datos JSON. Para tener en cuenta esta diferencia, debe actualizar los archivos Java Server Page (JSP) and Java Server Page Fragment (JSPF) específicos.
    1. Abra los siguientes archivos para su edición.
      • /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
    2. En cada archivo, localice las líneas siguientes.
      <c:set var="replaceStr" value='\\\\"'/>
      <c:set var="replaceStr01" value="\\\\'"/>
    3. Actualice el valor de value='\\\\"' a value='\\"'.
      El ejemplo siguiente muestra la apariencia del código después de la actualización.
      <c:set var="replaceStr" value='\\"'/>
      <c:set var="replaceStr01" value="\\'"/>
    4. Guarde y cierre los archivos.
  12. Actualice el archivo RegistrationUpdateCommonPage.jsp para resolver un posible error de análisis HCL Commerce Version 9.1 que se produce cuando se carga la página de Información personal .
    1. Abra los siguientes archivos para su edición.
      • /Stores/WebContent/Aurora/UserArea/AccountSection/RegistrationSubsection/RegistrationUpdateCommonPage.jsp
      • /Stores/WebContent/AuroraStorefrontAssetStore/UserArea/AccountSection/RegistrationSubsection/RegistrationUpdateCommonPage.jsp
      • /Stores/WebContent/AuroraB2BStorefrontAssetStore/UserArea/AccountSection/RegistrationSubsection/RegistrationUpdateCommonPage.jsp
    2. Alrededor de la línea 40, añada el siguiente bloque de código a la sección variable.
      <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>  
      
    3. Alrededor de la línea 120, localice la siguiente línea de código.
      <fmt:param><fmt:formatDate type="both" dateStyle="long" value="${CommandContext.user.lastSessionInEJBType}"/></fmt:param
    4. Actualice la línea de código con lo siguiente.
      <fmt:param><c:out value="${personSession.lastSession}"/></fmt:param>
    5. Guarde y cierre los archivos.
  13. Actualice los archivos JavaScript (JS) y Cascading Style Sheet (CSS) específicos para tener en cuenta los errores cuando un usuario cancela pedidos recurrentes y de suscripciones.
    1. Abra los siguientes archivos para su edición.
      • /Stores/WebContent/Aurora/javascript/UserArea/MyAccountDisplay.js
      • /Stores/WebContent/AuroraStorefrontAssetStore/javascript/UserArea/MyAccountDisplay.js
      • /Stores/WebContent/AuroraB2BStorefrontAssetStore/javascript/UserArea/MyAccountDisplay.js
    2. Alrededor de la línea 719, añada la siguiente línea de código.
      params["orderId"] = "null";
      El ejemplo siguiente muestra la apariencia del código después de la actualización.
      /*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);
    3. Guarde y cierre los archivos.
    4. Abra los siguientes archivos para su edición.
      • /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
    5. Alrededor de la línea 120, localide la siguiente línea de código.
      background-image: url('../images/colors/color1/popup_center_tile_sm.png');
    6. Cambie el código al siguiente.
      background-image: url('../images/colors/color1/popup_center_tile_mini.png');
    7. Guarde y cierre los archivos.
  14. Actualice los archivos JavaScript (JS), Java Server Page (JSP) y JavaScript Page Fragment (JSPF) para tener en cuenta los errores que se pueden encontrar al utilizar la función de vista previa de la tienda o en el escaparate.
    1. Corrija un problema en el que las descripciones de productos de comercialización asociadas no se visualizan adecuadamente en el escaparate.
      1. Abra el archivo siguiente para editarlo.
        • /Stores/WebContent/Widgets_701/Common/ProductDescription/ProductDescription_Data.jspf
      2. Localice la sección de código siguiente.
        <c:choose> <c:when test="${!empty param.hasAssociations}"> <c:set var="hasAssociations" value="${param.hasAssociations}"/> </c:when> </c:choose>
      3. Añada las líneas siguientes antes y después de esta sección.
        <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>
      4. Guarde y cierre el archivo.
    2. Corrija un mal funcionamiento del sitio que se encuentra después de aplicar una promoción cuando se utiliza la función de vista previa de la tienda.
      1. Abra el archivo siguiente para editarlo.
        • /Stores/WebContent/AuroraStorefrontAssetStore/javascript/CommonControllersDeclaration.js
      2. Localice la línea de código siguiente.
        dojo.eval(dojo.byId('addToRequisitionListScript_' + orderItem.value).innerHTML);
      3. Ajuste la línea dentro de la siguiente instrucción de condición.
        if(dojo.byId('addToRequisitionListScript_' + orderItem.value) != null)
        { dojo.eval(dojo.byId('addToRequisitionListScript_' + orderItem.value).innerHTML); }
      4. Localice la línea de código siguiente.
        dojo.eval('addReqListsJS' + orderItem.value + '.setCatEntryId("' + dojo.byId('catalogId_' + (orderItem.id.substring(orderItem.id.indexOf('_') + 1))).value + '");');
      5. Ajuste la línea dentro de la siguiente instrucción de condición.
        if(dojo.byId('addReqListsJS_' + orderItem.value) != null)
        { dojo.eval('addReqListsJS' + orderItem.value + '.setCatEntryId("' + dojo.byId('catalogId_' + (orderItem.id.substring(orderItem.id.indexOf('_') + 1))).value + '");'); }
      6. Guarde y cierre el archivo.
    3. Corrija un caso de extremo de fusión de carro de la compra que puede dar como resultado una página en blanco después de iniciar sesión y pasar por caja el carro.
      1. Abra los siguientes archivos para su edición.
        • /Stores/WebContent/AuroraStorefrontAssetStore/Snippets/Order/Cart/CheckoutLogon.jsp
        • /Stores/WebContent/AuroraStorefrontAssetStore/javascript/CheckoutArea/ShipmodeSelectionExt.js
        • Localice la línea de código siguiente en CheckoutLogon.jsp.
          <form method="post" name="AjaxLogon" id="AjaxLogon" action="Logon">
        • Añada la siguiente línea debajo de la línea.
          <form method="post" name="AjaxLogon" id="AjaxLogon" action="Logon">
          <input type="hidden" name="mergeCart" value="true" id="WC_RememberMeLogonForm_FormInput_mergeCart_In_AjaxLogon_1"/>
        • En ShipmodeSelectionExt.js, localice la línea de código siguiente en el método guestShopperLogon.
          document.AjaxLogon.URL.value = completeOrderMoveURL;
        • Sustituya la línea por la siguiente.
          document.AjaxLogon.URL.value = "&URL="+afterOrderCalculateURL;
        • Guarde y cierre los archivos.
  15. Opcional: Corrija los archivos de propiedades de mensajes de error predeterminados para asegurarse de que no se visualizan mensajes de error inadecuados en el escaparate.
    Esto solo es necesario si el sitio no utiliza mensajes de error personalizados.
    1. Abra los archivos siguientes, y los idiomas adicionales que la tienda utiliza, para editarlos.
      • 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
    2. Elimine el mensaje siguiente de los archivos de propiedades de mensajes de error B2B.
      _ERR_CMD_INVALID_PARAM = An error occurred during registration. Please try again later or contact the store for assistance.
    3. Localice y sustituya mensajes incorrectos.
      1. Localice los dos mensajes siguientes en todos los archivos.
        _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.
      2. Sustituya los mensajes para intercambiar las referencias al nickname en los mensajes con 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.
    4. Guarde y cierre todos los archivos.
  16. Actualice los archivos Java Server Page Fragment (JSPF) para que los usuarios puedan pulsar el enlace de suscripción en el escaparate.
    1. Abra los siguientes archivos para su edición.
      • /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
    2. En cada uno de los archivos, localice y elimine el siguiente código.
      <c:when test="${!empty restNonSSLPort}">
          <c:set var="restURLPort" value="${restNonSSLPort}" scope="request"/>
          <c:set var="restURLScheme" value="http" scope="request"/>
      </c:when>
      
    3. Guarde y cierre los archivos.
  17. Actualizar los archivos JavaScript (JS) para resolver un problema de notificación por correo electrónico para la creación de listas de deseos.
    1. Abra los siguientes archivos para su edición.
      • /Stores/WebContent/AuroraB2BStorefrontAssetStore/javascript/UserArea/MultipleWishLists.js
      • /Stores_v7/WebContent/AuroraStorefrontAssetStore/javascript/UserArea/MultipleWishLists.js
    2. En cada archivo, localice las líneas siguientes.
      // maps email input to param required by AjaxGiftListAnnouncement
      form.recipientEmail.value = form.recipient.value;
      form.senderName.value = form.sender_name.value;
    1. Añada la siguiente línea en esta sección de cada archivo.
      // maps email input to param required by AjaxGiftListAnnouncement
      form.recipientEmail.value = form.recipient.value;
      form.recipient.value = "";
      form.senderName.value = form.sender_name.value;
    2. Guarde y cierre ambos archivos.
  18. Actualice los archivos Java Server Page Fragment (JSPF) de pagos y facturación para manejar el método de pago de Apple Pay.
    1. Abra los siguientes archivos para su edición.
      • /Stores/WebContent/Aurora/ShoppingArea/CheckoutSection/CheckoutPaymentsAndBillingAddress.jspf
      • /Stores/WebContent/AuroraStorefrontAssetStore/ShoppingArea/CheckoutSection/CheckoutPaymentsAndBillingAddress.jspf
      • /Stores/WebContent/AuroraB2BStorefrontAssetStore/ShoppingArea/CheckoutSection/CheckoutPaymentsAndBillingAddress.jspf
    2. Alrededor de la línea 500, localice la siguiente línea de código.
      <c:if test="${currentPaymentMethodName != 'PayInStore' && currentPaymentMethodName 
      != 'CompatiblePayment' && (currentPaymentMethodName ne 'SimplePunchout' or (currentPaymentMethodName 
      eq 'SimplePunchout' and punchoutPaymentAllowed))}">
    3. Actualice el código añadiendo el método currentPaymentMethodName != 'ApplePay'.
      El ejemplo siguiente muestra la apariencia del código después de la actualización.
      <c:if test="${currentPaymentMethodName != 'ApplePay' && currentPaymentMethodName 
      != 'PayInStore' && currentPaymentMethodName != 'CompatiblePayment' && 
      (currentPaymentMethodName ne 'SimplePunchout' or (currentPaymentMethodName eq 'SimplePunchout' 
      and punchoutPaymentAllowed))}">
    4. Guarde y cierre los archivos.
  19. Actualice la tabla STORECONFcon los ID de tienda de sitios ampliados. Repita este proceso en las bases de datos del entorno de desarrollo y producción.
    1. Abra un indicador de mandatos para la base de datos de HCL Commerce Version 9.1.
    2. Ejecute la siguiente consulta de selección SQL para recuperar los ID de tienda para el tipo específico de tienda.
      select store_id from store where directory in ('store_name');
      Donde
      store_name
      El nombre base de la tienda, por ejemplo, AuroraESite.
    3. Para cada ID de tienda de sitio ampliado recuperado, inserte un registro correspondiente en la tabla STORECONF ejecutando la consulta de inserción siguiente.
      Insert into storeconf values(STOREENT_ID, 'wc.store.isRemote','0',0);
      Donde:
      STOREENT_ID
      El ID de la tienda que ha recuperado del mandato SQL anterior.
  20. Si está migrando a HCL Commerce Version 9.1, tendrá que actualizar la configuración de Struts. Consulte Migración de aplicaciones web personalizadas de IBM Websphere Commerce Versión 7 Feature Pack 6 a Struts 2.
  21. Actualice el archivo ListTable_UI.jspf para trabajar con la función Subir listas de solicitudes.
    1. Abra el archivo siguiente para editarlo.
      • /Stores/WebContent/Widgets_701/Common/MyAccountList/ListTable_UI.jspf
    2. Localice el código siguiente.
      <input type="file" id="UpLoadedFile" name="UpLoadedFile" class="button_text"
    3. Actualice el Update name="UpLoadedFile" a name="filename".
    4. Guarde y cierre el archivo.
  22. Elimine EJB del encabezado de vista previa de la tienda.
    1. Abra el archivo \Stores\WebContent\tools\preview\StorePreviewerHeader.jsp para editarlo.
    2. Localice el fragmento de código siguiente.
      pageContext.setAttribute("workspaceId", abWorkspace.getWorkspaceIdInEJBType().toString());
    3. Sustituya el fragmento por lo siguiente.
      pageContext.setAttribute("workspaceId", abWorkspace.getWorkspaceId().toString());
    4. Guarde y cierre el archivo.
  23. Actualice las JSP relacionadas con la dirección para mostrar correctamente la dirección de envío y facturación en la página de pago.
    1. Abra los siguientes archivos para su edición.
      • Stores\WebContent\AuroraB2BStorefrontAssetStore\ShoppingArea\CheckoutSection\SingleShipment\ShippingAddressSelect.jsp
      • Stores\WebContent\AuroraStorefrontAssetStore\ShoppingArea\CheckoutSection\SingleShipment\ShippingAddressSelect.jsp
    2. Localice el fragmento de código siguiente.
      <c:set var="selectedAddressId" value="${param.addressId}"/>
    3. Sustitúyalo por el fragmento de código siguiente:
      <c:set var="selectedAddressId" value="${orderShipInfo.usableShippingAddress[0].addressId}"/>
    4. Guarde y cierre los archivos.
    5. Abra los siguientes archivos para su edición.
      • Stores\WebContent\AuroraStorefrontAssetStore\Snippets\Member\Address\AddressDisplay.jsp
      • Stores\WebContent\AuroraB2BStorefrontAssetStore\Snippets\Member\Address\AddressDisplay.jsp
    6. Localice el fragmento de código siguiente.
      <c:if test="${empty WCParam.addressId}" >
    7. Sustitúyalo por el fragmento de código siguiente:
      <c:if test="${empty WCParam.addressId || WCParam.addressId ne param.addressId }" >
    8. Guarde y cierre los archivos.
  24. Actualice Content_UI.jspf para visualizar correctamente el icono que simboliza la URL adjuntos para el contenido de marketing.
    1. Abra los siguientes archivos para su edición.
      • \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
    2. Localice el fragmento de código siguiente.
      <c:if test="${not empty fileType}">
    3. Debajo de este fragmento, agregue el siguiente código.
      <c:if test="${fileType eq 'html' || fileType eq 'htm' || mimeType eq 'text/html'}">
      	<c:set var="attachmentType" value="html"/>
      </c:if>
      
    4. Guarde y cierre los archivos.
  25. Actualice los archivos JSP relacionados con el filtro de precios que se utilizan para generar URL.
    1. Abra el archivo Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.CatalogEntryList/CatalogEntryList_UI.jspf para editarlo.
      • Localice la línea de código siguiente.
        SearchBasedNavigationDisplayJS.appendFilterPriceRange();
      • Sustituya la línea por la siguiente.
        SearchBasedNavigationDisplayJS.appendFilterPriceRange("<c:out value='${env_CurrencySymbolToFormat}' escapeXml='false'/>");
    2. Abra el archivo Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.CatalogEntryList/javascript/SearchBasedNavigationDisplay.js para editarlo.
      • Localice la línea de código siguiente.
        checkPriceInput:function(event)
      • Sustituya la línea por la siguiente.
        checkPriceInput:function(event, currencySymbol)
      • Localice la línea de código siguiente.
        this.appendFilterPriceRange();
      • Sustituya la línea por la siguiente.
        this.appendFilterPriceRange(currencySymbol);
      • Localice la línea de código siguiente.
        appendFilterPriceRange:function()
      • Sustituya la línea por la siguiente.
        appendFilterPriceRange:function(currencySymbol)
      • Localice la línea de código siguiente.
        var label = this.currencySymbol + byId("low_price_input").value + " - " + this.currencySymbol + byId("high_price_input").value;
      • Sustituya la línea por la siguiente.
        var label = currencySymbol + byId("low_price_input").value + " - " + currencySymbol + byId("high_price_input").value;
      • Localice la línea de código siguiente.
        restoreHistoryContext:function()
      • Sustituya la línea por la siguiente.
        restoreHistoryContext:function(currencySymbol)
      • Localice la línea de código siguiente.
        this.appendFilterPriceRange();
      • Sustituya la línea por la siguiente.
        this.appendFilterPriceRange(currencySymbol);
    3. Abra el archivo Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.FacetNavigation/FacetNavigation_HorizontalView_UI.jspf para editarlo.
      • Localice la línea de código siguiente.
        <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"/>
      • Sustituya la línea por la siguiente.
        <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"/>
      • Localice la línea de código siguiente.
        <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"/>
      • Sustituya la línea por la siguiente.
        <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"/>
      • Localice la línea de código siguiente.
        setTimeout("SearchBasedNavigationDisplayJS.restoreHistoryContext();", 200);
      • Sustituya la línea por la siguiente.
        setTimeout("SearchBasedNavigationDisplayJS.restoreHistoryContext(\"<c:out value='${env_CurrencySymbolToFormat}' escapeXml='false'/>\");", 200);
    4. Abra el archivo Stores/WebContent/Widgets_701/com.ibm.commerce.store.widgets.FacetNavigation/FacetNavigation_VerticalView_UI.jspf para editarlo.
      • Localice la línea de código siguiente.
        <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"/>
      • Sustituya la línea por la siguiente.
        <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"/>
      • Localice la línea de código siguiente.
        <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"/>
      • Sustituya la línea por la siguiente.
        <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"/>
      • Localice la línea de código siguiente.
        setTimeout("SearchBasedNavigationDisplayJS.restoreHistoryContext();", 200);
      • Sustituya la línea por la siguiente.
        setTimeout("SearchBasedNavigationDisplayJS.restoreHistoryContext(\"<c:out value='${env_CurrencySymbolToFormat}' escapeXml='false'/>\");", 200);
    5. Guarde y cierre los archivos.

Resultados

La tienda basada en Aurora se ha migrado correctamente.