Question

With the following SOAP query I'm trying to get all the entities in the solution but it doesn't return entity. Maybe a second eye could help. Do you see anything wrong that I can't see? Thank you !

JCL.RetrieveAllEntitiesRequest = function (fnCallBack) {
        /// Returns a sorted array of entities
        var request = "";
        request += "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";
        request += "  <s:Body>";
        request += "    <Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
        request += "      <request i:type=\"a:RetrieveAllEntitiesRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\">";
        request += "        <a:Parameters xmlns:b=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";
        request += "          <a:KeyValuePairOfstringanyType>";
        request += "            <b:key>EntityFilters</b:key>";
        request += "            <b:value i:type=\"c:EntityFilters\" xmlns:c=\"http://schemas.microsoft.com/xrm/2011/Metadata\">Entity</b:value>";
        request += "          </a:KeyValuePairOfstringanyType>";
        request += "          <a:KeyValuePairOfstringanyType>";
        request += "            <b:key>RetrieveAsIfPublished</b:key>";
        request += "            <b:value i:type=\"c:boolean\" xmlns:c=\"http://www.w3.org/2001/XMLSchema\">true</b:value>";
        request += "          </a:KeyValuePairOfstringanyType>";
        request += "        </a:Parameters>";
        request += "        <a:RequestId i:nil=\"true\" />";
        request += "        <a:RequestName>RetrieveAllEntities</a:RequestName>";
        request += "      </request>";
        request += "    </Execute>";
        request += "  </s:Body>";
        request += "</s:Envelope>";

        return JCL._ExecuteRequest(request, "Execute", JCL._RetrieveAllEntitiesResponse, fnCallBack);
    };

JCL._ExecuteRequest = function (sXml, sMessage, fInternalCallback, fUserCallback) {
        'use strict';

    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("POST", JCL.server + "/XRMServices/2011/Organization.svc/web", (fUserCallback !== null));
    xmlhttp.setRequestHeader("Accept", "application/xml, text/xml, */*");
    xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/" + sMessage);

    if (fUserCallback !== null) {
        // asynchronous: register callback function, then send the request.
        xmlhttp.onreadystatechange = function () {
            fInternalCallback.call(this, xmlhttp, fUserCallback);
        };

        xmlhttp.send(sXml);
    } else {
        // synchronous: send request, then call the callback function directly
        xmlhttp.send(sXml);
        return fInternalCallback.call(this, xmlhttp, null);
    }
};

Update after @Paul Way replied to me: This is the error message I get when I select the entity that I need to investigate in CRM Data Detective. I can't add any field to this entity that's why I am using CRM Data Detective to find out which field I could delete, but it happens that the solution couldn't also handle an entity with a maximum number of attributes. Could you please have a look Paul? thank you So much !

enter image description here

Was it helpful?

Solution

Well, I'm embarrassed :)

I've updated the CRM Data Detective and JCL libraries to support CRM 2011 pre UR 12.

https://crmdatadetective.codeplex.com/

https://github.com/paul-way/JCL

The problem has to do with how the returned XML is parsed. Let me know if this fixes your problems...

OTHER TIPS

The CRM 2011 SDK includes some good sample code to do this...

http://msdn.microsoft.com/en-us/library/gg594428.aspx

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top