Search code examples
dynamics-crmmicrosoft-dynamicsdynamics-365

Lookup Filter in Business Process flow


I try to change the lookup filter for the field "Existing Contact?" (in the Lead process flow) but I cannot access the property of this field.

enter image description here


Solution

  • Unfortunately BPF fields property window is not accessible and lookup field property cannot be customized the same way we do any other lookup in form sections.

    But there is a way, we can use Javascript to apply the lookup filter using addPreSearch method. This is totally supported. Read more

    function filterBpfLookup = function(formContext){
        if (formContext.getControl("header_process_mag_contactlookupid") != null){
            formContext.getControl("header_process_mag_contactlookupid").addPreSearch(filterDefinition);
        }
    }
    
    function filterDefinition = function(formContext) {
         var accountId = null;
         var accountLookup;
         var filterBpf;
    
         if (formContext.getControl("header_process_mag_contactlookupid") != null &&
         formContext.getControl("header_process_mag_contactlookupid").getAttribute().getValue() !=  null){
             accountLookup = formContext.getControl("header_process_mag_accountlookupid").getAttribute().getValue();
             accountId = accountLookup[0].id;
    
             if (accountId != null || accountId != undefined){
                 filterBpf = "<filter type='and'>" + 
                 "<condition attribute='mag_accountlookupid' operator='eq' value='" + accountId + "' />" +
                 "</filter>";
    
                 formContext.getControl("header_process_mag_contactlookupid").addCustomFilter(filterBpf);
             }
         }
     }