Check for Duplicate Records
You can create a workflow to filter the creation of duplicate records for entities that are available in OData. This functionality can be achieved through the ExecuteODataQuery<> activity.
Business Scenario
An institution wants to prevent the creation of new leads as lead records are already available in the database. The filter criteria to check for a duplicate lead can be:
- Firstname and lastname and email and mobile
 — OR —
- Firstname and lastname and email
 — OR —
- Firstname and lastname and mobile
 — OR —
- Email and mobile
Create a Workflow With the Above Logic
- 
                                                        Declare the following variables in the order in which they are specified and include their indicated values: Variable Type Scope Value baseODataUrl String Sequence https://<Forms Builder Renderer URL>/api/ApiProxy/CRM/ dupCheckEntity String Sequence "Leads?" Note: For a different object, replace this string with the name of the object as it appears in OData. oDataSelectClause String Sequence "$select=LeadId" Note: For a different object, replace this value with the identifier of the object. firstCondition (First condition in the business scenario) String Sequence "FirstName eq '" & lead.FirstName & "' and LastName eq '" & lead.LastName & "' and Email eq '" & lead.Email & "' and Mobile eq '"& lead.Mobile & "' " secondCondition (Second condition in the business scenario) String Sequence "FirstName eq '" & lead.FirstName & "' and LastName eq '" & lead.LastName & "' and Email eq '" & lead.Email & "' " thirdCondition (Third condition in the business scenario) String Sequence "FirstName eq '" & lead.FirstName & "' and LastName eq '" & lead.LastName & "' and Mobile eq '" & lead.Mobile & "' " fourthCondition (Fourth condition in the business scenario) String Sequence "Email eq '" & lead.Email & "' and Mobile eq '" & lead.Mobile & "' " oDataFilterClause (Collates all the filter conditions) String Sequence "$filter=(" & firstCondition & " or " & secondCondition & " or " & thirdCondition & " or " & fourthCondition & ")" oDataOrderbyClause (Will list the most recently created duplicate lead record) String Sequence "$orderby=CreatedOn desc" segmentTerminator String Sequence "&" oDataQuery (Finally constructed OData query) String Sequence baseODataUrl & dupCheckEntity & oDataSelectClause & segmentTerminator & oDataFilterClause & segmentTerminator & oDataOrderbyClause Note: Highlighted elements must be replaced appropriately if the base object is not Lead. 
- 
                                                        Add the CreateEntity<Lead> activity in the Entry section. 
- 
                                                        Declare a Boolean variable (for example, Duplead) and set its default value to False. 
- 
                                                        In the Transition(s) section, click Next and add the ExecuteODataQuery<Lead> activity. 
- 
                                                        In the OData Query field, type oDataQuery. 
- 
                                                        Add a Sequence to the ExecuteODataQuery<Lead> activity which includes logic to identify if a duplicate lead is found. For example:   
- 
                                                        Include an If condition with the following logic: - 
                                                                If the value of the Duplead flag is unchanged, a new Lead record will be created. 
- 
                                                                If a duplicate lead is found, the value of the Duplead flag will be changed to True and the included validation message “Lead already exists” will be displayed. 
 For example:   
- 
                                                                
