📈 D365 Finance: BPA depende de SQL rowversion para instalarse

Microsoft ha documentado un requisito arquitectónico que puede bloquear la instalación de Business performance analytics (BPA): la característica SQL row version change tracking (preview) debe estar habilitada y ninguna customización, integración ISV o flight del entorno puede desactivarla.

La advertencia se publicó el 24 de septiembre de 2026 en los prerrequisitos oficiales de BPA. No es una casilla más del instalador. BPA depende de la solución de Finance and Operations virtual entities, que a su vez necesita seguimiento incremental basado en rowversion. Si esa cadena está rota, la instalación puede fallar.

Dependencia de BPA respecto a virtual entities y SQL rowversion.

Diagrama original. BPA no consulta una base aislada: su instalación depende de Power Platform, virtual entities y el seguimiento incremental en F&O.

Qué ha cambiado

BPA ya exigía habilitar la clave SQL row version change tracking (preview) desde System administration > Setup > Licensing > License configuration. La novedad es que Microsoft ahora declara expresamente tres consecuencias:

  • BPA depende de esa característica porque utiliza Finance and Operations virtual entities.
  • Si una customización, ISV o flight la deshabilita, la instalación puede fallar.
  • Si un ISV exige mantenerla deshabilitada, hay que contactar con Microsoft antes de instalar BPA.

Esto convierte una comprobación de configuración en un criterio de compatibilidad de solución. Ver la clave marcada no basta: también hay que comprobar que el modelo, las entidades y los componentes ISV toleran el cambio.

Estado de disponibilidad

Conviene separar el estado de cada pieza:

ComponenteEstado documentado
Business performance analyticsDisponibilidad general en regiones públicas admitidas.
SQL row version change trackingSigue etiquetado como preview en la configuración y documentación de BPA.
BPA en FranciaNo disponible actualmente por limitaciones regulatorias.
Idioma inicial de BPASolo inglés en-US; Microsoft prevé añadir idiomas en futuras oleadas.

BPA requiere Dynamics 365 Finance 10.0.45, build de aplicación 10.0.2345.96, o posterior. La documentación también exige un entorno Tier 2/multibox para la evaluación y preparación.

Microsoft no anuncia un nuevo SKU asociado a esta actualización. El usuario instalador necesita una licencia de Dynamics 365 Finance o equivalente, además de los roles administrativos indicados más adelante. La novedad afecta a compatibilidad e instalación, no introduce por sí misma un nuevo modelo de cobro.

Cómo funciona rowversion

Al habilitar la clave en mantenimiento y sincronizar la base de datos, F&O añade un campo de sistema SysRowVersion de tipo SQL Server rowversion a las tablas que tengan Allow Row Version Change Tracking = Yes.

SQL Server mantiene un contador a nivel de base de datos y estampa un valor nuevo cuando una fila se inserta o actualiza. El consumidor conserva un token y solicita únicamente los cambios posteriores. En lugar de releer el conjunto completo, Dataverse puede sincronizar incrementos.

Tabla F&O
  └─ SysRowVersion cambia en INSERT/UPDATE
       └─ Data entity permite change tracking
            └─ Virtual table expone los cambios en Dataverse
                 └─ BPA instala y alimenta su modelo analítico

La tabla AifChangeTrackingDeletedObject registra las eliminaciones. Un batch llamado Delete tracking history clean-up borra por defecto el historial con más de diez días. Por eso, el token de cambio de F&O tiene una ventana predeterminada de diez días, no los 90 días habituales de tablas nativas de Dataverse.

El riesgo oculto: SQL directo en X++

Una columna rowversion es de solo lectura. Código X++ que ejecuta SQL directo y confía en la posición implícita de las columnas puede romper después de habilitar la clave. Microsoft muestra como patrón problemático:

INSERT INTO table2
SELECT * FROM table1

Al aparecer SysRowVersion, el SELECT * puede intentar insertar o actualizar una columna que SQL Server gestiona internamente. El patrón seguro enumera origen y destino:

INSERT INTO table2 (Column1, Column2)
SELECT ColumnA, ColumnB FROM table1

Antes de activar la clave, busca el uso del objeto X++ Statement, executeUpdate, sentencias INSERT ... SELECT * y cualquier acceso SQL directo en modelos propios o paquetes ISV. Si un proveedor depende de deshabilitar rowversion, no fuerces la instalación: Microsoft pide abrir un caso de soporte.

Restricciones de tablas y entidades

La clave global no convierte automáticamente cualquier entidad en compatible. Para participar, las tablas y la data entity deben establecer Allow Row Version Change Tracking = Yes, y el modelo debe superar las validaciones de compilación.

