Skip to main content

#Duplicates0 discutindo

I created and activatted the following new account "matching rule" based on the account's shipping address, not the billing address:

 

(Account: Name > FUZZY: COMPANY NAME MatchBlank = FALSE) AND 

(Account: ShippingStreet > FUZZY: STREET MatchBlank = FALSE) AND 

(Account: ShippingState > EXACT MatchBlank = FALSE)

 

However, when I updated the Account Duplicate Rule to this new Matching Rule, accounts that match this rule are not triggering the "duplicate warning"

 

What am I missing? Any help or insight would be greatly appreciaited!

Creating a New Duplicate Account Matching Rule

 

#Sales Cloud  #Salesforce Developer  #Data Management  #Automation #Duplicates #Duplicate Rules #Matching Rules

6 respostas
  1. 17 de nov. de 2023, 15:34

    @Courtney Pazdra - I tested this in a demo org and the logic fired as expected on edit and on save of new record attempt. When you say it's not firing, are you making any changes to the source records to fire the rules since standard dupe rules only fire on a change or save event.

     

    Again worth calling out though is that fuzzy match on street is going to be tricky since there are several components to the open text nature that could trigger the potential match. It may be worth parsing the street value into unique attributes for evaluation rather than as a whole.

     

    Another option would be to force the users to use the Google address input rather than manual entry so it's harder to enter bad data. 

     

    Let me know if anything changes or if you want to jump on a screenshare to experiment together.

0/9000

The Classic version has a tool to merge contacts and accounts. This was super easy. The feature does not appear to be available in Lightning. Is there a way, in the Lightning version, to "easily" merge duplicate contacts and accounts?

 

I can't seem to find one. It's weird that it provides tools to find duplicates, but not to resolve them.

 

#Account Merge  #Merge Contacts  #Duplicates

4 respostas
  1. 13 de fev. de 2025, 18:29

    Hi Julie, honestly, I just gave up on this. It seems like such an important feature for maintaining your accounts and contacts, but Salesforce doesn’t seem to think so.

    Regards,

    Michael Rennie | Business Development

    Maestro Technologies inc.

    M: 905.717.9335 | P: 888.833.7777 ext. 303

    mrennie@maestro.ca<mailto:mrennie@maestro.ca> | www.maestro.ca<http://www.maestro.ca/

    >

    [Maestro Logo 01]<

    http://www.maestro.ca/

    >

    Humanizing the Digital Transformation of the Canadian construction industry

    maestro* – Proudly made by Canadians for Canadian Construction Companies [cid:

    image002.png@01DB7E1B.8D2F5DB0]
0/9000

Hello,

 

We have a couple of matching and duplicate rules for the Lead and Account objects.

Regularly, I can see this message on top of a Lead record.

 

I know how to merge duplicates using Duplicate Record Sets but that's for duplicates I'm aware of.

 

Is there a way to identify all the records that are recognised as duplicates, i.e. the ones I haven't spotted yet?

 

What I found online is suggestions using a custom report but the report only shows me the duplicates I've already identified and merged, not the ones I don't know of. 

 

(PS: we're on the Enterprise edition.) #Duplicates #Duplicate Record

How to find duplicates from message

5 respostas
0/9000

Hello Team,

 

We are on reverse sync (no lead objects but only contact records in SF).

 

We have 2 duplicate scenarios;

 

1. When duplicate records are merged in Salesforce (same first name, last name, email address), they are merged in Pardot too. This is all good.

 

2. We have contact records with different first names and last names but they all share the same email address. This is a peer-to-peer fundraising scenario where Person A collects donations from 3 others (B, C, D) and updates all the donations under Person A's email address. What we currently do in Salesforce is, remove the email addresses from Person B, Person C, and Person D contact records and simply add them as a relationship type to Person A (Who has the original email address). This works well in Salesforce. However, in Pardot, the Person B, Person C, and Person D records still exist as orphan prospects (even though the opportunity is dissociated from their records).

 

What we like to happen in this scenario is when an email is removed from a SF contact, the prospect record gets deleted in Pardot too.

 

Please advise if there are any settings I can activate to achieve this outcome.

 

Thanks

#Pardot B2b Marketing Automation, #Duplicates

2 respostas
  1. 24 de nov. de 2023, 07:31

    Those prospects will get deleted automatically .  It will show CRM deleted in CRM contact id in pardot default field section. 

    steps you can follow -

    1)Those contacts needs to be deleted manually or you can. export all data , Filter  column name contact FID .  then upload the selected data to delete them .

    2) Create a dynamic list , In rules , choose,   CRM prospect status - Deleted .  after the list is populated delete them in bulk.

