Tuesday 20 November 2012

Associate account with contact while creating a Additional contact from the Lead Form.

  1. Download XrmServiceToolkit. Extract the zip file.
  2. Then you have to add the following script to crm webresources:
    •             jquery.js
    •             json.js
    •             XrmServiceToolkit.js
  3. Save the following code as javascript file. Then add it to the webresources.
function qualifyLeadRequest() {
    var requestMain = ""
xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
    requestMain += "      <request i:type=\"b:QualifyLeadRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\" xmlns:b=\"http://schemas.microsoft.com/crm/2011/Contracts\">";
    requestMain += "        <a:Parameters xmlns:c=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";
    requestMain += "          <a:KeyValuePairOfstringanyType>";
    requestMain += "            <c:key>LeadId</c:key>";
    requestMain += "            <c:value i:type=\"a:EntityReference\">";
    requestMain += "              <a:Id>" + Xrm.Page.data.entity.getId() + "</a:Id>";
    requestMain += "              <a:LogicalName>lead</a:LogicalName>";
    requestMain += "              <a:Name i:nil=\"true\" />";
    requestMain += "            </c:value>";
    requestMain += "          </a:KeyValuePairOfstringanyType>";
    requestMain += "          <a:KeyValuePairOfstringanyType>";
    requestMain += "            <c:key>CreateAccount</c:key>";
    requestMain += "            <c:value i:type=\"d:boolean\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">true</c:value>";
    requestMain += "          </a:KeyValuePairOfstringanyType>";
    requestMain += "          <a:KeyValuePairOfstringanyType>";
    requestMain += "            <c:key>CreateContact</c:key>";
    requestMain += "            <c:value i:type=\"d:boolean\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">true</c:value>";
    requestMain += "          </a:KeyValuePairOfstringanyType>";
    requestMain += "          <a:KeyValuePairOfstringanyType>";
    requestMain += "            <c:key>CreateOpportunity</c:key>";
    requestMain += "            <c:value i:type=\"d:boolean\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">false</c:value>";
    requestMain += "          </a:KeyValuePairOfstringanyType>";
    requestMain += "          <a:KeyValuePairOfstringanyType>";
    requestMain += "            <c:key>Status</c:key>";
    requestMain += "            <c:value i:type=\"a:OptionSetValue\">";
    requestMain += "              <a:Value>3</a:Value>";
    requestMain += "            </c:value>";
    requestMain += "          </a:KeyValuePairOfstringanyType>";
    requestMain += "          <a:KeyValuePairOfstringanyType>";
    requestMain += "            <c:key>OpportunityCurrencyId</c:key>";
    requestMain += "            <c:value i:type=\"a:EntityReference\">";
    requestMain += "              <a:Id>89c14850-a5f3-e011-8606-1cc1dee89aa8</a:Id>";
    requestMain += "              <a:LogicalName>transactioncurrency</a:LogicalName>";
    requestMain += "              <a:Name i:nil=\"true\" />";
    requestMain += "            </c:value>";
    requestMain += "          </a:KeyValuePairOfstringanyType>";
    requestMain += "          <a:KeyValuePairOfstringanyType>";
    requestMain += "            <c:key>OpportunityCustomerId</c:key>";
    requestMain += "            <c:value i:type=\"a:EntityReference\">";
    requestMain += "              <a:Id>e2d97648-a5f3-e011-8606-1cc1dee89aa8</a:Id>";
    requestMain += "              <a:LogicalName>account</a:LogicalName>";
    requestMain += "              <a:Name i:nil=\"true\" />";
    requestMain += "            </c:value>";
    requestMain += "          </a:KeyValuePairOfstringanyType>";
    requestMain += "          <a:KeyValuePairOfstringanyType>";
    requestMain += "            <c:key>SourceCampaignId</c:key>";
    requestMain += "            <c:value i:type=\"a:EntityReference\">";
    requestMain += "              <a:Id>0ada7648-a5f3-e011-8606-1cc1dee89aa8</a:Id>";
    requestMain += "              <a:LogicalName>campaign</a:LogicalName>";
    requestMain += "              <a:Name i:nil=\"true\" />";
    requestMain += "            </c:value>";
    requestMain += "          </a:KeyValuePairOfstringanyType>";
    requestMain += "        </a:Parameters>";
    requestMain += "        <a:RequestId i:nil=\"true\" />";
    requestMain += "        <a:RequestName>QualifyLead</a:RequestName>";
    requestMain += "      </request>";

    var resultXml = XrmServiceToolkit.Soap.Execute(requestMain);  
    var id = xmlToString(resultXml);// loadXML(resultXml);
    return id;
}

