Cuando atacamos directamente a la Web API de CRM Dynamics podemos expandir relaciones para, de una única petición, obtener los valores relaciones del registro que estamos consultando.
Para expandir la relación tenemos que utilizar la URL de acceso al registro añadiéndole el parámetro $expand. A continuación tenemos que acompañar el $expand con el nombre del campo que queremos expandir, que en este caso debe ser un campo Lookup.
Un ejemplo sería expandir el usuario que ha creado un contacto mediante el campo CreatedBy. En este caso la URL quedaría del siguiente modo:
https://micrm.crm4.dynamics.com/api/data/v8.2/contacts(6E5818F7-A50C-E811-A82C-000D3AB48E2A)?$expand=createdby
En cambio, no siempre será tan intuitivo. Existen ciertos Lookups que no se pueden expandir mediante el nombre del campo. Son los lookups que permiten relaciones a varias entidades distintas. Un ejemplo sería el Lookup Nombre de Cuenta de Contacto, que hace referencia a las entidades Cuenta y Contacto. Otro ejemplo sería el campo Cliente de una oportunidad o de un pedido.
El truco para estos casos es referirnos al nombre del campo Lookup añadiéndole el sufijo de la entidad a la que apunta. Si en un pedido tenemos un cliente de tipo contacto, añadiremos el sufijo _contact. Si el Lookup apunta a una cuenta tendremos que añadir el sufijo _account.
Así, para expandir el cliente de tipo Cuenta utilizaremos la URL:
https://micrm.crm4.dynamics.com/api/data/v8.2/salesorders(9DBE05BE-29B6-E611-8101-3863BB344B40)?$expand=customerid_account
Para expandir la relación de tipo Contacto, utilizaremos la URL:
https://micrm.crm4.dynamics.com/api/data/v8.2/salesorders(9DBE05BE-29B6-E611-8101-3863BB344B40)?$expand=customerid_contact