Conexión Fuente Microsoft Dynamics 365
Requisitos Previos
Antes de configurar la conexión de origen Dynamics 365 en Crestone, asegúrese de contar con lo siguiente:
Requisito Principal: Un entorno activo de Microsoft Dynamics 365 (Sales, Customer Service, Field Service o cualquier aplicación basada en modelos) con un registro de aplicación en Azure AD que cuente con acceso a la API. Crestone se conecta mediante la API web de Dynamics 365 (OData v4) utilizando el flujo OAuth 2.0 client credentials — no se requiere inicio de sesión de usuario interactivo.
Nota: Crestone utiliza la API web de Dynamics 365 sobre HTTPS. No se requiere controlador de base de datos, ODBC ni una puerta de enlace (gateway) local.
Registro de Aplicación en Azure AD
Necesita un registro de aplicación en Azure Active Directory con un secreto de cliente. Si aún no dispone de uno, siga estos pasos:
- Vaya a portal.azure.com → Azure Active Directory → App registrations → New registration.
- Asígnele un nombre (ej.
Crestone Integration) y haga clic en Register. - En Certificates & secrets → Client secrets, haga clic en New client secret. Copie el valor inmediatamente — no se volverá a mostrar.
- En API permissions, haga clic en Add a permission → Dynamics CRM → Delegated permissions → seleccione
user_impersonation. Luego haga clic en Grant admin consent. - Copie el Application (client) ID y el Directory (tenant) ID desde la página de Overview de la aplicación.
Información Requerida:
| Campo | Descripción |
|---|---|
| Organization URL | URL base de su entorno Dynamics 365 (ej. https://orgXXXXXX.crm.dynamics.com) |
| Tenant ID | ID de directorio (inquilino / tenant) de Azure AD (GUID) |
| Client ID | ID de aplicación (cliente) de Azure AD (GUID) |
| Client Secret | Valor del secreto generado en el registro de la aplicación |
Consejo: La Organization URL se encuentra en la aplicación Dynamics 365 en Settings → Developer Resources → Web API.
Usuario de Aplicación en Power Platform
El registro de la aplicación de Azure también debe agregarse como un Application User en el entorno de Power Platform. Sin este paso, la conexión fallará con 0x80072560 - The user is not a member of the organization.
- Vaya a admin.powerplatform.microsoft.com.
- Seleccione su entorno → Settings → Users + permissions → Application users.
- Haga clic en New app user → seleccione el registro de aplicación creado → asigne el rol de seguridad System Administrator (o un rol personalizado de solo lectura).
- Haga clic en Create.
Paso de Pre-Verificación
Antes de configurar la conexión en Crestone, recomendamos verificar el acceso directamente contra la API web de Dynamics 365. Puede utilizar Postman o curl:
1. Adquirir un token:
POST https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id={client_id}
&client_secret={client_secret}
&scope=https://{org}.crm.dynamics.com/.default2. Llamar a la API:
GET https://{org}.crm.dynamics.com/api/data/v9.2/accounts?$top=5
Authorization: Bearer {access_token}
OData-Version: 4.0
Accept: application/jsonUna respuesta 200 OK con un arreglo value confirma que las credenciales son válidas y que el usuario de la aplicación está correctamente configurado.
Pasos de Configuración
Siga estos pasos para crear una nueva conexión de origen Dynamics 365 en Crestone:
- Navegue a Connections en la barra de navegación superior.
- Seleccione la pestaña Source.
- Haga clic en el botón + para crear una nueva conexión.
- Complete el campo Connection Name con un nombre descriptivo (ej.
Dynamics 365 Sales). - En el menú desplegable Source Type, seleccione Microsoft Dynamics 365.
- Complete el formulario de credenciales:
- Organization URL — ej.
https://orgXXXXXX.crm.dynamics.com - Tenant ID — GUID del directorio de Azure AD
- Client ID — GUID de la aplicación de Azure AD
- Client Secret — valor del secreto de la aplicación
- Organization URL — ej.
- Haga clic en Test Connection para validar que Crestone pueda autenticarse y conectarse a la API de Dynamics.
- Una vez superada la prueba, haga clic en Create Source para guardar la conexión.
Edición de una Conexión Existente
Para actualizar las credenciales de una conexión de origen Dynamics 365 existente:
- Navegue a Connections y localice su origen Dynamics 365.
- Haga clic en Edit.
- Modifique los campos deseados en el formulario de credenciales.
- Haga clic en Test Connection para verificar las nuevas credenciales.
- Haga clic en Confirm para guardar los cambios.
Uso de Dynamics 365 como Fuente en un Nodo de Extracción
Una vez creada la conexión, puede utilizarla como origen de un Extraction Node. Dynamics 365 utiliza un modelo basado en entidades — no hay esquemas ni tablas. Cada entidad (ej. account, contact, opportunity) se asigna a un conjunto de registros.
- Abra o cree un Extraction Node y diríjase a la pestaña Source.
- En Select Source, elija su conexión Dynamics 365.
- En Select Entity, elija la entidad a extraer (ej.
Account,Contact). La lista muestra todas las entidades habilitadas para Búsqueda Avanzada (Advanced Find) en su entorno. - En Select Fields, seleccione las columnas específicas que desea, o déjelo vacío para extraer todos los campos seleccionables.
- Opcionalmente, agregue un Filtro OData para restringir los registros (ej.
statecode eq 0para obtener solo registros activos). - El panel de Preview muestra una muestra de los datos que se extraerán.
Nota: Los campos de tipo
Lookup,Owner,Customer,PartyList,VirtualyCalendarRulesse excluyen automáticamente de la lista de campos. Estas son propiedades de navegación/complejas que no se pueden usar en consultas$selecty causarían errores de API si se incluyeran. Si necesita datos de entidades relacionadas (por ejemplo, el nombre del usuario propietario), utilice una expresión$expandde OData o una extracción de entidad independiente.
Manejo de Tipos de Datos
Cuando Crestone lee datos de Dynamics 365, los tipos de atributos se devuelven como primitivas de OData. La asignación a los tipos de destino es:
| Tipo de Atributo Dynamics 365 | Tipo OData / Python | Notas |
|---|---|---|
String, Memo | str | Campos de texto y texto multilínea |
Integer, BigInt | int | Números enteros |
Decimal, Money, Double | float | Campos numéricos con decimales |
Boolean | bool | Campos de dos opciones |
DateTime | str (ISO 8601) | Devuelto como 2026-06-13T18:54:11Z |
Picklist, State, Status | int | Valores de conjuntos de opciones (códigos numéricos) |
UniqueIdentifier | str | GUIDs (ej. campos de clave primaria) |
EntityName | str | Nombre lógico de la entidad |
Lookup (excluido) | — | Propiedad de navegación; no seleccionable |
Owner (excluido) | — | Propiedad de navegación; no seleccionable |
Virtual (excluido) | — | Calculado; no seleccionable |
Nota: Los campos Picklist, State y Status devuelven el código de opción numérico, no la etiqueta de visualización. Para obtener la etiqueta, se requeriría una búsqueda independiente en los metadatos de la entidad.
Problemas Frecuentes
| Problema | Causa Posible | Solución |
|---|---|---|
Authorization header missing | JWT no enviado en la solicitud | Asegúrese de que el encabezado Authorization: Bearer <token> se incluya en cada solicitud |
0x80072560 - The user is not a member of the organization | El registro de la aplicación no se ha agregado como Application User en Power Platform | Cree el usuario de la aplicación en el Centro de Administración de Power Platform y asígnele un rol de seguridad (consulte Requisitos Previos) |
0x80060888 - Query parameter not supported | Parámetro de consulta OData no válido | Evite $top en endpoints de metadatos; Crestone gestiona esto automáticamente |
400 Bad Request en consulta de entidad | El campo seleccionado es de tipo navegación/complejo | El campo ha sido excluido automáticamente en las versiones recientes. Limpie la selección de campos y vuelva a seleccionarlos |
401 Unauthorized | Token expirado o ámbito (scope) incorrecto | Los tokens expiran después de 1 hora. Crestone re-adquiere los tokens automáticamente; si realiza pruebas manuales, solicite un nuevo token con el ámbito {organization_url}/.default |
403 Forbidden | El usuario de la aplicación carece de rol de seguridad | Asigne al menos el rol Basic User + acceso de lectura sobre las tablas de destino en el rol de seguridad de Power Platform |
| Lista de entidades vacía | El usuario de la aplicación no tiene acceso a ninguna entidad | Verifique que el rol de seguridad asignado al usuario de la aplicación otorgue acceso al menos a algunas entidades |
| La vista previa devuelve datos vacíos | No hay registros en la entidad o el filtro OData excluye todas las filas | Elimine el filtro OData o verifique que existan datos en Dynamics |
ORA-00904 al cargar en Oracle | Discrepancia de mayúsculas/minúsculas en los nombres de columna entre la creación e inserción | Corregido en la versión actual: los nombres de columna se normalizan a mayúsculas antes de la creación de la tabla |
Permisos Requeridos en Dynamics 365
Crestone solo lee datos de Dynamics 365 (conector de origen). El usuario de la aplicación requiere:
- Privilegio de Lectura (Read) en todas las entidades que desee extraer
- Rol de seguridad del sistema Basic User como mínimo, más acceso de lectura sobre las tablas específicas
Para un rol de solo lectura mínimo, cree un rol de seguridad personalizado en Power Platform con el permiso de Lectura configurado a nivel de Organización en las entidades a las que accederá Crestone.
Consejo: Asignar System Administrator al usuario de la aplicación otorga acceso total y resulta conveniente para pruebas, pero para entornos de producción se recomienda un rol de seguridad personalizado con privilegios mínimos.