Category

MSDyn365FO

Category

¡Estoy de vuelta con información adicional sobre Azure API Management! Más contenido de Azure, y probablemente seguiré escribiendo más posts relacionados con Azure en el futuro.

Creo que hay muchas formas de aprender cosas nuevas, y para mí, dos de ellas son escribir artículos en el blog y utilizar nuevas tecnologías para resolver problemas en el trabajo. Por supuesto, mi objetivo es intentar aplicar los temas de Azure sobre los que escribo a Dynamics 365.

Hoy voy a presentar un enfoque de arquitectura para las integraciones, aprovechando el API Management y otros componentes de Azure, para Dynamics 365 o cualquier otra cosa que tenga un endpoint.

Puedes leer la segunda parte de este post en IaC con Bicep: despliega la arquitectura de Azure API Management.

Hace tres días eché un vistazo a las nuevas características de la versión 10.0.25 actualmente en el programa PEAP, leyendo tranquilamente hasta que vi algo sobre custom scripts en prod, algo que decía:

Run custom X++ scripts with zero downtime

Mi opinión sobre los custom scripts de X++ 2
Los custom scripts me confunden

Podéis imaginar mi cara cuando leí esto. Al principio estaba confundido, luego sorprendido y luego confundido de nuevo. Después de leer la descripción, la situación no mejoró:

Esta característica le permite cargar y ejecutar paquetes desplegables que contienen scripts X++ personalizados sin tener que pasar por Microsoft Dynamics Lifecycle Services (LCS) o suspender su sistema. Por lo tanto, puede corregir pequeñas inconsistencias de datos sin causar ningún tiempo de inactividad.

¿Nos acaban de dar una forma de ejecutar código en producción sin tener que desplegarlo? Sí, así es. Como mucha gente ha dicho estos dos últimos días: «¡Los jobs de X++ han vuelto!». Y hay muchas discusiones sobre la función de custom scripts.

El año 2021 está llegando a su fin, y es hora de repasar los cambios que hemos tenido durante este último año.

Tengo todas las nuevas características en esta bolsa
Tengo todas las nuevas características en esta bolsa

Así que si os habéis perdido algo, espero que lo podáis encontrar aquí, aunque no voy a incluir todas las nuevas características de Dynamics 365 Finance & Operations, solo algunas de ellas, las que me han parecido más interesantes.

Se ha publicado una nueva versión de las tareas para nuestros pipelines que usan los agentes de Azure. Estos cambios se han introducido recientemente para dar soporte a las librerías de autenticación MSAL para la conexión de LCS que utilizamos para subir y desplegar los deployable packages.

Las conexiones que tenemos ahora usan la Azure Active Directory (Azure AD) Authentication Library (ADAL), y el soporte para ADAL va a terminar en junio de 2022.

Esto quiere decir que si no actualizamos las tareas de Asset Upload y Asset Deployment a las nuevas versiones (1.* y 2.* respectivamente) los pipelines de release podrían dejar de funcionar después del 30 de junio de 2022.

Actualiza automáticamente como…
Actualiza automáticamente como…

Ahora que Microsoft va a actualizar los entornos sandbox adicionales de Dynamics 365 Finance and Operations, los partners y clientes solo nos tendremos que ocupar de los entornos hospedados en la nube (cloud-hosted environments), como hemos hecho siempre.

Estoy seguro de que cada equipo gestiona esto a su manera, quizá dejando que cada desarrollador actualice su máquina, o que hay alguien en el partner que se lo hace. Y eso en el mejor de los casos, quizá nadie actualiza las máquinas de desarrollo…

Si quieres saber más sobre builds, releases y el ALM de desarrollo de Dynamics 365 puedes leer mi guía sobre MSDyn365 y Azure DevOps ALM.

¡Hoy os traigo un script de PowerShell que podemos ejecutar en un pipeline para actualizar automáticamente todas las máquinas de desarrollo!

¿Necesitas obtener el precio de un artículo que tiene un acuerdo comercial, ya sea de compra o de venta? ¡Pues aquí tenemos a nuestra amiga la clase PriceDisc para salvarnos!

Intentando pescar el mejor precio con el PriceDisc framework
Intentando pescar el mejor precio con el PriceDisc framework

Esto es uno de esos post referencia que escribo para el Adrià del futuro, porque es algo que olvido con una facilidad pasmosa.

¡La magia del PriceDisc!

Existe un método obsoleto, creo que el findItemPriceAgreement, para obtener el precio, pero está obsoleto como acabo de decir. Así que lo más sencillo es usar la clase PriceDisc que sustituye al método obsoleto.

Para usarlo sólo tenemos que instanciar un objeto de tipo PriceDiscParameters y llamar a sus métodos parm. Luego creamos otro objeto de tipo PriceDisc usando el método newFromPriceDiscParameters y pasándole el de tipo PriceDiscParameters, y… bueno, mejor echa un ojo al código:

