Soap XML Retrieve using javascript in CRM 2011
Use Soap XML Retrieve web service
http://schemas.microsoft.com/crm/2007/WebServices/Retrieve
This javascript code is fetching Account entity address into using Contact parentcustomerid attribute and filling in Contact address fields
Soap XML retrieve
if (Xrm.Page.getAttribute("parentcustomerid").getValue() != null) {
//acount guid no
var parentcustomerID = Xrm.Page.data.entity.attributes.get("parentcustomerid").getValue()[0].id;
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>" +
"<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +
"<entityName>account</entityName>" +
"<id>" + parentcustomerID + "</id>" +
"<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>" +
"<q1:Attributes>" +
"<q1:Attribute>address1_addresstypecode</q1:Attribute>" +
"<q1:Attribute>address1_name</q1:Attribute>" +
"<q1:Attribute>address1_line1</q1:Attribute>" +
"<q1:Attribute>address1_line2</q1:Attribute>" +
"<q1:Attribute>address1_city</q1:Attribute>" +
"<q1:Attribute>address1_stateorprovince</q1:Attribute>" +
"<q1:Attribute>address1_postalcode</q1:Attribute>" +
"<q1:Attribute>address1_country</q1:Attribute>" +
"<q1:Attribute>address1_telephone1</q1:Attribute>" +
"</q1:Attributes>" +
"</columnSet>" +
"</Retrieve>" +
"</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/Retrieve");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
var resultXml = xmlHttpRequest.responseXML;
if (resultXml.selectSingleNode("//q1:address1_addresstypecode") != null) { Xrm.Page.getAttribute("address1_addresstypecode").setValue(resultXml.selectSingleNode("//q1:address1_addresstypecode").nodeTypedValue);
}
else {
Xrm.Page.getAttribute("address1_addresstypecode").setValue(null);
}
if (resultXml.selectSingleNode("//q1:address1_name") != null) {
Xrm.Page.getAttribute("address1_name").setValue(resultXml.selectSingleNode("//q1:address1_name").nodeTypedValue);
}
else {
Xrm.Page.getAttribute("address1_name").setValue(null);
}
if (resultXml.selectSingleNode("//q1:address1_line1") != null) {
Xrm.Page.getAttribute("address1_line1").setValue(resultXml.selectSingleNode("//q1:address1_line1").nodeTypedValue);
}
else {
Xrm.Page.getAttribute("address1_line1").setValue(null);
}
if (resultXml.selectSingleNode("//q1:address1_line2") != null) {
Xrm.Page.getAttribute("address1_line2").setValue(resultXml.selectSingleNode("//q1:address1_line2").nodeTypedValue);
}
else {
Xrm.Page.getAttribute("address1_line2").setValue(null);
}
if (resultXml.selectSingleNode("//q1:address1_city") != null) {
Xrm.Page.getAttribute("address1_city").setValue(resultXml.selectSingleNode("//q1:address1_city").nodeTypedValue);
}
else {
Xrm.Page.getAttribute("address1_city").setValue(null);
}
if (resultXml.selectSingleNode("//q1:address1_stateorprovince") != null) {
Xrm.Page.getAttribute("address1_stateorprovince").setValue(resultXml.selectSingleNode("//q1:address1_stateorprovince").nodeTypedValue);
}
else {
Xrm.Page.getAttribute("address1_stateorprovince").setValue(null);
}
if (resultXml.selectSingleNode("//q1:address1_postalcode") != null) {
Xrm.Page.getAttribute("address1_postalcode").setValue(resultXml.selectSingleNode("//q1:address1_postalcode").nodeTypedValue);
}
else {
Xrm.Page.getAttribute("address1_postalcode").setValue(null);
}
if (resultXml.selectSingleNode("//q1:address1_country") != null) {
Xrm.Page.getAttribute("address1_country").setValue(resultXml.selectSingleNode("//q1:address1_country").nodeTypedValue);
}
else {
Xrm.Page.getAttribute("address1_country").setValue(null);
}
}