Checkpoints to mitigate performance issues (English version)
Puntos de control para mitigar los problemas de rendimiento
Muchas veces he escuchado sobre problemas de rendimiento en Business Central y al mismo tiempo muchas veces se ha identificado problemas de implementación o mal uso de algunas herramientas y funcionalidades de Business Central.
Hay que prestar especial atención a las configuraciones de algunas entidades, el horario de ejecución de algunos procesos e identificar acciones que debemos minimizar o controlar.
Les mencionaré algunos de ellos, y de existir algunos más espero sus comentarios:
Habilitación y configuración del registro de cambios
Business central nos advierte que la habilitación de esta funcionalidad tendrá un impacto en el rendimiento, por lo que tiene que ser una decisión estudiada con detenimiento la identificación de tabla o tablas, de campo o campos a auditar por cada una de ellas. Auditing Changes in Business Central

Business Central nos recomienda no añadir tablas históricas ni de movimiento, así como también evitar realizar el seguimiento de todos los campos de la tabla, sino que decidamos que campos nos interesa, ya que esto impacta incrementando la cantidad de veces que se escribe en la base de datos.


De igual manera es evidente que también impactará en el crecimiento de la base de datos, conllevando a que operaciones como copiado de empresa, exportación de base de datos y restauración del ambiente en caso de requerirse se vean afectados.
Para reducir la cantidad de entradas provocadas por este registro debemos crear políticas de retención para eliminar datos innecesarios después de un período de tiempo determinado. De esta manera eliminamos información antigua que no merece un análisis o atención en el presente. Define Retention Policies
Habilitación y configuración de la supervición de campos confidenciales
Esta funcionalidad nos permite monitorear campos importantes y recibir una notificación por correo electrónico cuando se cambie el valor del mismo para agregar una capa adicional de seguridad. Monitor sensitive fields
Su habilitación también nos advierte que impactará en el rendimiento, por lo que es necesario seleccionar con criterio las tablas y campos correspondientes.

De igual manera que el punto anterior la creación de políticas de retención nos ayudará a limpiar los registros históricos ya no necesarios. Define Retention Policies
Habilitación y configuración del ajuste de costo de productos
Esta configuración siempre es muy discutida, si debemos habilitar o no el proceso automático de costo de productos. Lo que no está en discusión es que se debe mantener al día los costos, ya sea de manera automática, o manual o con un proceso en segundo plano. Siempre se debe mantener los productos actualizados en su costo. Adjust Item Costs

Muchos seleccionarían la opción de «siempre», evitando cualquier acción manual, manteniendo el costo siempre al día en cada movimiento, suena atractivo y funciona muy bien en escenarios de clientes sencillos y no tan complejos. Pero en clientes con gran cantidad de productos, gran cantidad de operaciones, pertenecientes al rubro de fabricación, con productos configurados con seguimiento de lotes o series, reservas y otros factores esta opción para nada es lo más óptimo.
Por lo que seleccionar la opción de «siempre» trae consigo problemas como lo son el rendimiento, los bloqueos, o posibles incidencias con las fechas de registro si es que tenemos un control exigente en los periodos de registros y los cerramos.

El análisis de la ejecución de esta operación de ajuste de costo fuera del horario laboral proviene principalmente por la preocupación y problema de que bloquea muchas tablas. Una frecuencia inicial de ejecución podría ser diaria, con la correspondiente revisión posterior a ver si es necesario incrementar la frecuencia. Podemos llevar a cabo esta labor creando manualmente las colas de proyecto de costeo y registro que se ejecuten en un horario especial. Schedule jobs to adjust and reconcile inventory cost
Habilitación y configuración de vistas de análisis
Las vistas de dimensiones se usan para ayudar a los usuarios a obtener informes detallados sobre las dimensiones, permitiendo establecer múltiples dimensiones para los informes financieros. Analyze Data by Dimensions
Si habilita la opción de «Actualizar al registrar» en una vista de análisis, la vista se actualiza automáticamente cuando se registra una transacción asociada. Agregando más operaciones de escritura a la base de datos luego de cada registro, impactando por consiguiente en el rendimiento. Habilitar esta opción amerita que se haya analizado el impacto de los registros.

