top of page

"Jobs" en D365FO 10.0.25

Updated: Jun 29, 2022

Los que nos hemos peleado con varias de las versiones de Dynamics siempre hemos echado de menos en D365FO ese acceso al AOT en el entorno de Producción, el acceso a su base de datos, y poder trastear allí.


Este deseo o esta melancolía se acentúa cuando se intuye que en D365FO no podremos crear Jobs en Producción sin antes tener que subir un paquete y parar el entorno.


Ha llegado el fin de estos días. En la release 10.0.25 se prevé la aparición de una serie de nuevas funcionalidades en las que destaca el hecho de poder "desarrollar jobs" en Producción sin tener que parar el entorno.




Así pues solo necesitamos que nuestro entorno esté en la versión 10.0.25 (aún en Preview) y realizar los siguientes pasos:


Visión general


1. Habilitar el flight que nos permite habilitar la característica


Para ello en la máquina donde tenemos la versión 10.0.25 ejecutamos la siguiente sentencia haciendo uso de las d365fotools


Enable-D365Flight -FlightName AppConsistencyCustomScriptFlight


2. A partir de este momento veremos un punto de menú nuevo en D365FO


Administración del sistema / Tareas periódicas / Base de datos / Scripts personalizados


3. Una vez dentro el formulario que nos aparece tiene el siguiente aspecto:


Como podemos ver es un formulario muy simple donde nos permite cargar nuevos Jobs (botón Cargar) y ver el histórico de la ejecución de los Jobs y su información.


Carga


Para poder ejecutar un Job en un entorno habilitado para ello debemos seguir los siguientes pasos:


1. Crear en un entorno de desarrollo cualquiera un paquete independiente con un modelo con solo UNA Runnable Class (el Job).




Este requisito es indispensable para la correcta validación de la característica.





En este caso crearemos un Job que solo nos muestre un mensaje por pantalla.






2. Una vez creado el Job creamos un paquete desplegable desde Visual Studio seleccionando ese paquete

3. En el formulario de D365FO de Scripts personalizados clicamos Cargar y nos pedirá el paquete generado en el paso anterior



4. Introducimos un propósito informativo y seleccionamos el paquete. Obviamente nos avisa de los peligros que tiene ejecutar este tipo de procesos en entornos sobretodo Productivos.

5. Veremos nuestro paquete cargado en estado Cargado


Ejecución


Una vez el paquete ha sido cargado en el entorno hay que ejecutar una serie de pasos para validar que lo que vamos a hacer es correcto y que somos conscientes de los peligros que tiene realizar estas acciones.


  1. Un usuario que no sea el mismo que ha cargado el paquete debe Aprobar ese job. Esta aprobación es un paso totalmente administrativo. Queda claro que también podemos rechazarlo o abandonar ese Job porque ya no es necesario.



2. Una vez aprobado vemos que queda registro de quién y a qué hora se hizo esta aprobación.



3. Aun así solo nos deja "Ejecutar prueba". Se trata de ejecutar el job pero sin que éste tenga un efecto real sino que solo a modo informativo de lo que pasaría si lo ejecutáramos. Es por ello que es interesante añadir mensajes y validaciones para poder verlas en las pruebas.


4. En el resultado podemos ver como ha ejecutado la prueba y ha devuelto el mensaje que le habíamos puesto.



5. Aun así esto no es suficiente sino que tenemos que validar esta prueba mediante el siguiente botón:


6. Y ahora sí podemos ejecutarlo. Nos avisa que los cambios serán irreversibles. Usamos el botón "Ejecutar" y lanzará el job.


7. Una vez lanzado nos permite marcar ese job dependiendo del resultado que hemos obtenido.


8. Con este proceso realizado ya no podemos lanzar otra vez el job a no ser que carguemos otra vez el paquete en el sistema. De ese modo queda registro de qué jobs se han lanzado y quién hizo cada uno de los pasos.


Interesante funcionalidad a la vez que peligrosa. Aun así no es tan sencillo como lanzar una RunnableClass sino que hay diversas validaciones en medio que deberían hacer que fuera más seguro ejecutar este tipo de procesos.


Disponible en Marzo de 2022!!

bottom of page