Resolución de problemas: No es posible restablecer las contraseñas tras migrar la tienda local

Después de migrar una tienda de una versión anterior de WebSphere Commerce a HCL Commerce Version 9.1, lo que también se conoce como tienda local migrada, ya no es posible restablecer las contraseñas en Management Center for HCL Commerce o en el escaparate basado en Aurora.

Problema

En una tienda local migrada, el restablecimiento de contraseñas para los usuarios de Management Center for HCL Commerce o del escaparate basado en Aurora ya no funciona según lo previsto.

Esto se debe al hecho de que la configuración de RemoteStoreConfiguration se elimina del archivo de configuración WC_installdir/xml/config/com.ibm.commerce.foundation/wc-component.xml para las tiendas locales migradas.

Solución

Para corregir este problema, realice los cambios siguientes dentro de su Transaction server Docker container personalizado:
  1. Copie el archivo de la página del servidor de Java PasswordChangeConfirmationNotify.jsp en las siguientes ubicaciones:
    • Stores.war/EmailTemplates/User/
    • Stores.war/AuroraB2BStorefrontAssetStore/EmailTemplates/User/
    • Stores.war/AuroraStorefrontAssetStore/EmailTemplates/User/
  2. Modifique el archivo de configuración Stores.war/WEB-INF/classes/struts-wcs-stores-custom.xml.
    Añada el código de los resultados siguiente entre los bloques de los resultados PasswordNotifyView y PasswordReEnterErrorView.
    <result name="PasswordResetConfirmationNotifyView/10651/-3" type="wcsstore">
    	<param name="implClassName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl</param>
    	<param name="interfaceName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommand</param>
    	<param name="location">/EmailTemplates/User/PasswordChangeConfirmationNotify.jsp</param>
    </result>
    <result name="PasswordResetConfirmationNotifyView/10701/-3" type="wcsstore">
    	<param name="implClassName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl</param>
    	<param name="interfaceName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommand</param>
    	<param name="location">/EmailTemplates/User/PasswordChangeConfirmationNotify.jsp</param>
    </result>
    
    Nota: Sustituya 10651 y 10701 por los valores STOREENT_ID AuroraStorefrontAssetStore y AuroraB2BStorefrontAssetStore para realizar el despliegue.
  3. Modifique el archivo de configuración Stores.war/WEB-INF/classes/struts-wcs-stores.xml.
    • Añada el resultado siguiente entre los resultados denominados PasswordNotifyView y PickBatchGenerateErrorView.
      <result name="PasswordResetConfirmationNotifyView/0/-3">
      	<param name="direct">true</param>
      	<param name="implClassName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl</param>
      	<param name="interfaceName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommand</param>
      	<param name="location">/EmailTemplates/User/PasswordChangeConfirmationNotify.jsp</param>
      	<param name="properties">storeDir=no</param>
      	<param name="resourceClassName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl</param>
      </result>
      
    • Añada la acción siguiente entre las acciones denominadas defaultStoreAction y *.jsp.
      <action class="com.ibm.commerce.struts.v2.BaseAction" name="PasswordResetConfirmationNotifyView">
      	<param name="https">0:1</param>
      </action>
      
  4. Modifique los dos archivos de propiedades siguientes:
    • ts.ear/properties/PasswordResetNotification_en_US.properties
    • ts.ear/properties/PasswordResetNotification.properties
    Añada el siguiente mensaje.
    PasswordResetNotification.MessagePart3=has been changed
  5. Cree un fragmento de contenido de marketing y enlácelo a una zona de e-Marketing ejecutando las siguientes consultas SQL en la base de datos.
    1. Cree el contenido de marketing.
      INSERT INTO COLLATERAL (COLLATERAL_ID,STOREENT_ID,COLLTYPE_ID,NAME,URL,FIELD1,FIELD2,BEHAVIOR,UIDISPLAYABLE,MANAGINGTOOL,OVRMKTLIMIT,OPTCOUNTER) VALUES ((SELECT MAX(COLLATERAL_ID) AS COLLATERALID
      FROM COLLATERAL)+1, (SELECT STOREENT_ID FROM STOREENT WHERE STOREENT.IDENTIFIER='AuroraB2BESite'), 2, 'PasswordChangeConfirmationNotifyCenter_Content4',NULL,NULL, NULL,1,NULL,NULL,0,0);
      
    2. Añada una descripción y valores al contenido de marketing.
      INSERT INTO COLLDESC VALUES ((SELECT MAX(COLLATERAL_ID) AS COLLATERALID
      FROM COLLATERAL), -1,NULL, '<p> Dear [userName],<br /><br /><br />This is to confirm that your password has been updated. <br /><br /><br />Thanks,<br />The [storeName] team</p><br />',NULL,NULL,NULL, 0);
      
    3. Cree una nueva zona de e-Marketing.
      INSERT INTO WCS.EMSPOT
      (EMSPOT_ID, STOREENT_ID, NAME, DESCRIPTION, SUPPORTEDTYPES, DEFAULTRULE, USAGETYPE,  UIDISPLAYABLE, MANAGINGTOOL, OPTCOUNTER)
      VALUES((SELECT MAX(EMSPOT_ID) AS EMSPOTID
      FROM EMSPOT)+1, (SELECT STOREENT_ID FROM STOREENT WHERE STOREENT.IDENTIFIER='AuroraB2BESite'),
      'PasswordChangeConfirmationNotifyCenter_Content4', '', NULL, NULL, 'MARKETING', NULL, NULL, 0);
      
    4. Añada la zona de e-Marketing a la sección de contenido predeterminado.
      INSERT INTO WCS.DMEMSPOTDEF
      (DMEMSPOTDEF_ID, EMSPOT_ID, STOREENT_ID, CONTENTTYPE, CONTENT, "SEQUENCE", OPTCOUNTER)
      VALUES((SELECT MAX(DMEMSPOTDEF_ID) AS DMEMSPOTDEFID
      FROM WCS.DMEMSPOTDEF)+1, (SELECT MAX(EMSPOT_ID) AS EMSPOTID
      FROM EMSPOT), (SELECT STOREENT_ID FROM STOREENT WHERE STOREENT.IDENTIFIER='AuroraB2BESite'), 'MarketingContent',
      (SELECT MAX(COLLATERAL_ID) AS COLLATERALID
      FROM COLLATERAL), 0.0, 1);
      
    5. Repita los pasos de a. a d., pero sustituya AuroraB2BESite por AuroraESite en cada sentencia SQL.
  6. Reinicie el Transaction server.

La función que permite restablecer las contraseñas en el escaparate basado en Aurora, así como dentro de Management Center, ahora funciona según lo previsto.