Ejecución de procesos largos y exigentes en segundo plano
Es importante analizar también aquellos procesos que podemos trabajar en segundo plano, evitando colapsar, bloquear o reducir el rendimiento mientras los usuarios están trabajando.
Reportes muy largos y exigentes: Si identificamos reportes que podemos planificarlos para ser ejecutados fuera de horario de oficina será lo ideal siempre. Scheduling a report to run later or periodically
Procesos de actualización de datos o sumarización de importes: Cualquier proceso que implique afectar el rendimiento como actualizaciones masivas, cálculos, agrupaciones y otros, se recomienda que sean planificados y ejecutados en segundo plano y en horarios especiales.
Registro de facturas: En lugar de registrar los documentos individualmente si el negocio lo permite una buena práctica sería la de configurar el registro de las facturas en segundo plano evitando la afectación de rendimiento y posibles bloqueos durante el horario laboral. To set up background posting with job queues
Ajuste de costo de productos: Como lo he comentado anteriormente el proceso de ajustar el costo de producto es muy exigente, por lo que si podemos evitar configurarlo de manera automática, lo recomendable es crear una cola de proyecto que se ejecute en un horario especial. Manualmente creamos las colas de proyecto correspondientes al cálculo del costo y al registro contable del mismo. Schedule jobs to adjust and reconcile inventory cost
Habilitación y configuración de colas de proyectos
Hemos mencionado a las colas de proyecto como herramientas poderosas en la ejecución en segundo plano de operaciones exigentes con el fin de no impactar en el rendimiento del uso diario de los usuarios, pero tan importante lo es la hora y frecuencia de ejecución de estas colas. Job Queue
El horario de planificación tiene que ser principalmente en horarios fuera de oficina, fines de semana y otro espacio donde no se tenga mucha presencia de usuarios. La frecuencia de la misma va en sintonía con el tiempo aproximado de ejecución, si se demora muchas horas su ejecución no tendremos forma de ejecutarlo más de 2 veces en las noches por ejemplo. Es aquí donde debemos analizar el diseño del proceso que ejecuta la cola para filtrar o dividir las operaciones.
Operaciones con dimensiones
Una decisión importante y crítica es la selección de las dimensiones y por sobre todo las globales. Se recomienda analizarlo, probarlo y decidirlo adecuadamente para evitar cambiarlas en el futuro.
De requerir cambiar las dimensiones globales contamos con un proceso que permite cambiarlas pero esta operación podría llevar mucho tiempo, afectar el rendimiento y bloquear las tablas durante la actualización. To change global dimensions

Las operaciones de correcciones de dimensiones también podrían ocasionar problemas en el rendimiento, por ejemplo si hablamos de operaciones o documentos con grandes entradas, por lo que se recomienda usar filtros y bloques más pequeños y por sobre todo realizarlo fuera de horario laboral.
También si seleccionamos la opción de «Actualizar Vista de Análisis» durante el proceso de corrección de dimensiones puede impactar el rendimiento tal como lo hemos comentado anteriormente, por lo que se recomienda solo seleccionarla cuando tenemos datos pequeños a actualizar. Troubleshooting and Correcting Dimensions

Operaciones con paquetes de configuración
El uso de paquetes de configuración para importar grandes cantidades de datos puede afectar el rendimiento e impedir que todos los usuarios utilicen Business Central durante el proceso, por lo debemos evitar aplicarlos durante el horario laboral. Apply Company Configuration Packages

Operaciones con las empresas
La cantidad de empresas en un ambiente también podría impactar en el rendimiento y en la capacidad por lo que debemos velar porque existan solo las necesarias. Tener una gran cantidad de empresas impactará en el proceso de actualización, exportación de bases de datos y restauración del ambiente de requerirse.
Copias de empresas: Muchas veces copiamos empresas para probar alguna funcionalidad, o realizar pruebas de concepto, una vez usada debemos borrarla. Además es importante remarcar que las operaciones de copiado o borrado de empresas debemos realizarla fuera del horario de trabajo de los usuarios. Copy a company
Renombre de empresas: La operación de renombrar la empresa ya no es soportada en Saas por lo que debemos usar la opción de «Nombre a mostrar».

Extensiones instaladas y sin usar
Es más habitual de lo que parece pero muchas veces se instalan extensiones desde del Appsource para probar o revisar funcionalidades, y luego no se desinstalan, toda extensión puede impactar en el rendimiento por lo que es conveniente desinstalar una extensión cualquiera que sea que no se utilice.
De igual manera de manera nativa Microsoft instala extensiones que probablemente no usaremos nunca, como las relacionadas a las de migración, o integración con Shopify y otros, por lo que podemos desinstalarlas.

Otros puntos a revisar
Por mencionar otros aspectos a tener en consideración, tenemos:
Número de serie que permitan espacios: Los números de serie pueden causar bloqueos impactando en el rendimiento, se sabe que no todas las operaciones y transacciones requieren una numeración secuencial como las operaciones financieras, por lo que el uso de espacios en una serie mitiga los bloqueos. Gaps in Number Series