0/9000

Hi All, 

I am having some issues with my duplicate and matching rules.

I believe the matching rule that I am building to be quite basic it is performing a fuzzy match on the account name and an exact match on the phone number or email address. Both phone and email are also selected to match if blank.

 

(Account: NameFUZZY: COMPANY NAMEMatchBlank = FALSE) AND ((Account: PhoneEXACTMatchBlank = TRUE) OR (Account: Company_EmailEXACTMatchBlank = TRUE))

 

I have one example in my org where there are 4 accounts, all owned by the same account owner, all have roughly the same company name, give or take Ltd, Limited, Plc etc, 2 have a matching phone number and 2 have blank phone numbers and all 4 have blank email address.

 

When I am logged in as the account owner, the lighnting component tells me that there are potential duplicates but only shows the accounts with the phone numbers.

 

I can only assume this is user error on my part but I thought that selecting match on blanks would include these other accounts when offering potential duplicates.

Am i missing a selection somewhere or not executing this correctly?

 

any advice would be greatly appreciated.

many thanks

Laura

#Duplicates #Matching Rules #Duplicate Rules #Sales Cloud

1 resposta
  1. Steven Trumble (Strum Consulting) Forum Ambassador
    6 de nov. de 2023, 13:40

    If you select Match Blank Fields for a field and that field is blank in both records being compared, the fields are considered matches. However, if you select Match Blank Fields for a field and that field is blank in only one of the records being compared, the fields aren’t considered matches.

    https://help.salesforce.com/s/articleView?id=sf.matching_rule_matching_criteria.htm&type=5
0/9000

I've written an Apex class with methods that parse data out of a CSV file, create account and contact lists with custom fields used as external IDs, and upsert that data using the custom fields as the comparison for duplicates. However, Apex thinks the data in the contact list contains duplicates. I have confirmed in the file itself and via debug code (comparing against a set) that it does not, and I can see when I write debug code to only add the contact to the list if it is not already in the list that Apex thinks every record is a duplicate. 

 

I've written code to ensure and confirm that the list is empty before I start adding to it, I've edited the match rules so they only match on the external ID, and I've uninstalled Dupe Eliminator and Duplicate Check (installed by my predecessor) to be sure they aren't creating restrictions I can't access. Also, I've tried to check Apex triggers, but they are managed and can't be viewed/edited. We do have quite a few other packages/apps installed. Could these be the issue? Could it be a scope of the variable issue? Does anyone have any suggestions on what else might be the issue? 

 

I am including my code below with the caveat that it is pretty messy right now with all my debug code, comments, and variables for other methods in place. Below that code is a screenshot of the debug log starting at the beginning where you can see the first test for the contact existing in the list results in TRUE, before any other contact has been added to the list, and that there is no debug output for the code outputting

 

 any contacts already in the list before I start adding to it. Finally, I am also including a screenshot of our installed packages.

