php - access dynamics crm 2011 with web services php - access dynamics crm 2011 with web services php php

php - access dynamics crm 2011 with web services


MSCRM 2013 and probably 2011 are using NTLM for authentication the websevices.

For data query, you can use url encoded FetchXML

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

You can get the correct XML from CRM by exporting XML in Advanced search and execute the query with RetrieveMultiple method for example.

I'm adding an example with SOAP envelope and CURL POST query, authenticated with NTLM.

<?php$soap_envelope = <<<END<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">  <s:Body>    <RetrieveMultiple xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">      <query i:type="a:FetchExpression" xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts">        <a:Query><fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>          <entity name='contact'>            <attribute name='fullname' />            <attribute name='parentcustomerid' />            <attribute name='telephone1' />            <attribute name='emailaddress1' />            <attribute name='contactid' />            <order attribute='fullname' descending='false' />            <filter type='and'>              <condition attribute='ownerid' operator='eq-userid' />              <condition attribute='statecode' operator='eq' value='0' />            </filter>          </entity>        </fetch></a:Query>      </query>    </RetrieveMultiple>  </s:Body></s:Envelope>END;$soap_action = 'http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/RetrieveMultiple';$req_location = 'http://crm.server.local/YourOrganization/XRMServices/2011/Organization.svc/web';$headers = array(  'Method: POST',  'Connection: Keep-Alive',  'User-Agent: PHP-SOAP-CURL',  'Content-Type: text/xml; charset=utf-8',  'SOAPAction: "'.$soap_action.'"');$user = 'YOURDOMAIN\YOURUSERNAME';$password = '**********';$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $req_location);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);curl_setopt($ch, CURLOPT_POST, true );curl_setopt($ch, CURLOPT_POSTFIELDS, $soap_envelope);curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);curl_setopt($ch, CURLOPT_USERPWD, $user.':'.$password);$response = curl_exec($ch);if(curl_exec($ch) === false){  echo 'Curl error: ' . curl_error($ch);}else{  var_dump($response);}