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.

.....

5 comments:

  1. Great blog and quite needed functionality. Always current content. Thanks Amreek

    ReplyDelete
  2. the new link of the lookup field (bottom right) is redirecting to contact form instead of Account...
    any pointer to restrict it only for account form...

    ReplyDelete
    Replies
    1. one thing I did was create a new field that only deals with accounts, and hid the customerid field and anytime someone entered into the new field it would update the customerid field behind the scenes. If you found another soultion, I would like to hear!

      Delete