public class mkfa_ImportLegacyData {

//Create an affiliation, contact, and account list for those being manipulated by methods.

public static List<npe5__Affiliation__c> affiliationList = new List<npe5__Affiliation__c>();

public static List<Contact> contactList = new List<Contact>();

public static List<Account> accountList = new List<Account>();

//Create string lists for holding all data & 1 row from document

public static List<String> dataRecs = new List<String>();

public static List<String> fieldValues = new List<String>();

public static List<List<String>> parsedData = new List<List<String>>();

public static Boolean proceedFlag = true;

//Create a contact,account, affiliation, and IDs

public static Contact tempContact = new Contact();

public static VOID parseFileRecs(string docName){

//Get the file

final ContentVersion doc = [SELECT VersionData FROM ContentVersion WHERE Title = :docName AND IsLatest = true];

//******CSV file must be in UTF-8 format******

String bodyString = doc.VersionData.toString();

//Split the content into records by new line character

dataRecs = bodyString.split('\n');

//Debug code

//system.debug('Body of the document to import:'+bodyString);

//Iterate through the records in the file to create a list of recs, sans the header, each of which is a list of fields

for(Integer i=1;i<dataRecs.size();i++){

fieldValues = dataRecs[i].split(',');

parsedData.add(fieldValues);

}

}

public static VOID parseContactFields(String fileName){

//Make sure the contact list to upsert is empty.

contactList.clear();

/*Debug code to be sure contactList is empty. */

for (Contact thisContact : contactList){

System.debug(thisContact);

}

//Parse the data from the file

parseFileRecs(fileName);

proceedFlag = true;

List<Account> contactAcctList = new List<Account>();

List<String> AccountNumList = new List<String>();

String tempVal;

//Set to test for duplicates

//Set<Contact> externalIDs = new Set<Contact>();

//Retrieve all the account numbers from the CSV file

for(Integer j=0;j<parsedData.size();j++){

AccountNumList.add(parsedData[j][1]);

//Debug code

//system.debug('Acct # added: '+AccountNumList[j]);

}

//Query the db for all accounts matching the list of account numbers

contactAcctList = [SELECT Id, mkfa_AccountNum__c FROM Account WHERE mkfa_AccountNum__c IN :AccountNumList];

//Iterate through the records in the file

for(Integer i=0;i<parsedData.size();i++){

//Create contact from this row of data

tempContact.mkfa_External_ID__c = parsedData[i][2];

//Checking for duplicates

/*

if(externalIDs.contains(tempContact)){

system.debug('This ID is a duplicate: ' + tempContact);

}

else{

externalIDs.add(tempContact);

}

*/

//debug Code

//system.debug(i+': Contact External ID: '+ tempContact.mkfa_External_ID__c);

tempContact.FirstName = parsedData[i][4];

//debug code

//system.debug('Contact First Name: '+ tempContact.FirstName);

tempContact.LastName = parsedData[i][5];

//debug code

//system.debug('Contact Last Name: '+ tempContact.LastName);

//Get the account # from the file, test it against the list of accounts we queried earlier in SoQL

tempVal = parsedData[i][1];

for(Integer k=0;k<contactAcctList.size() && proceedFlag==true;k++){

if(contactAcctList[k].mkfa_AccountNum__c==tempVal){

tempContact.AccountId = contactAcctList[k].Id;

proceedFlag = False;

}

}

//Add the contact to the contact list

if(!contactList.contains(tempContact)){

contactList.add(tempContact);

system.debug('Contact added: ' + tempContact);

}

else{

system.debug('Contact is dup: ' + tempContact);

}

//debug code

//system.debug('Added contact: '+tempContact);

proceedFlag = true;

}

//Testing for duplicates. Makes sure the set used to look for dups is the same size as the list of contacts.

/* if(contactList.size()==externalIDs.size()){

system.debug('No problems with dups. Proceed.');

}

else{

system.debug('Hold up. There are dups the SS did not find.');

}

*/

//Try to upsert the contacts *****Use external ID

Database.UpsertResult[] upsertResults = Database.upsert(contactList,Contact.mkfa_External_ID__c,true);

/* try{

upsert contactList Contact.fields.mkfa_External_ID__c;

} catch(DmlException e) {

System.debug('The upsert failed. That is OK. Return to the maze and take this message to guide you: ' +

e.getMessage());

}

*/

}

}

