Supervisión de campos sensibles en Dynamics 365 Business Central mediante Telemetría y Power Automate.

Escenario

Planteamos un escenario en el que un responsable de DPO quiere conocer cuando cambian los valores determinados campos en la ficha de Banco en Dynamics 365 Business Central. Para ello necesita tener cada semana un resumen de los cambios en un correo electrónico.

¿Cómo lo hacemos?

Como vimos en el anterior post ,podemos configurar y clasificar los campos como parte de la obligación de cumplir con los reglamentos de cada pías al respecto.

Os recuerdo los cuatro tipos de clasificación que podemos asignar a los campos:

Clasificar los campos de la tabla Banco

Desde la hoja de trabajo de clasificación de datos pulsamos editar lista y filtramos por el numero que identifica la tabla de Banco: 270. O podemos usar otro filtro que nos muestre fácilmente los campos.

Una vez tengamos solo los campos visibles de los campos de Banco seleccionamos los campos:

  • Nombre
  • Contacto
  • IBAN
  • Código SWIFT

Para cada uno de ellos en la columna Confidencialidad de datos seleccionaremos Confidencial de la empresa. Veremos que los campos Ultima modificación por y Ultima modificación se actualizan con nuestros usuario y la hora fecha de la actualización.

Construir la consulta de la telemetría en KQL

La telemetría emite señales que se clasifican en eventos y se organizan por áreas . En este caso vamos a centrarnos en telemetría de tenant (la hay también para las extensiones) en concreto en el área de Field Monitoring Telemetry.

Este área contiene todas las señales/eventos relacionadas con los el monitoreo de campos y observa lo siguiente:

  • Cuando se detiene o inicia el monitoreo de campo
  • Cuando se agrega o elimina un campo para monitorear (solo en la versión 18.0 y posteriores)
  • Cuando se cambia un valor de campo

En nuestro escenario vamos a trabajar con el evento que se registra al cambiar un valor de campo.

El id del evento es AL0000CTE y esta disponible desde la version 18 de Business Central y el mensaje que devuelve es : «Sensitive field value has changed: {alfieldCaption} ({alFieldNumber}) in table {altableCaption} ({alTableNumber})«.

Como veis en la imagen superior, tenemos disponibles para este evento distintas dimensiones personalizadas y con ellas es con las que vamos a trabajar para crear la consulta en KQL .

Nos vamos a basar en un consulta que podemos obtener de GitHub :

traces
| where
customDimensions.eventId == 'AL0000CTE' and customDimensions.alTableNumber == '270'
| project timestamp, eventId=customDimensions.eventId, message
, componentVersion = customDimensions.componentVersion
, aadTenantId = customDimensions.aadTenantId
, environmentType = customDimensions.environmentType
, environmentName = customDimensions.environmentName
, extensionVersion = customDimensions.extensionVersion // base app version
, alTableNumber = customDimensions.alTableNumber // only available from 18.0
, alFieldNumber = customDimensions.alFieldNumber // only available from 18.0
// the custom dimensions alTableCaption and alFieldCaption changed slightly in 18.0
, alTableCaption = iff( isempty(customDimensions.alTableCaption), customDimensions.altableCaption, customDimensions.alTableCaption )
, alFieldCaption = iff( isempty(customDimensions.alFieldCaption), customDimensions.alfieldCaption, customDimensions.alFieldCaption )

Si ejecutamos la sentencia desde el editor de consultas en Azure Applications Insights y tras haber realizado algunos cambios nos debería devolver algo como esto:

Como veis en la consulta filtramos por :

customDimensions.eventId == 'AL0000CTE' and customDimensions.alTableNumber == '270'

Por un lado buscamos el evento y por otro solo lo relacionando con la tabla 270 podíamos filtrar por el nombre de la tabla pero nos influiría el idioma del caption. Mejor y mas escalable por id de la tabla en este caso como comentaba id 270 Bank Account o Banco.

Bueno pues con esto probado pasamos a Power Automate .

Diseñar el flujo en Power Automate

Para nuestro flujo vamos a definir tres bloques :

  • Recurrencia .
  • Consulta a Azure Applications Insights.
  • Envío de mensaje /alerta.

La primera es para programar cada cuanto tiempo vamos a consultar la telemetría, una vez a la semana.

Para realizar la consulta vamos a utilizar las acciones disponibles en Power Automate para Azure Applications Insights y vemos que tenemos dos:

Para poder ser ejecutadas necesitamos crear una conexión el entorno de Azure Applications Insights .La conexión nos pide dos cosas : el Id de aplicación y la clave del API. Si llegados a este punto no hemos aún creado el acceso al API debemos hacerlo antes de continuar.

Una vez que la conexión está parametrizada pasamos a añadir la acción ejecutar la consulta de Analytics y en el parámetro consulta copiamos la consulta de KQL anterior . En el parámetro de intervalo de tiempo indicamos cuanto tiempo hacia atrás queremos que la consulta busque eventos.

Debemos tener en cuenta la política de retención de Applications Insights para no selecciona un intervalo de tiempo incoherente.

El siguiente paso es comprobar que la consulta tiene datos , es opcional pero me parece buena idea para no mandar correos innecesarios.

length(outputs(‘Ejecutar_la_consulta_de_Analytics’)?[‘body/value’])

En caso de que la consulta devuelva datos pues se ejecuta el bloque de la comunicación vía Outlook y si no devuelve nada pues acabamos el flujo.

Lanzar la comunicación del resultado de la consulta de cambios sobre la tabla Bancos

En caso de la consulta devuelva datos lo que hacemos es llamar a la accion Visualizar consulta de Analytics.

En el parámetro consulta copiamos la consulta anterior ,pero aquí lo importante es que definamos bien las columnas que devolvemos (las definimos en KQL mediante la sentencia project) para devolver lo que queremos informar a nuestro DPO

Esto es asi porque en este tipo de acción definimos como queremos que sea la visualización de salida . En nuestro escenario escogemos tabla html pero podemos escoger otros.

Para poder crear la tabla en el cuerpo de un correo lo que haremos es recoger la salida de la acción de visualizar y procesarla . Así podemos añadir el paso de Enviar correo electrónico de O365 donde en el cuerpo del mensaje podremos componer la comunicación añadiendo la salida del paso Redactar anterior.

Y con esto el mensaje que le llegaría a nuestro/a DPO cada semana seria el siguiente:

El escenario es un caso de uso sencillo para simplemente ver posibilidades y por supuesto podemos tomarlo como base para completarlo y dotarlo de mas capacidades.

Podemos hacerlo extensible a controlar colas de proyecto ,rendimientos ,crear alertas etc.

La telemetría que nos brinda Business Central junto con Azure y Power Platform nos da las capacidades para pasar de un modo de reactivo a uno proactivo sin una línea de código.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s