Saltar al contenido
Agents Finance
TutorialEvidencia: Experiencia propia

Tutorial: activos fijos en Business Central con Claude Code y MCP, de un CSV a asientos que registra una persona

Resumen: Silviu Virlan, consultor de Business Central y ex Microsoft MVP, enseña cómo Claude Code, conectado a Business Central por MCP y OData V4, convierte un CSV de activos en libros de amortización y diarios en borrador que una persona revisa y registra. Lo hizo en la empresa de demostración: método reproducible, no resultado medido.

Publicada el 14 min de lectura2967 palabras

Diagrama en cinco pasos: CSV de activos, Claude con MCP prepara libros y diarios, una persona revisa y registra, Business Central amortiza y Claude comprueba los valores netos.
Diagrama propio del flujo publicado por Silviu Virlan.Imagen: Agents Finance · Elaboración propia

De qué trata

Un consultor de Business Central conectó Claude Code a un entorno de Business Central por MCP y documentó paso a paso cómo llevar el ciclo del inmovilizado a partir de un CSV. Claude lee el archivo, asigna los libros de amortización, prepara en borrador las líneas de alta y de baja del diario general de activos fijos mediante servicios web OData V4 y lee después los resultados. Business Central calcula la amortización y el resultado de las bajas, y una persona revisa y registra cada diario desde la interfaz.

Qué aporta, según la fuente

Según el autor, en una empresa de demostración: nueve activos con un coste total de 363.500 recibieron libro de amortización y asiento de alta desde un solo CSV, la amortización se calculó hasta el 5 de febrero de 2026 (152.468, el 41,9 % del coste) y se prepararon dos bajas, sin una sola línea nueva de código AL y con unas cuatro o cinco horas de prompts y resolución de errores. Él estima que se puede automatizar alrededor del 70 % del flujo. No hay empresa real, ni medición de tiempo frente al proceso manual, ni auditoría. El ejemplo de bajas del artículo calcula ganancias y pérdidas contra el coste y no contra el valor neto contable, así que conviene revisarlo.

Ojo con la evidencia. Alguien cuenta cómo lo hace o lo ha hecho, sin cifras contrastables. Es práctica documentada, no una prueba de que funcione en tu caso.

Qué se ha probado de verdad

El 19 de octubre de 2026 leímos el tutorial, la entrada anterior del autor sobre la configuración y su página About, la documentación de Microsoft sobre la configuración del servidor MCP de Business Central y sobre las bajas de activos, y el código fuente del cálculo de bajas de Business Central en el repositorio BCApps de Microsoft. Recalculamos las cifras del artículo. No hemos conectado Claude a ningún entorno de Business Central, no hemos ejecutado las llamadas ni hemos visto el código del servidor MCP del autor, que no ha publicado. El prompt inicial y la lista de comprobación son nuestros.

Cómo seguirlo

Usa un sandbox o una copia de la empresa, nunca producción, y un registro de aplicación con el conjunto de permisos más restringido que funcione. Empieza con tres o cuatro activos que ya conozcas, compara cada línea con lo que habrías tecleado a mano, registra siempre desde la interfaz de Business Central y deja la amortización al proceso Calcular amortización. Antes de registrar una baja, recalcula el resultado esperado a partir del valor neto contable.

  1. Conecta Claude Code a un sandbox de Business Central por MCP: registra una aplicación en Microsoft Entra con permisos de aplicación, dala de alta en Business Central con un conjunto de permisos y usa un servidor MCP que pueda llamar tanto a la API estándar como a los servicios web OData V4.
  2. Publica tres servicios web OData V4 en Business Central: la página 5619 (libros de amortización de activos) como FADepBooks, la consulta 123 (análisis de activos fijos) como FAAnalysis y la página 5611 (ficha de libro de amortización) como DepBooks. El endpoint workflowGenJournalLines ya está disponible.
  3. Prepara un CSV con una fila por activo: número, descripción, clase o grupo contable, tipo de movimiento, importe, fecha de registro, método de amortización, años y fecha hasta la que amortizar.
  4. Pide a Claude que asigne a cada activo su libro de amortización en tres llamadas (crear el registro con las claves, fijar la fecha de inicio de la amortización y después el grupo contable y los años), porque Business Central valida los campos en ese orden.
  5. Pide a Claude una línea de alta por activo en el diario general de activos fijos mediante workflowGenJournalLines, con tipo de registro A/F, libro de amortización, tipo de documento y cuenta de contrapartida; después una persona revisa el lote y lo registra en Business Central.
  6. Ejecuta tú el proceso Calcular amortización en Business Central y registra el diario resultante; no dejes que la IA calcule importes de amortización.
  7. Para las ventas, pide a Claude líneas de baja (tipo Disposal, importe de la venta en negativo), comprueba el resultado esperado contra el valor neto contable, regístralas tú y pide a Claude que lea FAAnalysis para informar de valores netos y resultados.

