Reserved de-dupe rulesAdding value conditions to dedupe rulesCreate new contacts every time someone makes a contribution ( with duplicate emails )Deduping organizationsWhat are the Attributes for the Reserved DeDupe RulesContact Dedupe BasicsCivi duplicate rules with respect to email & primary versus location typeEmployer on Profile - MismatchingDedupe Rules to import contacts without email addresses *UPDATE*Import Contacts with dedupe rulesUnsupervised reserved rule for individuals not working
What is the intuition behind short exact sequences of groups; in particular, what is the intuition behind group extensions?
How much of data wrangling is a data scientist's job?
Is it possible to create light that imparts a greater proportion of its energy as momentum rather than heat?
90's TV series where a boy goes to another dimension through portal near power lines
Why doesn't H₄O²⁺ exist?
How is it possible to have an ability score that is less than 3?
Why does Kotter return in Welcome Back Kotter?
Do I have a twin with permutated remainders?
Why are electrically insulating heatsinks so rare? Is it just cost?
I Accidentally Deleted a Stock Terminal Theme
Were any external disk drives stacked vertically?
Doing something right before you need it - expression for this?
Alternative to sending password over mail?
Would Slavery Reparations be considered Bills of Attainder and hence Illegal?
What killed these X2 caps?
Fully-Firstable Anagram Sets
Is it inappropriate for a student to attend their mentor's dissertation defense?
Is it unprofessional to ask if a job posting on GlassDoor is real?
Has there ever been an airliner design involving reducing generator load by installing solar panels?
Arrow those variables!
What about the virus in 12 Monkeys?
Why do bosons tend to occupy the same state?
How can I make my BBEG immortal short of making them a Lich or Vampire?
Took a trip to a parallel universe, need help deciphering
Reserved de-dupe rules
Adding value conditions to dedupe rulesCreate new contacts every time someone makes a contribution ( with duplicate emails )Deduping organizationsWhat are the Attributes for the Reserved DeDupe RulesContact Dedupe BasicsCivi duplicate rules with respect to email & primary versus location typeEmployer on Profile - MismatchingDedupe Rules to import contacts without email addresses *UPDATE*Import Contacts with dedupe rulesUnsupervised reserved rule for individuals not working
I'm wanting to refine the de-duping rules, but first of all I'd like to find out exactly what the predefined rules are before I create my own. They are reserved, so you can't edit them, which is fine, but it only tells you which fields they use and not what the weights and thresholds are so the full behaviour is not clear.
duplicate-contacts
add a comment |
I'm wanting to refine the de-duping rules, but first of all I'd like to find out exactly what the predefined rules are before I create my own. They are reserved, so you can't edit them, which is fine, but it only tells you which fields they use and not what the weights and thresholds are so the full behaviour is not clear.
duplicate-contacts
add a comment |
I'm wanting to refine the de-duping rules, but first of all I'd like to find out exactly what the predefined rules are before I create my own. They are reserved, so you can't edit them, which is fine, but it only tells you which fields they use and not what the weights and thresholds are so the full behaviour is not clear.
duplicate-contacts
I'm wanting to refine the de-duping rules, but first of all I'd like to find out exactly what the predefined rules are before I create my own. They are reserved, so you can't edit them, which is fine, but it only tells you which fields they use and not what the weights and thresholds are so the full behaviour is not clear.
duplicate-contacts
duplicate-contacts
asked 12 hours ago
Mick KahnMick Kahn
641216
641216
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
If you have access to the database type
SELECT * from civicrm_dedupe_rule r inner join civicrm_dedupe_rule_group rg on rg.id = r.dedupe_rule_group_id;
which will give you a table which isn't pretty but is mostly understandable.
Ah you're right. I'll update answer.
– Demerit
11 hours ago
Thanks that tells me what I need, so I have deleted my earlier comment on your previous version of the answer
– Mick Kahn
9 hours ago
add a comment |
Using Demerit's correct and useful answer above, here are the details in plain text of the three pre-configured rules that you can't see by the normal method, so may be of use to others:
Name and Email (reserved): Supervised: Individual
First Name: Length "null", Weight 5
Last Name: Length "null", Weight 7
Email: Length "null", Weight 10
Threshold 20
Email (reserved): Unsupervised: Individual
Email: Length "null", Weight 10
Threshold 20
Name and Address (reserved): General: Individual
First Name: Length "null", Weight 5
Last Name: Length "null", Weight 5
Street Address: Length "null", Weight 5
Middle Name: Length "null", Weight 1
Suffix: Length "null", Weight 1
Threshold: 15
1
Not blaming you at all but some of those look a bit nuts. Is it possible you mis-copied the Email Unsupervised? Having Email = 10 and Threshold = 20 does not seem healthy. I do not see that on a site i just checked. The Threshold was set to 10.
– petednz - fuzion♦
7 hours ago
1
For the Name and Address (which I do see the same on a db i just checked) have Middle Name = 1 and Suffix = 1 for a Threshold of 15 seems pointless as they will never play a role in determining someone is a match will they?
– petednz - fuzion♦
7 hours ago
add a comment |
Demerit's and Mick's answers are incorrect for the (built-in) reserved rules - though it's definitely confusing!
If a RuleGroup has a value in the name
field, and that name corresponds to a filename in CRM/Dedupe/BAO/QueryBuilder, then the customized SQL in those files will be used. The existing entries in civicrm_rule
for those RuleGroups are holdovers from before that system existed, and editing them has no effect.
"Standard" dedupe rules with multiple criteria are very inefficient compared to handwritten SQL, which is why this is a valuable technique. You can create your own handwritten queries with hook_civicrm_dedupe, and the Veda dedupe extension has a number of excellent examples. Note that this extension doesn't work on modern Civi because of some of its other functions, but the dedupe rules can be ripped out into something else.
Finally - I learned just yesterday that the built-in handwritten dedupe rules seem to execute different SQL when comparing in Unsupervised/Supervised mode (a single contact) vs. General mode (find all dupes). While I haven't proved it, I suspect that if you're in the rare scenario of needing to optimize your unsupervised/supervised dedupes, creating a new class to extend CRM_Dedupe_BAO_QueryBuilder
is the way to go. I just posted org.agbu.optimizeddedupe to provide an example of this.
Thanks. Good lord...
– Demerit
1 hour ago
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "605"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcivicrm.stackexchange.com%2fquestions%2f29155%2freserved-de-dupe-rules%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you have access to the database type
SELECT * from civicrm_dedupe_rule r inner join civicrm_dedupe_rule_group rg on rg.id = r.dedupe_rule_group_id;
which will give you a table which isn't pretty but is mostly understandable.
Ah you're right. I'll update answer.
– Demerit
11 hours ago
Thanks that tells me what I need, so I have deleted my earlier comment on your previous version of the answer
– Mick Kahn
9 hours ago
add a comment |
If you have access to the database type
SELECT * from civicrm_dedupe_rule r inner join civicrm_dedupe_rule_group rg on rg.id = r.dedupe_rule_group_id;
which will give you a table which isn't pretty but is mostly understandable.
Ah you're right. I'll update answer.
– Demerit
11 hours ago
Thanks that tells me what I need, so I have deleted my earlier comment on your previous version of the answer
– Mick Kahn
9 hours ago
add a comment |
If you have access to the database type
SELECT * from civicrm_dedupe_rule r inner join civicrm_dedupe_rule_group rg on rg.id = r.dedupe_rule_group_id;
which will give you a table which isn't pretty but is mostly understandable.
If you have access to the database type
SELECT * from civicrm_dedupe_rule r inner join civicrm_dedupe_rule_group rg on rg.id = r.dedupe_rule_group_id;
which will give you a table which isn't pretty but is mostly understandable.
edited 11 hours ago
answered 12 hours ago
DemeritDemerit
4,0662621
4,0662621
Ah you're right. I'll update answer.
– Demerit
11 hours ago
Thanks that tells me what I need, so I have deleted my earlier comment on your previous version of the answer
– Mick Kahn
9 hours ago
add a comment |
Ah you're right. I'll update answer.
– Demerit
11 hours ago
Thanks that tells me what I need, so I have deleted my earlier comment on your previous version of the answer
– Mick Kahn
9 hours ago
Ah you're right. I'll update answer.
– Demerit
11 hours ago
Ah you're right. I'll update answer.
– Demerit
11 hours ago
Thanks that tells me what I need, so I have deleted my earlier comment on your previous version of the answer
– Mick Kahn
9 hours ago
Thanks that tells me what I need, so I have deleted my earlier comment on your previous version of the answer
– Mick Kahn
9 hours ago
add a comment |
Using Demerit's correct and useful answer above, here are the details in plain text of the three pre-configured rules that you can't see by the normal method, so may be of use to others:
Name and Email (reserved): Supervised: Individual
First Name: Length "null", Weight 5
Last Name: Length "null", Weight 7
Email: Length "null", Weight 10
Threshold 20
Email (reserved): Unsupervised: Individual
Email: Length "null", Weight 10
Threshold 20
Name and Address (reserved): General: Individual
First Name: Length "null", Weight 5
Last Name: Length "null", Weight 5
Street Address: Length "null", Weight 5
Middle Name: Length "null", Weight 1
Suffix: Length "null", Weight 1
Threshold: 15
1
Not blaming you at all but some of those look a bit nuts. Is it possible you mis-copied the Email Unsupervised? Having Email = 10 and Threshold = 20 does not seem healthy. I do not see that on a site i just checked. The Threshold was set to 10.
– petednz - fuzion♦
7 hours ago
1
For the Name and Address (which I do see the same on a db i just checked) have Middle Name = 1 and Suffix = 1 for a Threshold of 15 seems pointless as they will never play a role in determining someone is a match will they?
– petednz - fuzion♦
7 hours ago
add a comment |
Using Demerit's correct and useful answer above, here are the details in plain text of the three pre-configured rules that you can't see by the normal method, so may be of use to others:
Name and Email (reserved): Supervised: Individual
First Name: Length "null", Weight 5
Last Name: Length "null", Weight 7
Email: Length "null", Weight 10
Threshold 20
Email (reserved): Unsupervised: Individual
Email: Length "null", Weight 10
Threshold 20
Name and Address (reserved): General: Individual
First Name: Length "null", Weight 5
Last Name: Length "null", Weight 5
Street Address: Length "null", Weight 5
Middle Name: Length "null", Weight 1
Suffix: Length "null", Weight 1
Threshold: 15
1
Not blaming you at all but some of those look a bit nuts. Is it possible you mis-copied the Email Unsupervised? Having Email = 10 and Threshold = 20 does not seem healthy. I do not see that on a site i just checked. The Threshold was set to 10.
– petednz - fuzion♦
7 hours ago
1
For the Name and Address (which I do see the same on a db i just checked) have Middle Name = 1 and Suffix = 1 for a Threshold of 15 seems pointless as they will never play a role in determining someone is a match will they?
– petednz - fuzion♦
7 hours ago
add a comment |
Using Demerit's correct and useful answer above, here are the details in plain text of the three pre-configured rules that you can't see by the normal method, so may be of use to others:
Name and Email (reserved): Supervised: Individual
First Name: Length "null", Weight 5
Last Name: Length "null", Weight 7
Email: Length "null", Weight 10
Threshold 20
Email (reserved): Unsupervised: Individual
Email: Length "null", Weight 10
Threshold 20
Name and Address (reserved): General: Individual
First Name: Length "null", Weight 5
Last Name: Length "null", Weight 5
Street Address: Length "null", Weight 5
Middle Name: Length "null", Weight 1
Suffix: Length "null", Weight 1
Threshold: 15
Using Demerit's correct and useful answer above, here are the details in plain text of the three pre-configured rules that you can't see by the normal method, so may be of use to others:
Name and Email (reserved): Supervised: Individual
First Name: Length "null", Weight 5
Last Name: Length "null", Weight 7
Email: Length "null", Weight 10
Threshold 20
Email (reserved): Unsupervised: Individual
Email: Length "null", Weight 10
Threshold 20
Name and Address (reserved): General: Individual
First Name: Length "null", Weight 5
Last Name: Length "null", Weight 5
Street Address: Length "null", Weight 5
Middle Name: Length "null", Weight 1
Suffix: Length "null", Weight 1
Threshold: 15
answered 9 hours ago
Mick KahnMick Kahn
641216
641216
1
Not blaming you at all but some of those look a bit nuts. Is it possible you mis-copied the Email Unsupervised? Having Email = 10 and Threshold = 20 does not seem healthy. I do not see that on a site i just checked. The Threshold was set to 10.
– petednz - fuzion♦
7 hours ago
1
For the Name and Address (which I do see the same on a db i just checked) have Middle Name = 1 and Suffix = 1 for a Threshold of 15 seems pointless as they will never play a role in determining someone is a match will they?
– petednz - fuzion♦
7 hours ago
add a comment |
1
Not blaming you at all but some of those look a bit nuts. Is it possible you mis-copied the Email Unsupervised? Having Email = 10 and Threshold = 20 does not seem healthy. I do not see that on a site i just checked. The Threshold was set to 10.
– petednz - fuzion♦
7 hours ago
1
For the Name and Address (which I do see the same on a db i just checked) have Middle Name = 1 and Suffix = 1 for a Threshold of 15 seems pointless as they will never play a role in determining someone is a match will they?
– petednz - fuzion♦
7 hours ago
1
1
Not blaming you at all but some of those look a bit nuts. Is it possible you mis-copied the Email Unsupervised? Having Email = 10 and Threshold = 20 does not seem healthy. I do not see that on a site i just checked. The Threshold was set to 10.
– petednz - fuzion♦
7 hours ago
Not blaming you at all but some of those look a bit nuts. Is it possible you mis-copied the Email Unsupervised? Having Email = 10 and Threshold = 20 does not seem healthy. I do not see that on a site i just checked. The Threshold was set to 10.
– petednz - fuzion♦
7 hours ago
1
1
For the Name and Address (which I do see the same on a db i just checked) have Middle Name = 1 and Suffix = 1 for a Threshold of 15 seems pointless as they will never play a role in determining someone is a match will they?
– petednz - fuzion♦
7 hours ago
For the Name and Address (which I do see the same on a db i just checked) have Middle Name = 1 and Suffix = 1 for a Threshold of 15 seems pointless as they will never play a role in determining someone is a match will they?
– petednz - fuzion♦
7 hours ago
add a comment |
Demerit's and Mick's answers are incorrect for the (built-in) reserved rules - though it's definitely confusing!
If a RuleGroup has a value in the name
field, and that name corresponds to a filename in CRM/Dedupe/BAO/QueryBuilder, then the customized SQL in those files will be used. The existing entries in civicrm_rule
for those RuleGroups are holdovers from before that system existed, and editing them has no effect.
"Standard" dedupe rules with multiple criteria are very inefficient compared to handwritten SQL, which is why this is a valuable technique. You can create your own handwritten queries with hook_civicrm_dedupe, and the Veda dedupe extension has a number of excellent examples. Note that this extension doesn't work on modern Civi because of some of its other functions, but the dedupe rules can be ripped out into something else.
Finally - I learned just yesterday that the built-in handwritten dedupe rules seem to execute different SQL when comparing in Unsupervised/Supervised mode (a single contact) vs. General mode (find all dupes). While I haven't proved it, I suspect that if you're in the rare scenario of needing to optimize your unsupervised/supervised dedupes, creating a new class to extend CRM_Dedupe_BAO_QueryBuilder
is the way to go. I just posted org.agbu.optimizeddedupe to provide an example of this.
Thanks. Good lord...
– Demerit
1 hour ago
add a comment |
Demerit's and Mick's answers are incorrect for the (built-in) reserved rules - though it's definitely confusing!
If a RuleGroup has a value in the name
field, and that name corresponds to a filename in CRM/Dedupe/BAO/QueryBuilder, then the customized SQL in those files will be used. The existing entries in civicrm_rule
for those RuleGroups are holdovers from before that system existed, and editing them has no effect.
"Standard" dedupe rules with multiple criteria are very inefficient compared to handwritten SQL, which is why this is a valuable technique. You can create your own handwritten queries with hook_civicrm_dedupe, and the Veda dedupe extension has a number of excellent examples. Note that this extension doesn't work on modern Civi because of some of its other functions, but the dedupe rules can be ripped out into something else.
Finally - I learned just yesterday that the built-in handwritten dedupe rules seem to execute different SQL when comparing in Unsupervised/Supervised mode (a single contact) vs. General mode (find all dupes). While I haven't proved it, I suspect that if you're in the rare scenario of needing to optimize your unsupervised/supervised dedupes, creating a new class to extend CRM_Dedupe_BAO_QueryBuilder
is the way to go. I just posted org.agbu.optimizeddedupe to provide an example of this.
Thanks. Good lord...
– Demerit
1 hour ago
add a comment |
Demerit's and Mick's answers are incorrect for the (built-in) reserved rules - though it's definitely confusing!
If a RuleGroup has a value in the name
field, and that name corresponds to a filename in CRM/Dedupe/BAO/QueryBuilder, then the customized SQL in those files will be used. The existing entries in civicrm_rule
for those RuleGroups are holdovers from before that system existed, and editing them has no effect.
"Standard" dedupe rules with multiple criteria are very inefficient compared to handwritten SQL, which is why this is a valuable technique. You can create your own handwritten queries with hook_civicrm_dedupe, and the Veda dedupe extension has a number of excellent examples. Note that this extension doesn't work on modern Civi because of some of its other functions, but the dedupe rules can be ripped out into something else.
Finally - I learned just yesterday that the built-in handwritten dedupe rules seem to execute different SQL when comparing in Unsupervised/Supervised mode (a single contact) vs. General mode (find all dupes). While I haven't proved it, I suspect that if you're in the rare scenario of needing to optimize your unsupervised/supervised dedupes, creating a new class to extend CRM_Dedupe_BAO_QueryBuilder
is the way to go. I just posted org.agbu.optimizeddedupe to provide an example of this.
Demerit's and Mick's answers are incorrect for the (built-in) reserved rules - though it's definitely confusing!
If a RuleGroup has a value in the name
field, and that name corresponds to a filename in CRM/Dedupe/BAO/QueryBuilder, then the customized SQL in those files will be used. The existing entries in civicrm_rule
for those RuleGroups are holdovers from before that system existed, and editing them has no effect.
"Standard" dedupe rules with multiple criteria are very inefficient compared to handwritten SQL, which is why this is a valuable technique. You can create your own handwritten queries with hook_civicrm_dedupe, and the Veda dedupe extension has a number of excellent examples. Note that this extension doesn't work on modern Civi because of some of its other functions, but the dedupe rules can be ripped out into something else.
Finally - I learned just yesterday that the built-in handwritten dedupe rules seem to execute different SQL when comparing in Unsupervised/Supervised mode (a single contact) vs. General mode (find all dupes). While I haven't proved it, I suspect that if you're in the rare scenario of needing to optimize your unsupervised/supervised dedupes, creating a new class to extend CRM_Dedupe_BAO_QueryBuilder
is the way to go. I just posted org.agbu.optimizeddedupe to provide an example of this.
answered 3 hours ago
Jon G - Megaphone TechJon G - Megaphone Tech
27.5k11872
27.5k11872
Thanks. Good lord...
– Demerit
1 hour ago
add a comment |
Thanks. Good lord...
– Demerit
1 hour ago
Thanks. Good lord...
– Demerit
1 hour ago
Thanks. Good lord...
– Demerit
1 hour ago
add a comment |
Thanks for contributing an answer to CiviCRM Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcivicrm.stackexchange.com%2fquestions%2f29155%2freserved-de-dupe-rules%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown