getOptionSet: function (entityLogicalName, attributeLogicalName, retrieveAsIfPublished) { var url = Xrm.Page.context.getServerUrl() + "/XRMServices/2011/Organization.svc/web"; var MetadataId = "00000000-0000-0000-0000-000000000000"; var 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:RetrieveAttributeRequest\" 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>EntityLogicalName</b:key>"; request += "<b:value i:type=\"c:string\" xmlns:c=\"http://www.w3.org/2001/XMLSchema\">" + entityLogicalName + "</b:value>"; request += "</a:KeyValuePairOfstringanyType>"; request += "<a:KeyValuePairOfstringanyType>"; request += "<b:key>MetadataId</b:key>"; request += "<b:value i:type=\"ser:guid\" xmlns:ser=\"http://schemas.microsoft.com/2003/10/Serialization/\">" + MetadataId + "</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\">" + retrieveAsIfPublished + "</b:value>"; request += "</a:KeyValuePairOfstringanyType>"; request += "<a:KeyValuePairOfstringanyType>"; request += "<b:key>LogicalName</b:key>"; request += "<b:value i:type=\"c:string\" xmlns:c=\"http://www.w3.org/2001/XMLSchema\">" + attributeLogicalName + "</b:value>"; request += "</a:KeyValuePairOfstringanyType>"; request += "</a:Parameters>"; request += "<a:RequestId i:nil=\"true\" /><a:RequestName>RetrieveAttribute</a:RequestName></request>"; request += "</Execute>"; request = this._getSOAPWrapper(request); var req = new XMLHttpRequest(); req.open("POST", url, false); req.setRequestHeader("Accept", "application/xml, text/xml, */*"); req.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); req.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute"); req.send(request); if (req.responseXML != null) { if (Mscrm.Utilities.isChrome()) { if (window.DOMParser) { var parser, resultDoc; parser = new DOMParser(); resultDoc = parser.parseFromString(req.responseText, "text/xml"); // Webkit resultDoc = resultDoc.getElementsByTagName("value")[0]; var attributeData = resultDoc; if (attributeData != null) { var attributeType = attributeData.getElementsByTagName("AttributeType")[0].textContent; switch (attributeType) { case "Picklist": return attributeData; break; default: break; } } } } else if (Mscrm.Utilities.isIE8() || Mscrm.Utilities.isIE9()) { var attributeData = req.responseXML.selectSingleNode("//b:value"); if (attributeData != null) { var attributeType = attributeData.selectSingleNode("c:AttributeType").text; switch (attributeType) { case "Picklist": return attributeData; break; default: break; } } } else { var attributeData = req.responseXML.getElementsByTagName("b:value")[0]; if (attributeData != null) { var attributeType = attributeData.getElementsByTagName("c:AttributeType")[0].textContent; switch (attributeType) { case "Picklist": return attributeData; break; default: break; } } } } }, _getSOAPWrapper: function (request) { var SOAP = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Body>"; SOAP += request; SOAP += "</soapenv:Body></soapenv:Envelope>"; return SOAP; },