About CRM Duplicates Real Time Search


CRM Duplicates Real Time search is an Odoo partner and opportunities management tool. The app helps to prevent the appearance of contacts and opportunities duplicates or to expose them. The tool can detect that the contact or an opportunity has a duplicate when you create or observe a record, as the app searches for similarities in real time. 

Flexibly set the criteria to find duplicates, and strictly forbid saving the same contact/opportunity or warn about the existence of a similar one. As duplicate criteria use any stored field of the following types: char, text, many2one, selection, date and datetime, integer, and float. 

The multi-company mode is supported and the settings are applied to each company separately.

If you want to find duplicates only among contacts and don't need to search for the CRM duplicates, or if you don't have the CRM app installed in your Odoo database, then consider the app Contacts Duplicates Real Time search, which searches for only contacts duplicates.

Real-time search

Duplicates detection by storable fields

Configurable duplicates criteria

Soft and rigid duplicates



Soft and rigid duplicates


Duplicates are defined according to the rules which you set up. A rule is a field according to which an item is considered a copy. For example, an email or a name. A partner or an opportunity is considered a duplicate if it satisfies any of the criteria. Any field or combination of fields on the contact's/opportunity's card can be considered to distinguish whether a contact/an opportunity is unique or a duplicate.

The tool lets you both strictly avoid duplicates and/or just warn of those according to the set rules. Use rigid criteria to fully exclude duplicate creation. Use soft criteria to only notify Odoo users of possible duplicates. The rules for partners and opportunities are applied separately. 

For all fields, a duplicate should have absolutely the same value. For example, '123' equals '123', but '123' is not equal '1234'. Only for the case of soft search by char fields, the operator is 'ilike'. Thus, 'agro' is considered to be a potential duplicate of 'Agrolait' (but Agrolait is not considered a duplicate of 'agro').

You can set the soft and/or rigid criteria in Settings > CRM > 'CRM Duplicates'. If you choose one and the same field as both rigid and soft criteria, then the rigid criteria will dominate and you will not be able to save this record with the same value in the field.

After setting soft criteria you will see a mark 'N potential duplicates' and the button 'N Duplicates' on the object's card.


After setting rigid criteria, the tool will not let to save a contact/opportunity with the same value in chosen rigid fields. If you try to save such a record, a pop-up warning appears. The warning shows the titles of all detected duplicates, their unique ID, and matching fields. That allows you to find a duplicate easily, or to change the value in the matching fields of the currently created record in order to save it.




Configurable duplicates criteria


To configure the search settings go to Settings > CRM and scroll down to the section 'CRM Duplicates'. Here you will find the rules to detect records' copies.

A rule is a field, which serves as a search criterion in order to find duplicates. Only the chosen search criteria fields will be checked for matches.

To set the criteria to define contacts/opportunities duplicates:

1. Click on one of the buttons 'click to configure duplicates criteria' in one of the sections 'Soft Duplicates Criteria', 'Rigid Duplicates Criteria' related to contacts or leads and opportunities

2. Choose one of the stored fields from the list, or click 'Search more' to see the full fields' list

You can set up both rigid and soft search criteria or choose only one of them (see Soft and rigid duplicates).


As a rule/duplicate criteria use any stored field of the following types:

1. Char (name, email, phone, mobile, etc.)

2. Text (descriptions)

3. Many2one (reference for a parent company or a related customer)

4. Selection (for instance, type)

5. Date and datetime (e.g. birthday)

6. Integer and float (any unique code or even planned revenue)  

If you added the same rule, for example, 'Email', in both soft and rigid fields, then the rigid search criteria will dominate and you will not be able to save a contact/lead/opportunity with identical value in the field.


Configurable contacts' duplicates criteria

To configure Contacts' rigid/soft search criteria:

1. Go to Settings > CRM and scroll down to the section 'CRM Duplicates'

2. If you want Odoo to let you save potentially the same contacts, then select such criteria in 'Contacts Duplicates' > 'Soft Duplicates Criteria'

3. Choose fields that must be different in 'Contacts Duplicates' > 'Rigid Duplicates Criteria', for example, phone or email, and a second contact with the same value will be impossible to save