Apex Thinks Data Set with Unique Records Has Duplicates

 

SF_InstalledPkgs01_2023Aug31.jpg

 

SF_InstalledPkgs02_2023Aug31.jpg

 

#Apex #Duplicates #Contacts #Matching Rules

8 respostas
  1. 22 de set. de 2023, 21:28

    @Elizabeth Lester

    Thanks for the offer! This endeavor has moved to low priority, but if you do find it piques your interest and you want to spend any time helping, I'd appreciate the help to getting it to run correctly.

     

    I realize I can clean up some of the code with options such as break instead of using flags, and using local variables where I don't need continuity between methods, and I will take care of that when I swing back around to this.  Also, I've removed code I had been using for debugging but was not using on the last run. Finally, I've only included the methods pertinent to this issue, but I left all the public variables in place, so there may be some that seem unnecessary.

     

    public class mkfa_ImportLegacyData {

    //Create an affiliation, contact, and account list for those being manipulated by methods.

    public List<npe5__Affiliation__c> affiliationList = new List<npe5__Affiliation__c>();

    public List<Contact> contactList = new List<Contact>();

    public List<Account> accountList = new List<Account>();

    //Create string lists for holding all data & 1 row from document

    public List<String> dataRecs = new List<String>();

    public List<String> fieldValues = new List<String>();

    public List<List<String>> parsedData = new List<List<String>>();

    public Boolean proceedFlag = true;

    //Create a contact,account, affiliation, and IDs

    public Account tempAcct = new Account();

    public npe5__Affiliation__c tempAffiliation = new npe5__Affiliation__c();

    public ID affiliateAcctID;

    //Method to get data from a file object

    //***Clean quotation marks out of names in CSV file first.****

    public VOID parseFileRecs(string docName){

    //Get the file

    final ContentVersion doc = [SELECT VersionData FROM ContentVersion WHERE Title = :docName AND IsLatest = true];

    //******CSV file must be in UTF-8 format******

    String bodyString = doc.VersionData.toString();

    //Split the content into records by new line character

    dataRecs = bodyString.split('\n');

    //Debug code

    //system.debug('Body of the document to import:'+bodyString);

    //Iterate through the records in the file to create a list of recs, sans the header, each of which is a list of fields

    for(Integer i=1;i<dataRecs.size();i++){

    fieldValues = dataRecs[i].split(',');

    parsedData.add(fieldValues);

    }

    }

    /*Method to parse the contact info from the CSV file, search SQL for accounts matching eT's Account number,

    * create a list of those accounts, search that list for each contact to find that contact's corresponding account,

    * and populate the contact list accordingly*/

    public VOID upsertContacts(String fileName){

    //Make sure the contact list to upsert is empty.

    contactList.clear();

    /*Debug code to be sure contactList is empty. */

    for (Contact thisContact : contactList){

    System.debug(thisContact);

    }

    //Parse the data from the file

    parseFileRecs(fileName);

    proceedFlag = true;

    List<Account> contactAcctList = new List<Account>();

    List<String> AccountNumList = new List<String>();

    String tempVal;

    //Retrieve all the account numbers from the CSV file

    for(Integer j=0;j<parsedData.size();j++){

    AccountNumList.add(parsedData[j][1]);

    }

    //Query the db for all accounts matching the list of account numbers

    contactAcctList = [SELECT Id, mkfa_AccountNum__c FROM Account

    WHERE mkfa_AccountNum__c IN :AccountNumList

    ORDER BY mkfa_AccountNum__c ASC];

    //Iterate through the records in the file

    for(Integer i=0;i<parsedData.size();i++){

    Contact tempContact = new Contact();

    //Create contact from this row of data

    tempContact.mkfa_External_ID__c = parsedData[i][2];

    tempContact.FirstName = parsedData[i][4];

    tempContact.LastName = parsedData[i][5];

    //Get the account # from the file, test it against the list of accounts we queried earlier in SoQL

    tempVal = parsedData[i][1];

    for(Integer k=0;k<contactAcctList.size() && proceedFlag==true;k++){

    if(contactAcctList[k].mkfa_AccountNum__c==tempVal){

    tempContact.AccountId = contactAcctList[k].Id;

    proceedFlag = False;

    }

    }

    //Add the contact to the contact list

    if(!contactList.contains(tempContact)){

    contactList.add(tempContact);

    system.debug('Contact added: ' + tempContact + 'ID: ' + tempContact.Id);

    }

    else{

    system.debug('Contact is dup: ' + tempContact + 'ID: ' + tempContact.Id);

    }

    proceedFlag = true;

    }

    //Try to upsert the contacts *****Use external ID

    Database.UpsertResult[] upsertResults = Database.upsert(contactList,Contact.mkfa_External_ID__c,true);

    }

    }

