Primer post sobre Microsoft Dynamics 365 for Finance and Operations Retail! Espero que lleguen más.

Como sabréis, uno de los contratiempos del refresco de datos desde producción en LCS es que hay algunos datos que no se copian. Esto es una medida de seguridad para evitar, entre otros, que no se manden correos o se ejecuten los lotes por accidente después de restaurar la DB.

Recordad que es una buena idea tener un script/query de SQL que cambie todos los endpoints, contraseñas, activar usuarios, etc. que se pueda ejecutar después del refresco de datos, igual que teníamos en AX2009/2012. Un F5 en SSMS y el entorno estará listo para usar y tendremos la DB lista para exportar a las máquinas de desarrollo.

Otra de las cosas que no se copian después del restore son los archivos de las cuentas de almacenamiento de Azure: ficheros XLSX del ER, archivos de la DocuValue y los instaladores self-service de Retail.

Paquetes de Retail

Los paquetes de Retail son los ejecutables que se usan para instalar el MPOS en el… bueno, en el terminal de venta (POS). Estos archivos están guardados en una cuenta de almacenamiento de Azure blob storage que es específico de cada entorno, así que cuando se refresca la DB no están los paquetes de autoservicio en el entorno de destino:

La solución oficial de Microsoft es aplicar un paquete binario que recreará los archivos EXE en la cuenta de almacenamiento de la máquina virtual donde se ejecute el paquete desplegable.Y como sabemos ya todos esto requiere de un tiempo, y aunque se puede ejecutar fuera de horario también lo podemos arreglar en menos de 10 minutos.

El workaround

Ahhh el «workaround»… una palabra tan bonita y que tiene tantos significados… Truquillo, ñapa, arreglo… Esta vez encima tiene una restricción: sólo va a funcionar en VMs de desarrollo y Tier 2+ normales, no se puede hacer en los entornos de tipo self-service porque no tenemos acceso la máquina del AOS.

Lo que tenemos que hacer es entrar a una de las máquinas del AOS por RDP e ir al disco de servicio (normalmente la K en desarrollo y G en los Tier 2+). Debería haber una carpeta llamada DeployablePackages si has aplicado alguno, sino hay que seguir con el método oficial. Si no existe la carpeta seguramente funcione también usando los archivos que hay en la unidad de instalación, pero no lo he probado.

Ordenamos los archivos por fecha de modificación (nuevos primero) y dentro del primero debería haber otra carpeta llamada RetailSelfService:

Y dentro de esa carpeta verás 3 carpetas más, Packages, Scripts y ServiceModel. Dentro de la carpeta Packages están los archivos EXE y en el Scripts están los scripts (un aplauso por favor), abrimos este último y vamos a la carpeta Upgrade, ahí encontraremos un script de PowerShell que se llama UpdateRetailSelfService. Tenemos que ejecutar este script en PowerShell como administrador. Va a tardar entre 3 y 5 minutos y cuando termine los paquetes estarán subidos a la cuenta de almacenamiento y ya aparecerán en el formulario de parámetros de Retail.

¡Eso a mi no me funciona!

Hay un caso es el que los instaladores no se cargan: si no tienes ninguna configuración hecha para Retail. ¿Por qué? El script de PowerShell comprueba lo siguiente:

  • Que existan datos de canal en la Channel DB
  • Que existan datos de canal en el AOS
  • Que haya transacciones en el AOS
  • Que haya datos de transacciones en la Channel DB
  • Que existan extensiones de la Channel DB

Si no se cumple ninguna de estas condiciones el script se salta la creación de los instaladores en el blob. ¡Pero podemos hacer algo! Sí, como configurar un canal por ejemplo. Pero ¿y si no tienes ganas?

Recuerdas el script UpdateRetailSelfService de antes? Sólo tienes que editarlo y comentar las siguientes líneas:

Esto hará que el script se salte la validación y se desplieguen los instaladores.

Es bastante guarro, ¿verdad? Sí. Hace honor a workaround.

¿Qué hay de los entornos self-service?

Estoy convencido de que esto también se puede conseguir modificando un Deployable Package (uno de los de las actualizaciones mensuales), dejando solo Retail en el archivo DefaultTopologyData.xml, e incluso editar el script si hace falta. Pero no lo he probado. ¿Algún voluntario?

¡Suscríbete!

Recibe un correo cuando se publique un nuevo post
Author

Microsoft Dynamics 365 Finance & Operations technical architect and developer. Business Applications MVP since 2020.

2 Comments

  1. Hey ADRIÀ excelente articulo sobre retail, eh estado algo desactualizado entre el retail de d365fo y lo que era en AX 2012, oye puedo preguntar algo… ¿como puedo deployar una maquina retail (tier 1)? eh visto en el docs de d365fo como poder implementar una maquina demo con retail, pero no eh podido encontrar algo que me guie sobre como crear una reatil en tier 1, ojala tengas algo por alli, gracias de nuevo por tu excelente post!

    • Adrià Ariste Santacreu Reply

      Hola Diego,

      tienes que desplegar un entorno de desarrollo o demo normal, y luego desde LCS hay una opción de Retail que te permite desplegar el CSU y ya puedes configurar todo en la interfaz. Si sólo quisieras tener la funcionalidad de Retail tendrías que activar la licencia de Retail en System administration (Dynamics 365 for Retail) y te deja el entorno en modo Retail.

Write A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

ariste.info