Cómo revisar las suscripciones a eventos en Business Central
Con el paso a Business Central SaaS, ya no podemos modificar directamente el código estándar de Microsoft. Por ello, una de las principales herramientas que tenemos para intervenir en el funcionamiento de la aplicación son las suscripciones a eventos.
Una suscripción a un evento consiste en ejecutar nuestro propio código cuando ocurre una determinada acción en Business Central, sin necesidad de modificar el estándar. Por ejemplo, imaginemos que queremos ejecutar una comprobación cada vez que se crea un cliente. Business Central dispone de un evento llamado OnAfterInsertEvent, que se lanza después de insertar un registro en una tabla. Lo que hacemos es suscribirnos a ese evento e indicar qué código queremos ejecutar cuando se produzca, de tal forma que, cada vez que se cree un cliente, Business Central ejecute automáticamente nuestro código personalizado.
Y la forma de hacerlo desde VS Code es bastante sencilla. Simplemente tenemos que crear una suscripción como esta dentro de una codeunit:
[EventSubscriber(ObjectType::Table, Database::Customer, 'OnAfterInsertEvent', '', false, false)]
local procedure CustomerOnAfterInsert(var Rec: Record Customer; RunTrigger: Boolean)
begin
// Código personalizado
end;
Cómo revisar las suscripciones a eventos
Si estamos trabajando en un proyecto pequeño o con pocas personalizaciones y tenemos acceso al código fuente, una forma sencilla de localizar las suscripciones es abrir VS Code y buscar directamente por EventSubscriber.
El problema viene cuando trabajamos con proyectos que tienen demasiadas extensiones personalizadas (incluso de terceros). En estos casos, resulta complicado localizar todas las suscripciones que se están ejecutando en Business Central. Por ejemplo, puede que recuerdes haber creado una suscripción a un determinado evento, pero no sepas exactamente en qué extensión la publicaste. O incluso puede que ni siquiera tengas acceso al código fuente de algunas de las aplicaciones instaladas.
Y esto puede ser un problema cuando estamos intentando localizar el origen de algún comportamiento que no sabemos de dónde viene. Por ejemplo, imaginemos que al modificar un cliente se ejecuta una comprobación que no tenemos identificada. Es posible que esa lógica venga de una suscripción a un evento de alguna extensión instalada, aunque no tengamos acceso a su código.
Pues recientemente me di cuenta de que BC permite consultar estas suscripciones directamente desde la propia aplicación.
Revisar las suscripciones directamente desde Business Central
Desde la página de “Administración de extensiones” contamos con un botón que permite consultar las suscripciones a eventos de cada extensión instalada.

Al ejecutarla, se abrirá una página con todas las suscripciones asociadas a esa extensión. Aquí podremos consultar información sobre el evento, el objeto que lo publica, la codeunit que se ha suscrito y la función que se ejecuta.

Pero lo interesante de esta página es que podemos pulsar en “Mostrar filtros del sistema” y eliminar el filtro de la propia extensión, correspondiente al campo “Id. de paquete original”. De esta forma, en lugar de consultar únicamente las suscripciones de una extensión, podremos ver todas las suscripciones registradas en nuestro entorno, incluyendo las del propio estándar de Microsoft y las de otras aplicaciones instaladas.
Personalmente, me parecen especialmente útiles estos campos:
- Id. de Codeunit del suscriptor: nos permite identificar la codeunit donde se encuentra el código que se ejecutará. Por ejemplo, podemos aplicar un filtro
50000..para localizar posibles desarrollos personalizados. No obstante, hay que tener en cuenta que este filtro no garantiza que todas las suscripciones sean personalizadas, ni que todas las personalizaciones estén dentro de ese rango de numeración, aunque sí la mayoría. - Id. objeto publicador: permite localizar las suscripciones asociadas a una tabla, codeunit u otro objeto determinado.
- Número de llamadas: especifica cuántas veces se ha llamado a la función suscriptora del evento. Es decir, nos permite conocer cuántas veces se ha ejecutado esa suscripción dentro del periodo contabilizado por el sistema. Hay que tener en cuenta que no se trata de un histórico permanente y que el contador no nos garantiza que el proceso haya finalizado correctamente.
También me parecen interesantes los campos “Nombre de aplicación de origen”, para identificar a qué extensión pertenece cada suscripción, y “Activo”, que nos permite comprobar si la suscripción se encuentra activa.
De hecho, podemos acceder directamente a esta página sin necesidad de entrar primero en “Administración de extensiones”. Se trata de la página estándar 9510 - Event Subscriptions, por lo que podemos abrirla indicando ?page=9510 en la URL de nuestro entorno de Business Central.
¿Para qué puede resultarnos útil?
Más allá de consultar qué suscripciones tenemos instaladas, creo que esta página es especialmente interesante cuando estamos investigando algún error o un comportamiento inesperado de Business Central.
Por ejemplo, imaginemos que estamos registrando una factura de venta y nos aparece un error que no identificamos como estándar. Antes de revisar todas las extensiones instaladas o buscar el código que lo provoca, podemos consultar las suscripciones relacionadas con los objetos que intervienen en el registro. De esta forma, podremos identificar qué aplicaciones están añadiendo lógica personalizada a ese proceso.
Y lo mejor es que podemos consultarlo sin necesidad de acceder al código fuente de cada extensión, algo bastante útil cuando trabajamos con aplicaciones de terceros o nos encontramos con personalizaciones que no hemos desarrollado nosotros.
Una idea para seguir pensando.
Explorar otras lecturas →