CRM 2011: Obteniendo entidad con Javascript

Estoy trabajando en algunas personalizaciones en línea de CRM 2011 y necesito obtener una entidad que use JavaScript.

La entidad que necesito se basará en el valor de ID de otro campo (una entidad de contacto); esta ID de contacto me puede ayudar.

La entidad que quiero es una entidad personalizada. Puede haber múltiples coincidencias basadas en la ID de contacto, por lo que solo quiero obtener la primera en la lista (el orden no es importante)

Hasta ahora he investigado algunas formas de hacer esto ...

OData: no pude encontrar suficientes ejemplos sobre esto en cuanto a qué expresiones de consulta puedo crear, tampoco sé si / cómo hacer que esto funcione para entidades personalizadas

FetchXML: también puedo crear una buena consulta FetchXML utilizando el "hallazgo avanzado" incorporado y me encantaría llamar a esto desde JavaScript si alguien puede ayudar. Encontré una respuesta prometedoraaqu pero no pude ver cómo se estaban configurando los datos de retorno de "resultados" (función Service.Fetch)

olicitud @SOAP: lo primero que probé es un método similar al que podría haber hecho en CRM 4, pero parece que no funciona. Aunque la solicitud se ejecuta, los datos de mis resultados parecen estar vacíos. Esto es todo para lo que tengo código, por lo que si alguien puede detectar un problema con el código a continuación, sería genial.

EDITA: He detectado algunos datos de consulta redundantes (eliminé las etiquetas de apertura de enlaces pero dejé las etiquetas de cierre). Desde que eliminé esto ahora obtengo datos de resultados XML ... sin embargo, la cláusula where no parece aplicarse (solo obtenga la lista de todos entidades)

    var xml = "<?xml version='1.0' encoding='utf-8'?>" + 
    "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" + 
    GenerateAuthenticationHeader() +
    "<soap:Body>" + 
    "<RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" + 
    "<query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" + 
    "<q1:EntityName>new_vehicle</q1:EntityName>" + 
    "<q1:ColumnSet xsi:type='q1:ColumnSet'>" + 
    "<q1:Attributes>" + 
    "<q1:Attribute>new_vehicleid</q1:Attribute>" +
    "<q1:Attribute>new_primarydriver</q1:Attribute>" +
    "<q1:Attribute>statuscode</q1:Attribute>" +
    "<q1:Attribute>new_registration</q1:Attribute>" +
    "</q1:Attributes>" + 
    "</q1:ColumnSet>" + 
    "<q1:Distinct>false</q1:Distinct>" + 

    "<q1:Conditions>" + 

                     "<q1:Condition>" +
                     "<q1:AttributeName>new_primarydriver</q1:AttributeName>" +
    "<q1:Operator>Equal</q1:Operator>" +
    "<q1:Values>" +
    "<q1:Value xmlns:q2='http://microsoft.com/wsdl/types/' xsi:type='q2:guid'>" +
    customerID +
    "</q1:Value></q1:Values></q1:Condition>" + 

    "</q1:Conditions>" +

    "</query></RetrieveMultiple>" +
    "</soap:Body></soap:Envelope>";


    var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

    xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
    xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
    xmlHttpRequest.send(xml);

    var result = xmlHttpRequest.responseXML.xml;
    var doc = new ActiveXObject("MSXML2.DOMDocument");
    doc.async = false;
    doc.loadXML(result);

    var id = doc.selectSingleNode("//new_vehicleid");
    var registration = doc.selectSingleNode("//new_registration");

    if(id == null)
       return null;

    var vehicle = new Array();
                     value[0] = new Object();
                     value[0].id = id;
                     value[0].name = registration;
                     value[0].entityType = "new_vehicle";

    return vehicle;

Perdón por la publicación del código grande, pero espero que alguien que comprenda mejor pueda ayudar

Respuestas a la pregunta(1)

Su respuesta a la pregunta