En dos frases

Silviu Virlan, desarrollador y consultor de Business Central, conectó Claude Code a Dynamics 365 Business Central por MCP y publicó el camino completo desde un CSV de activos fijos hasta las altas, la amortización y las bajas registradas, incluidas todas las llamadas a la API que fallaron por el camino. Claude prepara los datos y los diarios en borrador, Business Central hace los cálculos de amortización y de resultado, y una persona registra cada asiento.

Quién lo hace y qué nivel de evidencia tiene

El tutorial se publicó el 10 de febrero de 2026 en Business Central Musings, el blog que Virlan mantiene desde 2016. En su página About cuenta que lleva más de doce años trabajando solo con Dynamics NAV y Business Central, sobre todo como desarrollador y consultor, que Microsoft le concedió el premio MVP algunas veces y que escribe libros sobre el producto. Su empresa, SVirlan.com LLC, con el nombre comercial SureHoofERP, es partner registrado de Microsoft. Una semana antes había publicado una entrada más corta sobre cómo conectó Claude a Business Central en un fin de semana.

Tres cosas fijan el nivel de evidencia:

  • Se hizo en la empresa de demostración de Microsoft. Las llamadas van a CRONUS USA, Inc., la empresa de ejemplo que trae Business Central, y los nueve activos (tres vehículos y seis equipos de transporte y almacén) tienen toda la pinta de ser datos de demo. Nada sale del registro de inmovilizado de una empresa real.
  • Las cifras describen la demo, no un ahorro. El autor da los importes registrados, el esfuerzo que le costó dar con el método (unas cuatro o cinco horas de prompts, lectura de respuestas de la API y corrección de fallos) y su propia estimación de que alrededor del 70 % del flujo es automatizable. Nadie lo ha cronometrado frente al alta manual.
  • Vende consultoría de Business Central. El artículo termina ofreciendo sus servicios. No invalida el método, pero conviene saberlo.

Por qué merece la pena: es de los pocos textos públicos que van más allá de «preguntar al ERP» y explican cómo escribir datos contables en él a través de MCP, con franqueza sobre lo que la API estándar no permite y por qué el registro sigue en manos de una persona. Una respuesta en r/Accounting de junio de 2026, de alguien que pasó de QuickBooks Online a Business Central y creó extensiones con Claude Code, apunta a que hay profesionales probando la misma combinación.

El problema que resuelve

El inmovilizado es una tarea clásica del cierre. Cada activo nuevo necesita su ficha, su libro de amortización (método, fecha de inicio, vida útil, grupo contable) y su asiento de alta; cada mes o cada año, la amortización; y cada venta, una baja que deje el activo a cero y registre el beneficio o la pérdida. En Business Central eso supone varias pantallas por activo. Treinta altas tras un proyecto de inversión o veinte bajas a cierre son sobre todo teclear, y al teclear se cuelan errores. El tutorial se pregunta si eso puede salir de una hoja de cálculo y unas frases, sin código a medida.