Restrict the contacts duplicates search only for companies and stand-alone individuals. If the option is checked, Odoo will search only for and only among customers without parent contact. For example, if you have 200 contacts that are divided between 15 parent companies and 50 more individuals' contacts, then the system will check only for matches in the preset fields among 65 contacts. Each contact will be compared with the other 64. That will reduce the number of contacts to check and therefore will shorten the duplicate search time and minimize the performance issues (see Performance issues).



The module supports multi companies and duplicates are searched within a certain company. However, the duplicate search settings are applied to all companies on the platform at once.

There might be equal contacts related to different Odoo companies and they will not be considered as duplicates.

Configurable opportunities' duplicates criteria

To configure Opportunities' rigid/soft search criteria:

1. Go to Settings > CRM and scroll down to the section 'CRM Duplicates'

2. If you want Odoo to let you save potentially the same opportunities, then select such criteria in the field 'Leads and Opportunities Duplicates' > 'Soft Duplicates Criteria'

3. Choose fields that must be different in 'Leads and Opportunities Duplicates' > 'Rigid Duplicates Criteria', for example, partner's name, website, or phone, and a second opportunity with the same value will be impossible to save

Optionally you can choose to search duplicates only among opportunities or leads. For that, tick one of the options: 

1. 'Consider only opportunities as duplicates' to search for duplicates only for and among opportunities. Leads will not be taken into account

2. 'Consider only leads as duplicates' to search for duplicates only for and among leads. Opportunities will not be taken into account.

It isn't possible to tick both options at once. In case you need to search for duplicates in both opportunities and leads, then you should leave both options disabled.




Soft duplicates managing and merging


See the duplicates from the list view and kanban view. In the list view click on the three dots and then tick 'Duplicates count' to see the column with the number of duplicates to each contact/opportunity.

You can also filter contacts/opportunities by potential duplicates, for that click on the 'Filters' above the Contacts/Pipeline and choose 'Potential Duplicates'.


Optionally, you can turn off the calculation of the number of soft duplicates when opening a kanban, tree, or form view. It is particularly useful when you need to speed up the views loading since the app will not calculate potential duplicates for each shown record. The search filter is not influenced by the setting.

To turn off the soft duplicates count in kanban and tree view:

1. Go to Settings > CRM and scroll down to the section 'CRM Duplicates'

2. Tick the option 'Do not show soft CRM duplicates count (tree and kanban view)'

3. Click 'Save' in the top left corner

To turn off the soft duplicates count in form view:

1. Go to Settings > CRM and scroll down to the section 'CRM Duplicates'

2. Tick the option 'Do not show soft CRM duplicates count (form view button)'

3. Click 'Save' in the top left corner


Merging contacts

Based on duplicates found you can merge contacts based on Odoo standard partner merging tools. To that end:

1. Click on the line 'N Potential duplicates' or on the button 'N Duplicates', where N is the number of found duplicates, in the contact's card to see its duplicates and similar fields

2. Choose duplicate records

3. Choose the destination contact

4. Click on a contact to open its card and see details before merging

5. Click 'Add a line' to add one more contact for merging

6. Click 'Merge'.



Merging opportunities

Based on duplicates found you can merge opportunities based on Odoo standard partner merging tools. To that end:

1. Click on the line 'N Potential duplicates' or on a button 'N Duplicates', where N is a number of found duplicates, in the opportunity's card to see its duplicates and similar fields

2. Choose duplicate records

3. Choose a salesperson and a sales team that will be assigned to the resulting opportunity

3. Click on an opportunity to open its card and see details before merging

4. Click 'Add a line' to add one more opportunity for merging

5. Click 'Merge'.





Performance issues


The tool is optimized to make searches as efficient as Odoo ORM allows it. Simultaneously, with a growing number of documents, a search will become slower. Since the search is done in real-time Odoo has to check all shown records for duplicates among all existing records.

For example, when you open opportunities' kanban with 80 items, and you have 10,000 leads, the tool makes 80 searches by your criteria among 10000 documents.

It may result in slowdowns of the following operations:

1. Opening kanban and list views of Odoo contacts/opportunities. To avoid that, you may turn off showing the counter for a corresponding view.

2. Saving changes after the update of partners/leads. To avoid that, you can assign only soft parameters and neglect rigid ones.