Bloqueo de entidades: Bloquear clientes, proveedores, productos y variantes de productos optimizará el rendimiento de los filtros y búsquedas en la generación de documentos por ejemplo.

Filtros de seguridad: Si se configuran filtros de seguridad en una tabla, al establecer la propiedad SecurityFiltering en «Validado» en una instancia de registro de esa tabla provocará una disminución en el rendimiento. Performance impact of security filtering mode

Seguimientos de productos y fechas de vencimiento:
Trabajar con productos que se configuren con un nivel de seguimiento siempre traerá consigo operaciones adicionales a comparación de los productos que no lo tengan, por consiguiente se debe considerar este escenario con este tipo de productos, si se realiza un seguimiento por lote o por serie. Design Details: Reservation, Order Tracking, and Action Messaging

Y si adicionalmente le sumamos que tenemos que realizar un seguimiento utilizando fechas de vencimiento entonces el rendimiento puede verse afectado, tal como lo indica la documentación del campo en la página de configuración siguiente:

Reservas automáticas:
El producto se puede configurar para que se reserve automáticamente provocando un cálculo que puede afectar el rendimiento, la reserva se realiza contra el inventario, órdenes de compra o de producción si es una fábrica. Automatic Reservations

Sería conveniente revisar las implementaciones de nuestros clientes e intentar atender estos puntos para entender y mejorar el rendimiento en el uso de Business Central.
Espero que esta información te ayude.
Checkpoints to mitigate performance issues
Many times I have heard about performance problems in Business Central and at the same time many times implementation problems or misuse of some Business Central tools and functionalities have been identified.
We must pay special attention to the configurations that some entities have, the execution schedule of some procedures or actions that we should avoid doing to a minimum.
I will mention some of them, and if there are any more, I look forward to your comments:
Enabling and configuring change log
Business Central warns us that enabling this functionality will have an impact on performance, so it must be a carefully studied decision to identify the table or tables, field or fields to be audited for each one of them. Auditing Changes in Business Central

Business Central recommends that we do not audit historical or entries tables, as well as avoid tracking all the fields in the table, but rather that we decide which fields we are interested in, since this impacts by increasing the number of times it is written to the database.


Likewise, it is evident that it will also impact the growth of the database, leading to operations such as company copying, database export and environment restoration if required, being affected.
To reduce the number of entries caused by this log we must create retention policies to delete unnecessary data after a certain period of time. In this way we eliminate old information that does not deserve analysis or attention in the present. Define Retention Policies
Enabling and configuring sensitive field monitoring
This functionality allows us to monitor important fields and receive an email notification when its value is changed to add an additional layer of security. Monitor sensitive fields
Enabling it also warns us that it will impact performance, so it is necessary to carefully select the corresponding tables and fields.

In the same way as the previous point, creating retention policies will help us clean up historical records that are no longer necessary. Define Retention Policies
Enabling and configuring item cost adjustment
This configuration is always highly discussed, whether or not we should enable the automatic item costing posting process. What is not in dispute is that costs must be kept up to date, either automatically, or manually or with a background process. Items should always be kept updated in their cost. Adjust Item Costs

Many would select the «always» option, avoiding any manual action, keeping the cost always up to date with each movement, it sounds attractive and works very well in simple and not so complex customer scenarios. But in clients with a large number of items, a large number of operations, belonging to the manufacturing sector, with items configured with lots or series tracking, reserves and other factors, this option is not at all the most optimal.
Therefore, selecting the «always» option brings with it problems such as performance, database locks, or possible incidents with the posting dates if we have strict control over the posting periods and close them.

The analysis of the execution of this cost adjustment operation outside of business hours mainly comes from the concern and problem that it locks many tables. An initial execution frequency could be daily, with the corresponding subsequent review to see if it is necessary to increase the frequency. We can carry out this task by manually creating costing and posting job queues that run at a special time. Schedule jobs to adjust and reconcile inventory cost
Enabling and configuring analysis views
Analysis views are used to help users obtain detailed reports on dimensions, allowing multiple dimensions to be set for financial reporting. Analyze Data by Dimensions
If you enable the «Update on Posting» option on an analysis view, the view automatically refreshes when an associated transaction is posted. Adding more write operations to the database after each posting, consequently impacting performance. Enabling this option requires that the impact of this have been analyzed.

