Wednesday, July 15, 2015

Restrict customer lookup to select a specific entity records in CRM 2013/2015

A few years ago, I wrote a blog addCustomFilter method for lookup control in CRM2013. Some of the readers asked if “addCustomFilter” can be used to restrict/default the customer lookup to a specific entity. The answer to the question is that you can restrict the customer lookup to return the results for a specific entity, but you can’t default it to the contact entity.
Here is an example on how to restrict the customer lookup on the case entity to display contact records. I am using the same code that I have used in my original blog with a few changes.

Code

 function addEventHandler() {  
   // add the event handler for PreSearch Event  
   Xrm.Page.getControl("customerid").addPreSearch(addFilter);  
 }  
 function addFilter() {  
   //create a filter xml  
    var filter ="<filter type='and'>" +  
            "<condition attribute='accountid' operator='null'/>" +  
            "</filter>";   
     //apply the filter  
     Xrm.Page.getControl("customerid").addCustomFilter(filter,"account");  
 }  


In the above code, I am using the filter where accountid is null and applying it to the account entity. The account record will always have an accountid, therefore no account records will be returned.

Results

The following screen shot displays the customer lookup returning only contact records.
image

If the user clicks on the “Look Up More Records”, CRM will display the following screen.
image

The customer lookup does not return any account records as shown in the screen shot above.
The user can change the “Look for” entity to contact and choose the contact record.

.....