Para cubrir el echo de que: con las configuraciones y instalaciones estándard de Business central, sólo podemos mapear los campos estándard de ambas paltaformas, los campos personalizados en CRM Sale, NO.
Agregar mapeo de tablas y campos a las tablas de integración:
Valor para el negocio:
Las necesidades del negocio cambian y también lo hacen los procesos empresariales. Los cambios en los procesos empresariales requieren que el intercambio de datos a través de integraciones con Business Central se implemente de manera rápida y rentable.
Las aplicaciones empresariales a menudo utilizan datos de más de una fuente. Dataverse combina datos en un solo conjunto de lógica que facilita la conexión de Business Central con otras aplicaciones de Dynamics 365. Por ejemplo, Dynamics 365 Sales o su propia aplicación construida sobre Dataverse. Para aprender más sobre Dataverse, visita ¿Qué es Dataverse?
Se crea este pequeño manual para la configuración de un mapeo de: campos personalizados que se han creado en CRM Sales contra los campos estándar de Business Central .
Hago un breve introducción para llegar al objetivo mencionado en la introducción, por si hay alguién nuevo en esta problematica:
Para el mapeo de ambas plataformar, se suelen usar la tabla de integración, esta se hace visible después de configurar los siguientes elementos:
- Configuración de la conexión de Dataverse
- Configuración de integración de Dynamics 365 Sales
En esta tabla que se encuentra buscando por «Lista de asignaciones de tablas de integración», encontramos esta tabla:

Donde se visualizan, todos las tablas mapeadas a traves de dataverse con CRM Sales, entonces una vez aquí para acceder al mapeo de campos, podemos hacerlo de la siguiente manera:

Mapeo de campos de integración con CRM Sales.

Dónde CIF/NIF, es de númeración 50100, campo no estándard en CRM Sales.
Entonces a continuación os muestro cómo extender, el campo NIF no estándar creado en CRM Sales, para mapearlo contra el estándar de Business Central CIF/NIF, en inglés «VAT Registration No.».
Extender la Lista de Cuentas de CRM (Page)
A continuación se muestra cómo extender la lista de cuentas de CRM para incluir el campo NIF:
pageextension 50142 "EXT CRM Account List" extends "CRM Account List"
{
layout
{
addbefore(Coupled)
{
field(TKA_RegistrationNumber; Rec.cifnif)
{
ToolTip = 'Specifies data from a corresponding field in a Dataverse entity. For more information about Dataverse, see Dataverse Help Center.';
ApplicationArea = All;
}
}
}
}
Extender la Tabla de Cuentas de CRM (Table)
Este fragmento de código muestra cómo extender la tabla de cuentas de CRM para incluir el campo NIF:
Muy importante, resaltar que debe de ser el mismo nombre de la etiqueta que sale en Power Platform, Datavers o Admin Power Platform, de lo contrario no funcionará.
tableextension 50142 "EXT CRM Account" extends "CRM Account"
{
fields
{
field(50100; cifnif; Text[20])
{
ExternalName = 'cifnif';
ExternalType = 'String';
Description = '';
CaptionML = ENU = 'Vat Registration No.', ESP = 'CIF/NIF';
DataClassification = CustomerContent;
}
}
}
Integración y Mapeo de Campos (Codeunit)
El siguiente código muestra cómo crear una unidad de código para manejar la integración y el mapeo de campos:
namespace SyncCustomeField.SyncCustomeField;
USING Microsoft.sales.Customer;
using Microsoft.CRM;
using Microsoft.CRM.Interaction;
USING Microsoft.CRM.Campaign;
using Microsoft;
using Microsoft.Integration.Dataverse;
using Microsoft.Integration.SyncEngine;
using Microsoft.Integration.D365Sales;
using Microsoft.Purchases.Vendor;
codeunit 50102 "BCCRM INTEGRATIONS"
{
SingleInstance = true;
var
IntegrationFieldMapping: Record Microsoft.Integration.SyncEngine."Integration Field Mapping";
[EventSubscriber(ObjectType::Codeunit, Codeunit::Microsoft.Integration.Dataverse."CDS Setup Defaults", OnAfterResetCustomerAccountMapping, '', false, false)]
local procedure OnAfterResetCustomerAccountMappingCDSSetupDefaults(IntegrationTableMappingName: Code[20])
var
Customer: Record Customer;
CRMAccount: Record Microsoft.Integration.D365Sales."CRM Account";
begin
IntegrationFieldMapping.CreateRecord(
IntegrationTableMappingName, Customer.FieldNo("VAT Registration No."), CRMAccount.FieldNo(ize_nif),
IntegrationFieldMapping.Direction::ToIntegrationTable, '', true, false
);
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"CDS Setup Defaults", OnAfterResetVendorAccountMapping, '', false, false)]
local procedure OnAfterResetVendorAccountMappingCDSSetupDefaults(IntegrationTableMappingName: Code[20])
var
Vendor: Record Vendor;
CRMAccount: Record "CRM Account";
begin
IntegrationFieldMapping.CreateRecord(
IntegrationTableMappingName, Vendor.FieldNo("VAT Registration No."), CRMAccount.FieldNo(ize_nif),
IntegrationFieldMapping.Direction::ToIntegrationTable, '', true, false
);
end;
}
Y eso esto, ahora te puedes marcar un «Ya estaría» 😀