Running long and demanding processes in the background
It is important to also analyze those processes that we can work in the background, avoiding collapsing, locking or reducing performance while users are working.
Very long and demanding reports: If we identify reports that we can plan to be executed out of working hours, this will always be ideal. Scheduling a report to run later or periodically
Data update processes or summarization of amounts: Any process that involves affecting performance such as massive updates, calculations, groupings and others, is recommended to be planned and executed in the background and at special times.
Invoice posting process: Instead of posting documents individually, if the business allows it, a good practice would be to configure the posting of invoices in the background, avoiding the impact on performance and possible blockages during working hours. To set up background posting with job queues
Item cost adjustment process: As I have mentioned previously, the process of adjusting the item cost is very demanding, so if we can avoid configuring it automatically, it is advisable to create jobs queue that run at a special time. We manually create the job queues corresponding to the cost calculation and its posting. Schedule jobs to adjust and reconcile inventory cost
Enabling and configuring job queues
We have mentioned job queues as powerful tools in the background execution of demanding operations in order not to impact the performance of users’ daily use, but the time and frequency of execution of these job queues is just as important. Job Queue
The planning schedule has to be mainly during non-office hours, weekends and other spaces where there is not a lot of user presence. Its frequency is in tune with the approximate execution time, if its execution takes many hours we will not have a way to execute it more than 2 times at night for example. This is where we must analyze the design of the process that executes the job queue to filter or divide the operations.
Operations with dimensions
An important and critical decision is the selection of dimensions and above all global ones. It is recommended to analyze it, test it and decide appropriately to avoid changing them in the future.
If you need to change the global dimensions, we have a process that allows you to change them, but this operation could take a long time, affect performance, and lock the tables during the update. To change global dimensions

Dimension correction operations could also cause performance problems, for example if we are talking about operations or documents with large entries, so it is recommended to use filters and smaller blocks and, above all, do them out of working hours.
Also if we select the «Update Analysis Views» option during the dimension correction process it can impact performance as we have mentioned previously, so it is recommended to only select it when we have small data to update. Troubleshooting and Correcting Dimensions

Operations with configuration packages
Using configuration packages to import large amounts of data can impact performance and prevent all users from using Business Central during the process, so avoid applying them during business hours. Apply Company Configuration Packages

Operations with companies
The number of companies in an environment could also impact performance and capacity, so we must ensure that only the necessary ones exist. Having a large number of companies will impact the process of updating, exporting databases and restoring the environment if required.
Copy of companies: Many times we copy companies to test some functionality, or carry out proofs of concept, once used we must delete it. It is also important to note that company copying or deletion operations must be execute out of working hours. Copy a company
Company renaming: The operation of renaming the company is no longer supported in Saas so we must use the «Display name» option.

Installed and unused extensions
It is more common than it seems, but many times extensions are installed from the Appsource to test or review functionalities, and then they are not uninstalled. Any extension can impact performance, so it is advisable to uninstall any extension that is not used.
Likewise, Microsoft natively installs extensions that we will probably never use, such as those related to migration, or integration with Shopify and others, so we can uninstall them.

Other aspects to check
To mention other aspects to take into consideration, we have:
Serial number that allows gaps: Serial numbers can cause locks impacting performance, it is known that not all operations and transactions require sequential numbering like financial operations, so the use of gaps in a series mitigates locks. Gaps in Number Series

Blocking entities: Blocking customers, vendors, items and item variants will optimize the performance of filters and searches in document data entry for example.

Security Filters: If security filters are configured on a table, setting the SecurityFiltering property to «Validated» on a record instance of that table will cause a decrease in performance. Performance impact of security filtering mode

Item tracking and expiration dates:
Working with items that are configured with a tracking level will always entail additional operations compared to items that do not have it, therefore this scenario must be considered with this type of items, if tracking is carried out by lot or by series. Design Details: Reservation, Order Tracking, and Action Messaging

And if we additionally add that we have to track using expiration dates then performance may be affected, as indicated in the field documentation on the following configuration page:

Automatic reservations:
The item can be configured to be reserved automatically causing a calculation that can affect performance, the reservation is made against inventory, purchase or production orders if it is a factory. Automatic Reservations

It would be advisable to review our customers’ implementations and try to address these points to understand and improve performance in the use of Business Central.
I hope this information helps you.
Más información/ More information
- Auditing Changes in Business Central
- Monitor sensitive fields
- Define Retention Policies
- Adjust Item Costs
- Schedule jobs to adjust and reconcile inventory cost
- Analyze Data by Dimensions
- Job Queue
- To change global dimensions
- Troubleshooting and Correcting Dimensions
- Apply Company Configuration Packages



Deja un comentario