Introduction
Do you feel it annoying to enter First Name and Last Name in lead even when Existing Contact is selected already?? If yes, then this post will help you to auto populate these fields as soon as Existing Contact is selected. Lead entity contains fullname as primary field (key attribute), which is a combination for First and Last name. These field is used to create contact record if Existing Contact lookup is not selected under lead, so based on the default process when lead is qualified it will create a contact record with the value of these fields (We can write a plug-in to stop creating contact record if required)
Figure 1: Qualify
Requirement: We need to fill First Name and Last Name based on the Existing Contact lookup.
Solution: Existing Contact field is placed on the business process flow and logical name of the field is parentcontactid. We can write a quick script with the help of OData endpoints to get selected contact firstname and lastname and set it on the lead record. To call our script we need to place this field on lead form first. The following are the steps to implement this solution:
- Create custom solution or open default solution by navigating Settings, Customizations, then Customize the system,
- Add a new script web resource and upload SDK.REST.js library like the following. This library comes with CRM SDK, you can find it under:
\SampleCode\JS\RESTEndpoint\JavaScriptRESTDataOperations\JavaScriptRESTDataOperations\Scripts
Note: If you have not downloaded CRM SDK, then first download it from here and then extract it.
Figure 2: CRM
- Create another Java Script web resource and let’s name it Lead.js, we need to place the following code under Text Editor:
- function ParentContactId_OnChange()
- {
- if (Xrm.Page.getAttribute("parentcontactid") != null)
- {
- var ContactId = Xrm.Page.getAttribute("parentcontactid").getValue()[0].id;
-
- SDK.REST.retrieveRecord(
- ContactId,
- "Contact",
- null, null,
-
- function(contact)
- {
-
- Xrm.Page.getAttribute("firstname").setValue(contact.FirstName);
- Xrm.Page.getAttribute("lastname").setValue(contact.LastName);
- Xrm.Page.getAttribute("fullname").setValue(contact.FirstName + " " + contact.LastName);
-
- },
-
- function Error()
- {
- alert("There is error in reading contact data");
- });
- }
- }
- Save and close web resource
- Double click on Lead form to open form editor by navigating Lead->Forms->Lead, under your solution, and drag and drop Parent Contact for lead field on lead form from Field Explorer
Figure 3: Explore
- Double click on this field now and add our both the web resources and bind on change event using the following steps in below screen:
Figure 4: Display
- Click on Display tab and uncheck the following option, to hide our lookup field from lead form.
Figure 5: Lookup
- Click on Publish All Customizations to publish all the changes.
Now when we will select Existing Contact it will auto populate
Name field.
Figure 6: Name