Herramientas y arquitectura

  • Claude Code, el agente de línea de comandos de Anthropic, conectado a Business Central mediante un servidor MCP.
  • Un servidor MCP en Python escrito por el autor. Según su entrada sobre la configuración, traduce las llamadas de la IA a peticiones a la API de Business Central, guarda en caché los tokens OAuth, busca los identificadores de empresa y construye las consultas OData. Expone herramientas como bc_list_fixed_assets, bc_list_companies y bc_query. No ha publicado el código.
  • Business Central online, con una aplicación registrada en Microsoft Entra ID con permisos de aplicación (advierte que los delegados no le funcionaron), API.ReadWrite.All y Automation.ReadWrite.All, consentimiento de administrador y la aplicación dada de alta en Business Central con un conjunto de permisos. Para las pruebas usó uno de acceso total.
  • Cuatro endpoints OData V4. Aquí está el hallazgo clave. La API estándar v2.0 ofrece los datos maestros de los activos, pero su endpoint journalLines no tiene campo para el tipo de registro de activo fijo ni para el libro de amortización, así que un alta enviada por ahí falla con el error «FA Posting Type must not be blank». El endpoint OData V4 integrado workflowGenJournalLines expone la línea de diario general completa, con esos campos. Además publicó como servicios web la página 5619 de libros de amortización de activos (FADepBooks, lectura y escritura), la consulta 123 de análisis de activos fijos (FAAnalysis, solo lectura, movimientos con datos de amortización) y la página 5611, ficha del libro de amortización (DepBooks, solo lectura).

Cómo encaja con el servidor MCP oficial: la documentación de Microsoft, consultada el 19 de octubre de 2026, describe un servidor MCP de Business Central para entornos online que expone como herramientas páginas API, consultas API y codeunits API, con una página donde el administrador decide, objeto por objeto, si los agentes pueden leer, crear, modificar, borrar o ejecutar acciones, más un interruptor Unblock Edit Tools y consultas de datos de solo lectura en versión preliminar. Los servicios web OData V4 en los que se apoya este tutorial no son páginas API; por eso importa el servidor propio del autor. No hemos comprobado si el servidor de Microsoft llega a ellos.

Tabla con los nueve pasos: la persona prepara el CSV, revisa y registra las altas, ejecuta y registra la amortización y registra las bajas; Claude asigna libros de amortización, crea las líneas de alta y de baja y lee los valores finales; una nota recuerda que el resultado se calcula contra el valor neto contable.
Quién hace qué, según el flujo publicado por Silviu Virlan; la nota de control es nuestra · Agents Finance, elaboración propia

Paso a paso

Resumimos los pasos con nuestras palabras. Trabaja siempre en un sandbox.

1. Conectar y publicar los servicios web

Registra la aplicación en Entra, dale los permisos de API y el consentimiento de administrador, añádela en la página de aplicaciones de Microsoft Entra de Business Central con un conjunto de permisos y conecta tu servidor MCP. Después abre Servicios web y publica la página 5619 como FADepBooks, la consulta 123 como FAAnalysis y la página 5611 como DepBooks. La dirección OData V4 sigue el patrón /v2.0/{tenant}/{entorno}/ODataV4/Company('{empresa}')/{servicio}. Según el autor, la consulta 123 se añadió hace relativamente poco a la aplicación base: comprueba que tu versión la tiene.

2. Preparar el CSV

Una fila por activo con número, descripción, clase o grupo contable (VEHICLES, EQUIPMENT), tipo de movimiento, importe, fecha de registro, método de amortización, número de años y fecha hasta la que amortizar. En la demo, los nueve activos se compraron el 1 de enero de 2024, con amortización lineal a cinco años y 363.500 de coste total. El artículo no crea fichas de activo: los números y nombres coinciden con activos que parecen existir ya en la empresa de demostración. En tu empresa, crea antes las fichas o añade ese paso.

3. Que Claude asigne los libros de amortización

Para cada activo Claude hizo tres llamadas a FADepBooks: crear el registro solo con las claves (número de activo y libro COMPANY), fijar la fecha de inicio de la amortización y, por último, el grupo contable y el número de años. Una única llamada con todos los campos falla, porque Business Central valida los campos en orden y rechaza los años mientras la fecha de inicio está vacía. La fecha final (31 de diciembre de 2028) la rellenó Business Central.

4. Que Claude prepare las líneas de alta

Una línea por activo en el diario general de activos fijos (plantilla ASSETS, sección DEFAULT) mediante workflowGenJournalLines, con tipo de cuenta Fixed Asset, tipo de registro Acquisition Cost, libro COMPANY, número de documento, fechas de registro, importe y cuenta contable de contrapartida. El autor comprobó que las líneas sin tipo de documento (usó Invoice) o sin contrapartida no se podían registrar, y que Claude dedujo la cuenta de contrapartida leyendo movimientos contables anteriores de activos fijos.

5. Registrar tú las altas

El endpoint OData no ofrece una acción de Registrar para este diario, así que abres el diario general de activos fijos, revisas las nueve líneas y registras. El autor lo ve como una red de seguridad, y estamos de acuerdo.

6. Que Business Central calcule la amortización

Ejecuta Calcular amortización para el libro, con la fecha de registro y el número de documento que quieras y la contrapartida por grupo contable, y registra el diario. El autor probó antes a que Claude la calculara con una fórmula por días, y los importes no coincidían con los de Business Central, que aplica su propio redondeo y sus periodos contables. Su conclusión, que compartimos: nunca dejes que la IA calcule una amortización que el ERP ya calcula.

7. Preparar las bajas, comprobar, registrar y verificar

Para una venta, Claude prepara una línea con tipo de registro Disposal (el valor de la API; el mensaje de error lista las opciones válidas, y Proceeds on Disposal, la etiqueta que él esperaba, no es una de ellas), el importe de la venta en negativo y el banco como contrapartida. Tú la registras y Business Central calcula el resultado y deja el activo a cero. Al final Claude lee FAAnalysis e informa del coste, la amortización acumulada y el valor neto de cada activo.

Un prompt inicial (nuestro, no del autor)

Trabajas en la empresa SANDBOX {{EMPRESA}} de Business Central a través de MCP.
Lee {{ARCHIVO_CSV}}. No registres nada ni invoques ninguna acción de registro.

1. Enumera todos los activos del archivo y confirma que existe su ficha. Para y
   pregunta si falta alguna ficha o si alguna fila tiene vacía la fecha, el
   importe o el grupo contable.
2. Para cada activo, crea el libro de amortización {{LIBRO_AMORTIZACION}} en tres
   llamadas (claves, después fecha de inicio, después grupo contable y años).
   Enséñame una tabla con lo que has creado.
3. Crea una línea de alta por activo en la plantilla {{PLANTILLA}}, sección
   {{SECCION}}, con la cuenta de contrapartida {{CUENTA_CONTRAPARTIDA}}. Usa los
   números de documento {{PREFIJO_DOC}}-001 en adelante.
4. Dame un total de control: número de líneas e importe total, comparados con el
   CSV. Después para. El diario lo registraré yo.
No calcules nunca la amortización. No cambies datos maestros que no estén en el CSV.

Un ejemplo concreto y una cifra que hay que revisar

En la demo, tras amortizar hasta el 5 de febrero de 2026, los nueve activos sumaban 152.468 de amortización acumulada y 211.032 de valor neto, el 41,9 % del coste, coherente con unos dos años y un mes de una amortización lineal a cinco años. Después el autor vendió el cuadro eléctrico (coste 8.500) por 5.000 y el ordenador de la cinta transportadora (coste 15.000) por 18.000.