0/9000

About a year ago (and prior to my time with the org), our team moved over to Salesforce NPSP. It brought a lot of baggage -- including hundreds of duplicate contact records, and thus household account records. We are signed up with a Professional License in Cloudingo, but are fumbling to get started and use the tool effectively and efficiently.

 

I can't seem to find many resources out there or other blogs/spaces where folks are talking about Cloudingo's NPSP considerations (as it is obvious the app was made for traditional Salesforce users). At this point, any and all resources and guidance would be helpful (I am not a Salesforce Admin, but have been tasked with this, fyi)! Thank you in advance.

#Data Management #Duplicates #Data Cleanup #NPSP

10 respostas
0/9000

The large charity I'm helping need contacts to be merged.  When I use the the standard #NPSP Contact Merge tab and select two records to be merged, I'm receiving this error.  I'm assuming it's because we have a lot of fields on the contact record (578 in total).  Is it possible to eradicate this error without removing fields from the Contact object?  I would like to do a field clean up but the duplicates are more pressing right now.

 

The exact error wording is: Maximum view state size limit (170KB) exceeded. Actual view state size for this page was 172.673KB

 

And I'm starting from the standard NPSP Contact Merge tab and choosing "See Duplicate Contacts" and selecting 'Pick' on a pair of contacts.  I can successfully reach the merge screen if I search for a new duplicate pair but if I search for one on my duplicate contacts list that still brings up the error so I suspect it is connected to how populated the record is.

 

Thanks

Mary

 

#Duplicates #NPSP #Merge

6 respostas
0/9000

I am very new to a company that is attempting to recreate contact and renewal records manually from 2021 for upload for 2022.  What is the easiest way to de-dupe this data from one year to the next when one file is current in excel and the other data sits in SF? We want to make sure that data going back in is clean.

1 resposta
  1. 4 de nov. de 2021, 19:09

    Sorry I'm having a hard time wrapping my head around this.  It sounds like you're intentionally importing duplicate records of the same Contacts for each year.  So there will be a record for Joe Smith 2020, Joe Smith 2021, Joe Smith 2022... 

     

    Is that correct?

0/9000

Hello,

 

I am having troubles with duplicate accounts,

 

one is Mr & Mrs doe and the other one is Mr doe,

 

Both accounts have same phone number, same mobile number and same address but Salesforce says there is no duplicate...

 

Is it possible to force a merge fot those accounts ?

 

thanks in advance

 

Yann

 

#Duplicate Management  #Data Management  #Duplicates

5 respostas
  1. Lakhan Meghani (Cube84) Forum Ambassador
    3 de nov. de 2021, 12:33

    Yay...Thats correct

    It matches the exact string and it cannot recognise the potential duplicate

    Glad you resolved it

0/9000