I have posted a bunch of PowerShell scripts to interact with CRM 2011, now I am going to put up similar javascript versions. I feel that there is a lot of javascript content out there for CRM 2011, but most of it is javascript inside the actual CRM interface. I don’t see a lot of content about using javascript from a different webpage/site with ajax, so I thought I would post some of the code I put together.
This is a function that I put together to build a SOAP envelope for creating an activity in CRM 2011. Credit for the template goes to Jamie Miley and this post. I took his template a little further and created a function for either email,Phone call or appointment. In addition this function allows for multiple contacts in an phone call’s to and multiple required contacts in a meeting.
function BuildSOAPEnvelope(EntityType, strSubject, strDescription, strLocation,stringRegardingGUID, strOwnerGUID, strScheduledStart, strScheduledEnd, otherAttendees) { var requestMain = "" requestMain += "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">"; requestMain += " <s:Body>"; requestMain += " <Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">"; requestMain += " <request i:type=\"a:CreateRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\">"; requestMain += " <a:Parameters xmlns:b=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">"; requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>Target</b:key>"; requestMain += " <b:value i:type=\"a:Entity\">"; requestMain += " <a:Attributes>"; // subject requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>subject</b:key>"; requestMain += " <b:value i:type=\"c:string\" xmlns:c=\"http://www.w3.org/2001/XMLSchema\">"+strSubject+"</b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; // description requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>description</b:key>"; requestMain += " <b:value i:type=\"c:string\" xmlns:c=\"http://www.w3.org/2001/XMLSchema\">"+strDescription+"</b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; if (EntityType == "phonecall") { //recipient requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>to</b:key>"; requestMain += " <b:value i:type=\"a:ArrayOfEntity\">"; $.each(otherAttendees, function () { requestMain += " <a:Entity>"; requestMain += " <a:Attributes>"; requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>partyid</b:key>"; requestMain += " <b:value i:type=\"a:EntityReference\">"; requestMain += " <a:Id>" + stringRegardingGUID + "</a:Id>"; requestMain += " <a:LogicalName>contact</a:LogicalName>"; requestMain += " <a:Name i:nil=\"true\" />"; requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; requestMain += " </a:Attributes>"; requestMain += " <a:EntityState i:nil=\"true\" />"; requestMain += " <a:FormattedValues />"; requestMain += " <a:Id>00000000-0000-0000-0000-000000000000</a:Id>"; requestMain += " <a:LogicalName>activityparty</a:LogicalName>"; requestMain += " <a:RelatedEntities />"; requestMain += " </a:Entity>"; }); requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; //SS requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>scheduledstart</b:key>"; requestMain += " <b:value i:type=\"d:dateTime\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">"+strScheduledStart+"</b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; //SE requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>scheduledend</b:key>"; requestMain += " <b:value i:type=\"d:dateTime\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">"+strScheduledEnd+"</b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; } if (EntityType == "email") { //to requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>to</b:key>"; requestMain += " <b:value i:type=\"a:ArrayOfEntity\">"; requestMain += " <a:Entity>"; requestMain += " <a:Attributes>"; requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>partyid</b:key>"; requestMain += " <b:value i:type=\"a:EntityReference\">"; requestMain += " <a:Id>" + stringRegardingGUID + "</a:Id>"; requestMain += " <a:LogicalName>contact</a:LogicalName>"; requestMain += " <a:Name i:nil=\"true\" />"; requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; requestMain += " </a:Attributes>"; requestMain += " <a:EntityState i:nil=\"true\" />"; requestMain += " <a:FormattedValues />"; requestMain += " <a:Id>00000000-0000-0000-0000-000000000000</a:Id>"; requestMain += " <a:LogicalName>activityparty</a:LogicalName>"; requestMain += " <a:RelatedEntities />"; requestMain += " </a:Entity>"; requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; // from requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>from</b:key>"; requestMain += " <b:value i:type=\"a:ArrayOfEntity\">"; requestMain += " <a:Entity>"; requestMain += " <a:Attributes>"; requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>partyid</b:key>"; requestMain += " <b:value i:type=\"a:EntityReference\">"; requestMain += " <a:Id>" + strOwnerGUID + "</a:Id>"; requestMain += " <a:LogicalName>systemuser</a:LogicalName>"; requestMain += " <a:Name i:nil=\"true\" />"; requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; requestMain += " </a:Attributes>"; requestMain += " <a:EntityState i:nil=\"true\" />"; requestMain += " <a:FormattedValues />"; requestMain += " <a:Id>00000000-0000-0000-0000-000000000000</a:Id>"; requestMain += " <a:LogicalName>activityparty</a:LogicalName>"; requestMain += " <a:RelatedEntities />"; requestMain += " </a:Entity>"; requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; // cc if (otherAttendees != '') { requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>cc</b:key>"; requestMain += " <b:value i:type=\"a:ArrayOfEntity\">"; $.each(otherAttendees, function () { requestMain += " <a:Entity>"; requestMain += " <a:Attributes>"; requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>partyid</b:key>"; requestMain += " <b:value i:type=\"a:EntityReference\">"; requestMain += " <a:Id>" + this + "</a:Id>"; requestMain += " <a:LogicalName>contact</a:LogicalName>"; requestMain += " <a:Name i:nil=\"true\" />"; requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; requestMain += " </a:Attributes>"; requestMain += " <a:EntityState i:nil=\"true\" />"; requestMain += " <a:FormattedValues />"; requestMain += " <a:Id>00000000-0000-0000-0000-000000000000</a:Id>"; requestMain += " <a:LogicalName>activityparty</a:LogicalName>"; requestMain += " <a:RelatedEntities />"; requestMain += " </a:Entity>"; }); requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; } //SS requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>scheduledstart</b:key>"; requestMain += " <b:value i:type=\"d:dateTime\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">"+strScheduledStart+"</b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; //SE requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>scheduledend</b:key>"; requestMain += " <b:value i:type=\"d:dateTime\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">" + strScheduledEnd + "</b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; } if (EntityType == "appointment"){ //SS requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>scheduledstart</b:key>"; requestMain += " <b:value i:type=\"d:dateTime\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">"+strScheduledStart+"</b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; //SE requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>scheduledend</b:key>"; requestMain += " <b:value i:type=\"d:dateTime\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">"+strScheduledEnd+"</b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; // Organizer requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>organizer</b:key>"; requestMain += " <b:value i:type=\"a:ArrayOfEntity\">"; requestMain += " <a:Entity>"; requestMain += " <a:Attributes>"; requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>partyid</b:key>"; requestMain += " <b:value i:type=\"a:EntityReference\">"; requestMain += " <a:Id>"+strOwnerGUID+"</a:Id>"; requestMain += " <a:LogicalName>systemuser</a:LogicalName>"; requestMain += " <a:Name i:nil=\"true\" />"; requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; requestMain += " </a:Attributes>"; requestMain += " <a:EntityState i:nil=\"true\" />"; requestMain += " <a:FormattedValues />"; requestMain += " <a:Id>00000000-0000-0000-0000-000000000000</a:Id>"; requestMain += " <a:LogicalName>activityparty</a:LogicalName>"; requestMain += " <a:RelatedEntities />"; requestMain += " </a:Entity>"; requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; // location requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>location</b:key>"; requestMain += " <b:value i:type=\"c:string\" xmlns:c=\"http://www.w3.org/2001/XMLSchema\">"+strLocation+"</b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; // Required requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>requiredattendees</b:key>"; requestMain += " <b:value i:type=\"a:ArrayOfEntity\">"; if (otherAttendees != '') { $.each(otherAttendees, function () { requestMain += " <a:Entity>"; requestMain += " <a:Attributes>"; requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>partyid</b:key>"; requestMain += " <b:value i:type=\"a:EntityReference\">"; requestMain += " <a:Id>" + this + "</a:Id>"; requestMain += " <a:LogicalName>contact</a:LogicalName>"; requestMain += " <a:Name i:nil=\"true\" />"; requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; requestMain += " </a:Attributes>"; requestMain += " <a:EntityState i:nil=\"true\" />"; requestMain += " <a:FormattedValues />"; requestMain += " <a:Id>00000000-0000-0000-0000-000000000000</a:Id>"; requestMain += " <a:LogicalName>activityparty</a:LogicalName>"; requestMain += " <a:RelatedEntities />"; requestMain += " </a:Entity>"; }); } requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; } // Regarding requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>regardingobjectid</b:key>"; requestMain += " <b:value i:type=\"a:EntityReference\">"; requestMain += " <a:Id>"+stringRegardingGUID+"</a:Id>"; requestMain += " <a:LogicalName>contact</a:LogicalName>"; requestMain += " <a:Name i:nil=\"true\" />"; requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; // Owner requestMain += " <a:KeyValuePairOfstringanyType>"; requestMain += " <b:key>ownerid</b:key>"; requestMain += " <b:value i:type=\"a:EntityReference\">"; requestMain += " <a:Id>"+strOwnerGUID+"</a:Id>"; requestMain += " <a:LogicalName>systemuser</a:LogicalName>"; requestMain += " <a:Name i:nil=\"true\" />"; requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; // EntityType requestMain += " </a:Attributes>"; requestMain += " <a:EntityState i:nil=\"true\" />"; requestMain += " <a:FormattedValues />"; requestMain += " <a:Id>00000000-0000-0000-0000-000000000000</a:Id>"; requestMain += " <a:LogicalName>"+EntityType+"</a:LogicalName>"; requestMain += " <a:RelatedEntities />"; requestMain += " </b:value>"; requestMain += " </a:KeyValuePairOfstringanyType>"; requestMain += " </a:Parameters>"; requestMain += " <a:RequestId i:nil=\"true\" />"; requestMain += " <a:RequestName>Create</a:RequestName>"; requestMain += " </request>"; requestMain += " </Execute>"; requestMain += " </s:Body>"; requestMain += "</s:Envelope>"; return requestMain; }
[…] I use to post a SOAP envelope to CRM 2011. Just pass the URL and the xml (you can create that with this function) and you should be good to […]