Su tabla de resultados esperados muestra una pérdida de 3.500 y una ganancia de 3.000, es decir, precio de venta contra coste. Pero su propio informe, unas líneas antes, da valores netos de 4.935 y 8.708. El código de bajas de Business Central, publicado por Microsoft, calcula el resultado como valor neto contable más el importe de la venta (que se registra en negativo). La amortización y las bajas tienen la misma fecha, 5 de febrero de 2026, así que, según nuestros cálculos, lo esperable serían ganancias de unos 65 y 9.292, no una pérdida de 3.500 y una ganancia de 3.000. No podemos saber qué se registró realmente, porque el listado de bajas no muestra la amortización. La lección importa más que la discrepancia: recalcula cada resultado esperado a partir del valor neto contable antes de registrar y trata la explicación de la IA como una afirmación que hay que comprobar. Microsoft recuerda además que la baja debe ser el último movimiento registrado de un activo y que una baja parcial exige dividir antes el activo.

Resultados declarados

  • Nueve activos y 363.500 de coste: libros de amortización y líneas de alta creados desde un CSV y una instrucción breve.
  • Amortización calculada y registrada por Business Central: 152.468 hasta el 5 de febrero de 2026.
  • Dos bajas preparadas por Claude y registradas por una persona.
  • Ninguna línea nueva de código AL, cuatro endpoints, unas cuatro o cinco horas para resolverlo todo y, según su estimación, alrededor del 70 % de los pasos automatizables, con cuatro puntos de revisión humana (todos los registros).

Todo en una empresa de demostración. No hay cifra de ahorro de tiempo sobre un registro de inmovilizado real.

Limitaciones y riesgos

  • Al principio, solo en sandbox. Un conjunto de permisos de acceso total y una aplicación con permisos de escritura valen para una demo, no para producción. Da a la aplicación el conjunto más restringido que funcione y deja los permisos de registro a las personas.
  • El servidor de Microsoft puede registrar documentos si se lo permites. Su documentación incluye ejecutar acciones OData «como registrar documentos» entre lo que pueden hacer los agentes cuando las acciones están permitidas. Si usas el servidor oficial, decide con cuidado qué objetos llevan Allow Actions; en este tutorial el registro es manual por diseño.
  • Código del servidor sin publicar. El servidor MCP del autor no es público. Uses el que uses, registra cada llamada y mantén el lote del diario como punto de revisión.
  • Normas de cada país. La demo es una empresa estadounidense con amortización lineal. Las vidas útiles, los métodos y la diferencia entre amortización contable y fiscal dependen de tu país y de tu política. En España, por ejemplo, la amortización fiscal se rige por las tablas del Impuesto sobre Sociedades y el inmovilizado tiene su propia nota en la memoria de las cuentas anuales. La IA no decide nada de eso.
  • Las cifras de la propia demo hay que revisarlas, como muestran las bajas.

Errores comunes

  1. Usar la API estándar journalLines para activos: sin tipo de registro A/F, falla.
  2. Enviar todos los campos del libro en una sola llamada: Business Central valida en orden y la rechaza.
  3. Omitir el tipo de documento o la contrapartida: las líneas no se registran.
  4. Usar las etiquetas de la interfaz como valores de la API: el tipo es Disposal, no Proceeds on Disposal.
  5. Dejar que la IA calcule la amortización: el redondeo y los periodos no cuadrarán.
  6. Calcular el resultado de una baja contra el coste en lugar de contra el valor neto contable.

Conclusiones

Es un patrón modesto y útil: la IA teclea entre la hoja de cálculo y el ERP, el ERP hace la aritmética contable y una persona registra. Su valor está en las trampas que un consultor experimentado encontró y resolvió; su punto débil, el ejemplo de las bajas, recuerda por qué la revisión humana se queda. Pruébalo en un sandbox con pocos activos conocidos y compara cada línea antes de registrar.

Fuentes

Hemos redactado esta ficha con nuestras palabras a partir de las fuentes anteriores y comprobamos que los enlaces funcionaban el 19 de octubre de 2026. ¿Algún dato es incorrecto? Avísanos.

