简体   繁体   中英

Dynamics CRM create incident

Im trying to create an incident on the Dynamics CRM through their API.

Im successfully authing however when I try to create the incident using:

    $accountsRequest = EntityUtils::getCreateCRMSoapHeader($CRMURL, $securityData).
'
      <s:Body>
            <Create xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services">
            <entity xmlns:b="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                <b:Attributes xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
                    <b:KeyValuePairOfstringanyType>                         
                        <c:key>title</c:key>
                        <c:value i:type="d:string" xmlns:d="http://www.w3.org/2001/XMLSchema">Its a sunday web case - second</c:value>
                    </b:KeyValuePairOfstringanyType>                     
                </b:Attributes>
                <b:EntityState i:nil="true"/>
                <b:FormattedValues xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic"/>
                <b:Id>'.$accountId.'</b:Id>
                <b:LogicalName>incident</b:LogicalName>
                <b:RelatedEntities xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic"/>
            </entity>
            </Create>
        </s:Body>
    </s:Envelope>
    ';

$accountId looks like this:
dabc10e9-df02-e611-80d9-5065f38a9b01

I'm getting the following error:

You should specify a parent contact or account.-2147204080 You should specify a parent contact or account.2016-04-15T07:59:11.6607106Z-2147204080 You should specify a parent contact or account.2016-04-15T07:59:11.6607106Z

Any ideas what I'm missing?

Edit Updated and tried this:

'
      <s:Body>
            <Create xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services">
            <entity xmlns:b="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                <b:Attributes xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
                    <b:KeyValuePairOfstringanyType>                         
                        <c:key>title</c:key>
                        <c:value i:type="d:string" xmlns:d="http://www.w3.org/2001/XMLSchema">Its a sunday web case - second</c:value>
                    </b:KeyValuePairOfstringanyType>
                    <b:KeyValuePairOfstringanyType>
                        <c:key>customerid</c:key>
                        <c:value i:type="d:string" xmlns:d="http://www.w3.org/2001/XMLSchema">19622e39-e502-e611-80da-5065f38ada41</c:value>
                    </b:KeyValuePairOfstringanyType>                                                              
                </b:Attributes>
                <b:EntityState i:nil="true"/>
                <b:FormattedValues xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic"/>
                <b:Id>00000000-0000-0000-0000-000000000000</b:Id>
                <b:LogicalName>incident</b:LogicalName>
                <b:RelatedEntities xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic"/>                    
            </entity>
            </Create>
        </s:Body>
    </s:Envelope>
    ';

But still same error

Edit #2, Also tried:

'
      <s:Body>
            <Create xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services">
            <entity xmlns:b="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                <b:Attributes xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
                    <b:KeyValuePairOfstringanyType>                         
                        <c:key>title</c:key>
                        <c:value i:type="d:string" xmlns:d="http://www.w3.org/2001/XMLSchema">Its a sunday web case - second</c:value>
                    </b:KeyValuePairOfstringanyType>
                    <b:KeyValuePairOfstringanyType>
                        <c:key>customerid</c:key>
                        <b:value i:type="a:EntityReference">
                           <a:Id>19622e39-e502-e611-80da-5065f38ada41</a:Id>
                           <a:LogicalName>account</a:LogicalName>
                           <a:Name i:nil="true" />
                        </b:value>
                    </b:KeyValuePairOfstringanyType>                                                              
                </b:Attributes>
                <b:EntityState i:nil="true"/>
                <b:FormattedValues xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic"/>
                <b:Id>00000000-0000-0000-0000-000000000000</b:Id>
                <b:LogicalName>incident</b:LogicalName>
                <b:RelatedEntities xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic"/>                    
            </entity>
            </Create>
        </s:Body>
    </s:Envelope>
    ';

And am getting error:

DeserializationFailedThe formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://schemas.microsoft.com/xrm/2011/Contracts/Services:entity . The InnerException message was 'Error in line 68 position 57. 'EndElement' 'KeyValuePairOfstringanyType' from namespace ' http://schemas.microsoft.com/xrm/2011/Contracts ' is not expected. Expecting element 'value'.'. Please see InnerException for more details.

It looks like you might be trying to put an account id value into the Id attribute. The Id attribute refers to the Id of the incident...it's better to let CRM generate ids for you, so don't supply anything for the Id attribute (unless you are purposely trying to set the id of the new incident).

The error is referring to the customerid attribute which is of type EntityReference. EntityReferences have Id and LogicalName properties. Put your $accountId value into the customerid.Id, and make customerid.LogicalName be "account". EntityReferences also have Name property, but you don't have to supply that.

Your edit #2 looks like it might have some namespacing issues. Try this:

<b:KeyValuePairOfstringanyType>
    <c:key>customerid</c:key>
    <c:value i:type="b:EntityReference">
       <b:Id>19622e39-e502-e611-80da-5065f38ada41</b:Id>
       <b:LogicalName>account</b:LogicalName>
       <b:Name i:nil="true" />
    </c:value>
</b:KeyValuePairOfstringanyType>      

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM