Accessing Web Services From CRM Forms

I have been very busy planning for our next release and I have to say, I am very excited about what we are doing next! More on that later........... I am still getting mail from folks asking how to access a web service from CRM forms. I thought I share a little JScript code that I used for some of my demos. This code accesses a public web service to get the exchange rate between US$ and a given currency. I did a MSN search and found a public web service;; that provides a public currency converter web service. Then I added one picklist and two fields to the Invoice Business Entity using the Customization tools in CRM V3.0: fabrikam_exchangerate (shows the exchange rate) and fabrikam_totalcurrency (shows the total amount in the selected currency).

Here is the code followed by a snapshot of the Customized CRM Invoice form. You can easily copy and paste this code into your OnChange, OnSave or OnLoad form event using the CRM V3.0 form editor. I added the code as an OnChange event to a new picklist (target currency) that I added earlier to the form.

// Declaring Some variable here including the web service to connect to


i=0; var j=0; var k=0; var r=0;


serverUrl = "";

//This is my picklist. I have already added three currency that i want to support the exchange to


(parseInt(event.srcElement.DataValue, 10))


case 1:

i = "JPY";


case 2:

i = "GBP";


case 3:

i = "EUR";



//Instantiating connection to the web service and calling the get method


xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");"get", serverUrl + "/CurrencyConvertor.asmx/ConversionRate?FromCurrency=USD&ToCurrency="+escape(i), false);



startTag = "<double xmlns=\"http://www.webserviceX.NET/\">";


endTag = "</double>";




valueStart = 0;


valueEnd = 0;

//Parsing the returned XML

valueStart = xmlhttp.responseXML.xml.indexOf(startTag, valueEnd) + startTag.length;

valueEnd = xmlhttp.responseXml.xml.indexOf(endTag, valueEnd+1);

exch = xmlhttp.responseXML.xml.substring(valueStart, valueEnd);

//Setting the Exchange rate on the custom attribute that i have added for this purpose earlier

crmForm.all.fabrikam_exchangerate.DataValue = parseFloat (exch);

j = crmForm.all.totalamount.DataValue;


kk = j*(parseFloat(exch));

//Calculating and setting the total sum in the selected currency

crmForm.all.fabrikam_totalcurrency.DataValue = kk;