Entradas relacionadas

  • NovedadEvidencia: Anuncio

    Dynamics 365 Finance: el agente de conciliación de cuentas sugiere cómo resolver las excepciones

    El agente de conciliación de cuentas de Dynamics 365 Finance compara los subsidiarios con el libro mayor, detecta las diferencias y propone qué hacer con cada una, con justificación. Microsoft lo mantiene en vista previa desde abril de 2025 y su plan de lanzamiento de 2026 prevé disponibilidad general en septiembre de 2026, sin que hayamos podido confirmar que ya se haya producido.

    Recomendada por la redacción

  • Diagrama: las facturas y los datos del banco van a Claude Code, que trabaja mediante un servidor MCP de más de 40 herramientas sobre Odoo 19 Community; un aviso indica que es el relato del autor, sin ahorros medidos.
    Caso de usoEvidencia: Experiencia propia

    Un emprendedor español sustituye Holded por Odoo 19 Community, un servidor MCP propio y Claude Code, y cierra ahí el tercer trimestre

    Juanca (Juan Carlos) Hurtado, para su propia empresa en EspañaPersona · Agencia de IA y productos digitales (España)

    Juanca Hurtado, que dirige una agencia de IA en España, pasó la contabilidad de su empresa de Holded a un Odoo 19 Community propio que maneja con Claude Code mediante un servidor MCP de más de 40 herramientas, y cerró ahí el 3T de 2026 con un agente auditor y 189 apuntes del banco revisados. Relato propio en X, sin ahorros medidos; también vende formación en Claude Code.

    Recomendada por la redacción

    • Odoo 19 Community con PostgreSQL, en Docker (instalación propia)
    • Servidor MCP propio en Python con más de 40 herramientas (registrar, conciliar, emitir, preguntar)
    • Claude Code (para construir el sistema y para manejarlo)
    • +4
    • Odoo
    • Holded
    • Contabilidad

  • Recurso comunitarioEvidencia: Documentación del proyecto

    Servidor MCP de código abierto para conectar asistentes de IA a Odoo: lectura, agregaciones y, si se activa, escritura

    ivnvxd y colaboradores del proyecto en GitHubPersona

    Proyecto comunitario en GitHub (licencia MPL-2.0, más de 400 estrellas, última versión publicada el 10 de octubre de 2026) que permite a Claude y otros asistentes consultar y modificar datos de una instancia de Odoo: facturas, clientes, productos y agregaciones. Tiene un modo de pruebas sin módulo y un módulo para producción.

    Recomendada por la redacción

    • Servidor MCP en Python (se lanza con uvx)
    • Odoo 16 o superior (módulo MCP para producción; modo de pruebas con XML-RPC)
    • Claude Desktop, Claude Code, Cursor u otro cliente MCP
    • Odoo
    • Contabilidad
    • Reporting

  • Diagrama: los datos de NetSuite alimentan una skill de Claude con fuentes, formato, cuadres y reglas de parada, que genera un papel de trabajo cuadrado con el mayor a 0,00 $ para que lo apruebe el controller.
    Caso de usoEvidencia: Caso real

    Un controller con NetSuite creó unas 50 skills de Claude para el cierre mensual: lo difícil fue enseñarles qué es un error

    Steve Kelly (Books & Bots Advisory)Persona · Empresa mediana (sin identificar; el artículo menciona pedidos de venta, envíos, anticipos de clientes y ventas por canal)

    Steve Kelly, controller financiero con 21 años de experiencia, cuenta que prepara buena parte del cierre mensual en NetSuite con unas 50 skills de Claude (conciliaciones, periodificaciones, reporting, previsión de caja a 13 semanas) y ahorra 20 a 30 horas al mes. Testimonio de primera mano, no auditado, de quien ahora vende servicios de cierre; contrastado con la guía de un CFO y la documentación de Oracle.

    Recomendada por la redacción

    • Oracle NetSuite (informes estándar, búsquedas guardadas y consultas SuiteQL como fuentes de datos)
    • Claude y Claude Cowork
    • Unas 50 skills de Claude: procedimientos escritos para cada proceso del cierre
    • +2
    • Oracle NetSuite
    • Contabilidad
    • Tesorería
    • Reporting

Seguir explorando