function xmlToString(resultXml) {
    if ($(resultXml).find('a\\:Id').length != 0) {
        response = $(resultXml).find('a\\:Id').eq(0);
    } else {
        response = $(resultXml).find('Id').eq(0); ; //Chrome 24.0.1312.52 could not find node by the previous code
    }
    var result = ((typeof window.CrmEncodeDecode != 'undefined') ? window.CrmEncodeDecode.CrmXmlDecode(response.text()) : crmXmlDecode(response.text()));

    return result;
}

function additionalContact(AccountId) {
 
    var createContact = new XrmServiceToolkit.Soap.BusinessEntity("contact");
    var salutation = Xrm.Page.data.entity.attributes.get("tvsi_ssalutation").getValue();      
    if(salutation != null)
    {
        createContact.attributes["tvsi_salutation"] = { value: salutation, type: "OptionSetValue" };      
    }
    createContact.attributes["firstname"] = Xrm.Page.data.entity.attributes.get("tvsi_firstname").getValue();
    createContact.attributes["lastname"] = Xrm.Page.data.entity.attributes.get("tvsi_lastname").getValue();
    createContact.attributes["jobtitle"] = Xrm.Page.data.entity.attributes.get("tvsi_jobtitle").getValue();
    createContact.attributes["emailaddress1"] = Xrm.Page.data.entity.attributes.get("tvsi_secondaryemail").getValue();
    createContact.attributes["telephone1"] = Xrm.Page.data.entity.attributes.get("tvsi_secondbusinessphone").getValue();
    createContact.attributes["mobilephone"] = Xrm.Page.data.entity.attributes.get("tvsi_mobilephone").getValue();
    createContact.attributes["address1_line1"]=Xrm.Page.data.entity.attributes.get("address1_line1").getValue();
    createContact.attributes["address1_line2"]=Xrm.Page.data.entity.attributes.get("address1_line2").getValue();
    createContact.attributes["address1_line3"]=Xrm.Page.data.entity.attributes.get("address1_line3").getValue();
    createContact.attributes["address1_city"]=Xrm.Page.data.entity.attributes.get("address1_city").getValue();
    createContact.attributes["address1_postalcode"]=Xrm.Page.data.entity.attributes.get("address1_postalcode").getValue();
    createContact.attributes["address1_stateorprovince"] = Xrm.Page.data.entity.attributes.get("address1_stateorprovince").getValue();
    var country = Xrm.Page.data.entity.attributes.get("tvsi_countryregion").getValue();//.getSelectedOption().value;    
    if(country != null)
    {
        createContact.attributes["tvsi_countryregion0"]={ value: country, type: "OptionSetValue" };
    }
     
 
    createContact.attributes["parentcustomerid"] = { id: AccountId, logicalName: "account", type: "EntityReference" };
    contactId1 = XrmServiceToolkit.Soap.Create(createContact);

}

function qualify() {   
    var id = qualifyLeadRequest();
   if(Xrm.Page.data.entity.attributes.get("tvsi_lastname").getValue()!=null)
       additionalContact(id);
    alert("Successfully Converted to Account and Contact");

    window.location.reload(true);
}


  1. Open VisualRibbonEditor Tool. Make a Connection with your CRM Server.
  2. Then Click Open. Entity Ribbon dialog will be Opened. There you have to select LEAD ribbon.
  3. Select ConverToLead button. After selected you need to click Action tab. Expand Javascript function.
  4. There you have to give a function name: qualify
  5. Library: /WebResources/new_filename



No comments:

Post a Comment