Entre las restricciones más relevantes:

  • no se admiten entidades con una consulta de change tracking personalizada;
  • ExistsJoin y NoExistsJoin no están soportados;
  • un Group By en una fuente de datos no está soportado;
  • no se admiten relaciones uno-a-muchos porque generan identificadores duplicados de virtual table;
  • las vistas y entidades anidadas como data source no están soportadas;
  • rangos sobre campos mutables pueden impedir detectar una eliminación lógica;
  • los joins deben respetar reglas de inmutabilidad y OnDelete;
  • las tablas date effective tienen restricciones por la desaparición temporal de registros;
  • Microsoft recomienda menos de diez data sources por entidad por rendimiento.

Microsoft recomienda crear entidades nuevas para habilitar este mecanismo. En extensiones existentes, algunas incompatibilidades aparecen como warnings para no romper compatibilidad hacia atrás; por tanto, un build verde no sustituye la revisión de warnings.

Preflight antes de instalar BPA

1. Confirmar versión, región y entorno

Registra versión de aplicación y plataforma, región, tipo de entorno y URL del Power Platform environment vinculado. Verifica Finance 10.0.45 o posterior y usa un sandbox Tier 2 representativo.

2. Inventariar customizaciones e ISV

Solicita confirmación a cada ISV de que soporta SysRowVersion y la clave global activada. Revisa flights específicos del entorno y busca código SQL directo. La ausencia de un error conocido no equivale a compatibilidad certificada.

3. Verificar Power Platform y virtual entities

En LCS, confirma que Power Platform environment setup is complete. En PPAC, abre Resources > Dynamics 365 apps, comprueba que Finance and Operations Virtual Entity está instalada y aplica las actualizaciones disponibles antes de BPA.

Si la solución falta, BPA puede mostrar un error similar a:

Unable to establish connection using data source:
'Finance and Operations Virtual Data Source Configuration'
The entity 'mserp_financeandoperationsentity' was not found in MetadataCache.

4. Validar la clave en mantenimiento

Activa maintenance mode desde LCS. En Finance, abre System administration > Setup > Licensing > License configuration y confirma SQL row version change tracking (preview). Revisa también las configuration keys funcionales que BPA enumera para Bank, Electronic banking, Fixed assets, General ledger, Procurement, Project, Service management y Trade.

Al salir de mantenimiento, la sincronización de base de datos añade las columnas necesarias. Reserva una ventana y no lo trates como un cambio instantáneo de interfaz.

5. Revisar Dataverse y TDS

El instalador necesita en Power Platform los roles System Administrator y System Customizer; en Finance, System administrator. La documentación vigente también exige:

  • usuario PowerplatformApp habilitado en Finance;
  • permiso para crear customizaciones no administradas;
  • endpoint Tabular Data Stream (TDS) habilitado;
  • solución de virtual entities actualizada;
  • capacidad y salud correctas del entorno.

Bloquear unmanaged customizations puede impedir que BPA cree informes, prepare la organización y transporte informes personalizados.

Plan de pruebas

No pruebes solo que el instalador termina. Ejecuta una regresión en cuatro capas:

  1. Base de datos y código: sincronización correcta, ausencia de errores SQL, batches y procesos con Statement ejecutados.
  2. Entidades: build sin errores, warnings revisados, virtual tables visibles y change tracking activable.
  3. Integraciones: Synapse Link, archivado, mobile offline, relevance search e ISV que compartan rowversion.
  4. BPA: aplicación instalada, ingestión completada, datos contables reconciliados y actualización incremental verificada.

Incluye al menos una actualización y una eliminación de registro. Espera a que ambos cambios aparezcan en el consumidor y registra token, hora y latencia. Comprueba además que Delete tracking history clean-up se ejecuta y que una caída prolongada no supera la retención de diez días.

Seguridad y operación

La instalación combina privilegios elevados en Finance, LCS y Power Platform. Usa una identidad nominativa o de despliegue controlada, MFA y elevación temporal. Separa aprobación, ejecución y validación, y retira roles adicionales después del cambio.

Documenta como elementos de configuración:

  • estado de la clave SQL rowversion;
  • versión de Finance and Operations Virtual Entity;
  • lista y confirmación de compatibilidad de ISV;
  • endpoint TDS;
  • configuración de unmanaged customizations;
  • frecuencia y último resultado del batch de limpieza;
  • pruebas de reconciliación de BPA.

Después de un restore, actualización o cambio de modelo, vuelve a ejecutar el preflight. La arquitectura depende de una cadena de estados; que BPA funcionara ayer no demuestra que todas las piezas sigan alineadas.

Recomendación práctica

Trata SQL rowversion como una dependencia de plataforma compartida, no como una opción privada de BPA. Antes de la instalación, crea una decisión explícita de compatibilidad firmada por responsables de aplicación, integración e ISV. Si existe SQL directo o un proveedor pide desactivar la clave, detén el despliegue y resuélvelo antes de tocar producción.

El hallazgo importante es la asimetría: un producto GA depende de una capacidad todavía marcada como preview. No invalida BPA, pero eleva el nivel de pruebas y obliga a gobernar rowversion como parte de la arquitectura del entorno.

Referencias