3. Ponentes!
• David Fernando Martinez.
• Consultor Senior de Innovar
• Conocimientos en Dynamic 365 CE
• Conocimientos en Dynamics F&O.
• Desarrollador
• Arquitecto y Scrum Master.
• Originario de la tierra más bella del mundo Colombia!!!
• Adicto a las motos.
• Fan de GoT
• LinkenId: https://www.linkedin.com/in/david-fernando-
martinez-bustos-6a159018/
4. Ponentes!
• Oriol Peñuela Ortega
• Desarrollador Senior.
• Actualmente esta detrás de los proyectos de Chat
Bots usando Bot Framework.
• Estudiante de informática UPC.
• Friki en tecnologías web.
• Defensor de Star wars los últimos Jedi.
• Fan de las cervezas artesanales .
LinkedIn: https://www.linkedin.com/in/oriolpenuela/
5. Y el menú de hoy!
1
2
3
4 Web API – Pruebas de rendimiento (SOAP Vs Web API)
Web API Dynamics 365
ODATA V2 y V4
Diferencias entre Organization Data Service, Web API y Organization
Service.
6. Llegando mas a fondo!
5
6
7
8
Xrm.WebApi y Postman.
Ejemplo de consumo desde Flows y Power Apps.
Limitaciones actuales de la Web API.
Funciones y Acciones
Programación asíncrona con js e integración con Typescript.
7. • La API web, para Microsoft Dynamics 365 (en línea y local), proporciona
una experiencia de desarrollo que puede usarse en una gran
variedad de lenguajes de programación, plataformas, y dispositivos.
• Web API en Dynamics 365 -> Release 2.0.
Web API Dynamics 365
8. ¿Qué contiene la web Api?
• Implementa Odata (Open Data Protocol), V 4.0.
• Norma OASIS, para consumir API.
• Web api combina funcionalidad de SOAP y REST
endpoint.
• Mejoras del REST endpoint (Odata 2.0 – Estaba
limitado a operaciones CRUD).
9. Odata V2.0 / Odata v4.0
OData V2 in Dynamics CRM OData V4 in Dynamics 365/2016
Dynamics CRM Client URL +”
/XRMServices/2011/OrganizationData.svc” –
Dynamics CRM Client URL +” /api/data/v9.1″
Necesidad de agregar referencia de ensamblaje o utilidad
de JavaScript.
No necesita ninguna referencia de ensamblado de
JavaScript.
Sufijo adicional "Conjunto" con nombre de entidad
(ejemplo - ContactSet)
Solo sufijo "s" con nombre de entidad (ejemplo -
Contacts)
10. Diferencias
Organization Service Web API Organization Data Service
• Usa WCF to SOAP endpoint
• Implementa IorganizationService Interface
• XML
• Requiere el Assembly para autenticar Dynamics
CRM
• Assign Records , Retrieve Metadata, Execute
Message and Anything.
• Máximo de registros 5000
• Usa WCF to Rest Endpoint
• Implementa Odata V4
• JSON, TEXT,XML
• NO Requiere el Assembly para autenticar
Dynamics CRM
• Create, Retrieve, Update, Delete , Associate,
Diassociate, Assign, Retrieve metadata.
• Máximo de registros 5000
• Usa WCF to Rest Endpoint
• Implementa Odata V2
• JSON, ATOM
• NO Requiere el Assembly para autenticar
Dynamics CRM
• Create, Retrieve, Update, Delete ,
Associate, Disassociate
• Máximo de registros 50
17. Parámetros de filtrado
• $select: Lista de campos que queremos recuperar de la WebApi
• $filter: Filtrado de registros
• $expand: Devuelve campos de entidades relacionadas (Ej:
$expand=customerid_contact($select=fullname))
• $orderby: Orden de los registros devueltos (Ej: $orderby=name desc,revenue asc)
• $top: Limita los resultados devueltos
• $apply: Permite agregar campos y agrupar registros (Ej:
$apply=groupby((statuscode),aggregate(estimatedvalue with average as averagevalue)
• $count: Devuelve un campo @odata.count que contiene el numero de registros
devueltos en la consulta
20. Funciones
• Operaciones nativas que no producen efectos secundarios.
• Pueden ser globales (unbound) o ligadas a una entidad (bound)
• Si la función esta ligada a un entidad se deberá indicar el GUID del registro al que hace referencia y el
namespace de la función.
Funciones de query: Funciones que se usan en una búsqueda de registros, por ejemplo
la función contains() o startsWith()
21. Acciones
• Flujos de trabajo que permiten realizar operaciones aisladas y reutilizables.
• También pueden ser globales o ligadas a una entidad.
• Se ejecutan realizando una llamada POST a la WebApi con objeto que representa los parámetros de la función.
23. Promesas
• Una promesa representa el resultado (o fallo) de una operación asíncrona.
• Usando el método then() en una promesa podemos tratar el resultado/error de la operación asíncrona.
24. Fetch()
• Alternativa a XMLHttpRequest , devuelve una promesa.
• Ademas de la URL se le puede pasar como parámetro un objeto con el tipo de petición, headers, datos…
28. • La actualización de los campos de búsqueda a NULL no se admite
actualmente, ya que no hay una forma eficiente de hacerlo cuando se
utiliza WebAPI.
• Existen dos limitaciones cuando se utiliza una Alternate Key como
criterio de coincidencia para la acción Upsert o Update en un
componente de destino de CRM.
• Primero, no informa ningún valor para las columnas de salida IsNew
y CrmRecordId en su Salida predeterminada, ya que el servidor
Dynamics 365 / CRM no CE devuelve dicha información cuando se usa
WebAPI. En segundo lugar, no funciona si alguno de los campos clave
tiene un valor NULL. SOAP
Cosas por mejorar en Web API
29. • No se recomienda utilizar la Detección de duplicados
como criterios coincidentes para la acción Upsert o
Update, ya que la función RetrieveDuplicates en la
que confiamos no devuelve esos registros duplicados
existentes de manera confiable. SOAP
• Cuando trabaje con la opción EntityChanges en el
componente de origen CRM, no debe seleccionar
ningún campo de búsqueda, ya que esto provoca un
error esperado en el servidor.
Cosas por mejorar en Web API
30. • La opción AuditLogs en el componente fuente de CRM
no se admite actualmente, ya que la función
RetrieveRecordChangeHistory en la que confiamos
está generando un error inesperado en el servidor.
• La acción de eliminación masiva no funciona, ya que la
función FetchXmlToQueryExpression informará un
error inesperado en el servidor.
• El uso de la acción Delete para la
campaignactivityitem no está funcionando
actualmente debido a la disparidad del mensaje de
solicitud de servicio utilizado
Cosas por mejorar en Web API
31. • La escritura en la entidad de campaignitem no está funcionando
actualmente debido a la disparidad del mensaje de solicitud de
servicio utilizado.
• El uso de la acción Delete para la entidad listmember no está
funcionando actualmente debido a la disparidad del mensaje de
solicitud de servicio utilizado.
• La acción de envío para la entidad de “email" no funciona, ya que
genera un error del lado del servidor cuando la solicitud se publica
en el servidor.
• Al realizar una actualización de los campos de la lista de partes en una
entidad de actividad (como los campos 'from', 'to', 'cc', 'bcc' fields of
'email' entity), debe asegurarse de escribir a todos campos de la lista
de partes en la misma entidad; de lo contrario, los campos de la lista
de partes que no tienen una entrada se borrarán, lo que podría
ocasionar pérdidas inesperadas de datos
Cosas por mejorar en Web API