public static Amount getPrice(AccountNum _accountNum, 
                                CurrencyCode _currencyCode,
                                InventDim _inventDim,
                                ItemId _itemId,
                                ModuleInventPurchSales _module,
                                TransDate _date,
                                Qty _qty,
                                UnitId _unitId,
                                PriceGroupId _priceGroupId)
{
    PriceDiscParameters priceDiscParameters = PriceDiscParameters::construct();            

    priceDiscParameters.parmAccountNum(_accountNum);
    priceDiscParameters.parmCurrencyCode(_currencyCode);
    priceDiscParameters.parmInventDim(_inventDim);
    priceDiscParameters.parmItemId(_itemId);
    priceDiscParameters.parmModuleType(_module);
    priceDiscParameters.parmPriceDiscDate(_date);
    priceDiscParameters.parmQty(_qty);
    priceDiscParameters.parmUnitId(_unitId);

    PriceDisc priceDisc = PriceDisc::newFromPriceDiscParameters(priceDiscParameters);
    priceDisc.findPrice(_priceGroupId);

    return priceDisc.price();
}

Y nada, ya está, eso es todo. Sé que es una entrada bastante estúpida, pero yo también lo soy y se me olvidan estas cosas.

Ha pasado un tiempo desde que escribí el post “Es Dataverse el futuro de las apps de Finance and Operations?”, y cuando lo escribí Dataverse todavía se llamaba CDS y pasó por un par de cambios de nombre más.

¿Ha cambiado algo desde que escribí ese post? ¿Todavía veo a Dataverse como el futuro de las aplicaciones de Finance and Operations? Bueno, ahora sabemos algunas cosas más, y se han publicado nuevas funcionalidades.

A man with a crystal ball seeing the future of Dataverse
Dime bola de cristal que hay en Dataverse…

Así que echémosle un ojo a la bola de cristal a ver que vemos dentro…

Convergencia

Podemos pensar en la convergencia de la plataforma como el proceso que va a llevar está llevando a Dynamics 365 Finance and Operations y la Power Platform más cerca, y haciéndonos así la vida un poco más fácil cuando queremos integrar ambos.

Si quieres aprender más sobre la convergencia entre FnO y Power Platform, lee esto:

Y también estas sesiones en YouTube (en inglés):

Estad atentos al canal de YouTUbe de ANZD365 FinOpsTeam porque ahora mismo están emitiendo una serie de charlas sobre convergencia y se va a publicar más contenido durante los próximos fines de semana.

Enlazar el ERP con Dataverse es más fácil que nunca

Recuerdo la primera vez que configuré Dual Write en un entorno cuando todavía estava en preview. Todo era manual y había parte de prueba y error en el proceso.

¿Has desplegado un entorno de Finance and Operations últimamente? Hay una sección para Dataverse, y después de marcar un check, va a desplegar de forma automática un entorno de Dataverse que se enlazará al de FnO que estamos desplegando. ¡Una vez estén listos, configurar Dual Write es facilísimo!

¿Y las Virtual Entities qué? Las podemos usar en nuestras soluciones de Power Platform en lugar del conector de Finance and Operations. Esto también hará la vida de los desarrolladores de Dataverse más fácil, porque podrán acceder a los datos del ERP de una forma que están acostumbrados y conocen bien.

Add-ins en Dataverse

Todos los add-ins que podemos instalar para extender Finance and Operations se están instalando en Dataverse. ¿Tienes que instalar el add-in de Visibilidad de Inventario o el de Export to Azure Data Lake add-ins? ¡Pues primero necesitarás enlazar un entorno de Dataverse!

¿Veremos la AxDB en Dataverse?

No creo que ni a corto ni medio plazo, pero igual en un futuro lejano… o quizá nunca. Si veis la charla de Sunil Garg, deja muy claro que, ahora mismo, hacer que el ERP y CRM/Dataverse convivan en la misma base de datos no está en los planes de la convergencia. ¡Pero por lo menos ya estamos todos en los mismos servidores elastic-pool de Azure SQL!

También pienso que dada la naturaleza transaccional del ERP es un poco difícil que esto ocurra. Pero quién sabe, porque el producto está evolucionando a tal velocidad que, quizá, algún día, lo veamos.

Desarrolladores X++

Si desarrollas X++ igual te estás preguntando: “Con todo esto de la convergencia, debería ir aprendiendo sobre la Power Platform?”.

¡Por supuesto que deberías! Pero no porque X++ vaya a desaparecer, esto lo deja clarísimo Sunil Garg en su sesión del Pakistan UG “Finance Operation & Power Platform convergence roadmap” (minuto 9:25).

Pero los desarrolladores de X++ tenemos que dejar de pensar que somos SOLO desarrolladores de X++. Juanan y yo lo hemos dicho en varias de nuestras charlas, ya no somos solo desarrolladores de X++. Primero, el cambio a Azure y ahora la irrupción de la Power Platform: tenemos que pensar en todo esto como herramientas que complementan nuestros desarrollos en X++. Y no solo complementar, en algunos casos incluso sustituirlos, como sería usar Logic Apps para conectar a un servidor FTP.

ariste.info