clearmdm - quickstart guide 3 - matching€¦ · invoice__c existing parent relationship...
TRANSCRIPT
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 1
QuickStartGuide3-MatchingDocumentVersion:v1.2ProductVersion:v2.9Date:9thSeptember2017ThisdocumentprovidesanoverviewandStep-by-StepimplementationinstructionsfortheclearMDMMatchingMDMoperation.ThedocumentAppendicesalsoprovideadditionalreferencematerials.ForpractitionerguidanceinrespecttotheimplementationofclearMDMpleaserefertotheImplementationModeldocumentationprovidedonthewebsite,oruponrequest.
TableofContents
QuickStartGuide3-Matching...........................................................................................1MDMProcessOverview.............................................................................................................2MatchingIntroduction...............................................................................................................3
Definition.......................................................................................................................................3KeyConcepts.................................................................................................................................3MatchingRuleTypes.....................................................................................................................7MatchingMethods........................................................................................................................8
Step1–ConfigureApplicationSettings....................................................................................11Step2–ActivatetheTargetObjectforMatching.....................................................................12Step3–ConfigureMatchingRules...........................................................................................13Step4–ActivatetheDataSourceforMatching........................................................................14Step5–RuntheMatchingJob.................................................................................................16Step6–ViewMatchingResults................................................................................................17Step7–ManualMatching–FindMatches...............................................................................19Step8–ManualMatching–MatchAnalysis.............................................................................23Step9–ManualMatching–MatchingTest..............................................................................24AppendixA-MatchingSettingsReference...............................................................................27AppendixB–Troubleshooting..................................................................................................31
MatchingLogTypes.....................................................................................................................31
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 2
MDMProcessOverviewThediagrambelowprovidesanoverviewofthecoreMDMoperationsinsequence.ThisdocumentrelatestoSTEP2–RECORDMATCHING.
STEP 1 - RECORD NORMALISATION
Target ObjectERP_Company__c
STEP 2 - RECORD MATCHING
Target ObjectAccount
Source ObjectERP_Company__c
External Data Source: ERP CompaniesTarget Object = AccountSource Object = ERP_Company__c
Matched Record Pair
ObjectMatching
RECORD MATCHING
Matched Record Pair
ObjectMerge
Target ObjectAccount
Source ObjectERP_Company__c
RECORD MATCHING
Reparenting
Target ObjectAccount
Source ObjectERP_Company__c
Child ObjectInvoice__c Existing Parent
Relationship
Identifiers
DataSource.Acompa)bleobject(orpar))on)thatprovidesSourceRecordstoMDMopera)ons.
SourceRecord.SourceRecordsaretheinputtoMDMopera)onsandmayberelatedtoaMasterRecord.
STEP 3 - RECORD MERGESTEP 4 - DATA CONSOLIDATION
Normalisation
Target ObjectAccount
Normalisation
Inputs >ERP Company Name = Barista Coffee LimitedCountry__c = UK
Outputs >ISOCountryCode__c = GBStandardisedName__c = BARISTA COFFEEBlockingKey__c = GBBARISTA
Inputs >Name = Barista Coffee LtdBillingCountry = Great Britain
Outputs >ISOCountryCode__c = GBStandardisedName__c = BARISTA COFFEEBlockingKey__c = GBBARISTA
TargetObject.Acompa)bleobjectthatisdefinedasthetargetforNormalisa)onopera)onsandwhereMasterRecordswillbecreatedorupdated.AllMDMenabledobjectsmustbenormalised.
Internal Data Source: AccountsTarget Object = AccountSource Object = Account
Matching Engine Pass 1:Gather records where the Blocking Key starts with “GBBARI”. Assuming a Blocking Key Match Length setting value of 6.
Pass 2:Compare each unique record pairing within the “GBBARI” group using the Matching Rules defined for the Target Object. Store matches in the Matched Record Pair Object. Matched Record Groups relate Matched Record Pairs within a transitive group.
Master Record Relationship
Matched Record Pair :Record1Id = ‘001….’Record2Id = ‘00X….’RecordGroupId = ‘001….’Target Object = AccountRecord1DataSource = ‘Accounts’Record2DataSource = ‘ERP Companies’Match Score% = 72%Match Status = Candidate
Each Matched Record Group is processed into a single Master Record Create or Update operation.Trust rules control the flow of field values to the Master Record.
Identifiers can be copied from the Source Records to the Master Record and/or Source Records can be related to the Master Record via relationship field.
Source Records can be deleted or retained.
Output >Name = Barista Coffee LtdMDM Status = Merge Master
Output >Name = Barista Coffee LimitedMDM Status = Merge SourceMaster Record = [Account: Barista Coffee Ltd]
MasterRecord.TheMasterRecordistheoutputoftheConversionandMergeMDMopera)onsandisop)onallyrelatedtotheunderlyingSourceRecordsviarela)onshipfieldorsimplythroughconcatena)onofiden)fiersintoafieldontheMasterRecord.
New Parent Relationship
Input >Name = Barista Coffee LtdMDM Status = Merge Master
Input >Name = Barista Coffee LimitedMDM Status = Merge SourceMaster Record = [Account: Barista Coffee Ltd]
Apply Normalisation Rules to Standardise Field Values.
Construct the Blocking Key used to group records by the first pass of the Matching Engine.
A relationship is established between the Master Record and Source Record Related Data. Filters can be applied to ensure only relevant objects and records are reparented.
Once Related Data is re-parented Custom Rollups can aggregate KPI to the Master Record across the consolidated dataset.
RelatedData.ChildrecordsrelatedtoaSourceRecordwherearela)onshiptotheMasterRecordisrequiredtoestablishaconsolidatedview.
Master Record Relationship
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 3
MatchingIntroductionDefinitionRecord Matching is the process of identifying potential duplicate records within the Salesforcedataset.Insummary,theMatchingMDMoperationappliesMatchingRules(Fuzzy,Exact,Keyetc.)toidentifygroupingswhereeachrecordhasacommonBlockingKeyMatchValue.Withinagivenrecordgroupingeveryrecordismatchedagainsteveryotherrecord(i.e.theCartesianproduct)byMatchingRulesandamatchingscoreiscalculatedforeachrecordpair.Ifthematchingscoreforagivenpairofrecordsisabovethematchingthresholdsettingvalue(fortheTargetObject),thenaMatchedRecordPair record (MatchedRecordPair__c) is created with the Match Status set to “Candidate”. If thematchingscoreforagivenpairofrecordsisabovetheauto-acceptthresholdsettingvalue(fortheTargetObject),thenaMatchedRecordPairrecordiscreatedwiththeMatchStatussetto“Accepted”.MatchingRecordGroupsarecreatedwheremultiplerecordsforthesameBlockingKeyMatchValuematch in a transitivemanner, i.e. record Amatches to B and record Bmatches to record C; theresultantMatchedRecordGroupwill containbothMatchedRecordPairs. TheRecordGroupId__cfieldonMatchedRecordPair__cobjectispopulatedwiththeMatchedRecordGroupId.TheMergeMDMoperationprocesseseachindividualMatchedRecordGroupintoeitheraMasterRecordcreateorupdateoperation;MatchedRecordGroupsthatcontain“Candidate”statusMatchedRecordPairsareskipped;suchgroupsrequirestewardingbeforemergeprocessing.For further information in relation to the Blocking Key and related concepts please refer to thedocumentclearMDM–QuickStartGuide2–Normalisation.KeyConceptsConcept DefinitionTargetObjects AcompatibleobjectthatisdefinedasthetargetforMatchingoperations
andwhereMasterRecordswillbecreatedorupdated.Account,Contact,LeadStandardObjectsaretypicallyconfiguredasTargetObjects,whereduplicaterecordsmayexistdirectlyintheobjectorindirectlyinaseparateobject.AbroadrangeofStandardObjects(includingPersonAccounts)aresupportedasbothTargetObjectsandDataSources.CustomObjectsarealsosupported.
DataSources AcompatibleobjectthatprovidesdatatoMDMoperations.EachDataSourcehasaSourceObjectandaTargetObjectsetting.InternalDataSourcesexposedataheldintheTargetObject.DataSource(Account)>TargetObject(Account)ExternalDataSourcesexposedataheldinadifferentobject.DataSource(ERPCompanies)>TargetObject(Account)Partition Data Sources enable a single object to support multiple DataSourceswith distinct settings. Partition Data Sources are typically used togrouprecordsrelatingtoanexternalsystem(e.g.SAP,SageX3)ortoisolaterecordsatdifferentqualitygrades(e.g.High,MediumandLow).
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 4
MasterRecordDataSourcesallowMasterRecordstobeexposedtoMDMoperations via a distinct Data Source with appropriate settings such aselevated merge field priorities. A Master Record Partition data source isimplemented as a partition data source that references the record MDMstatusvalue.Check-onlyDataSources support cross-objectmatchingbetween standardobjects. The primary use case for Check Only Data Sources is duplicatecheckingacrossLeads,Contactsand/orPersonAccounts.Forexample,Leadcreation (file import, UI data entry etc.) can be blocked where the LeadmatchestoanexistingContact.
MasterRecords TheMasterRecordistheoutputofMDMprocessingandisoptionallyrelatedtotheunderlyingSourceRecords(orduplicates)viarelationshipfieldorsimplythroughtheconcatenationofrecordidentifiersintoafieldontheMasterRecord.MosttypicallyaMasterRecordisade-duplicatedAccount,PersonAccount,ContactorLeadrecordenrichedwithdatafromitsrelatedSourceRecords.WhereSourceRecords(orduplicates)arenotremoved,itistypicaltousetheSalesforcesharingmodeltorestrictSalesforceend-userrecordaccesstoMasterRecordsexclusively.
SourceRecords SourceRecordsaretheinputtoMDMoperationsandmayberelatedtoaMasterRecord.SourceRecordscanberetained(persistentmodel)ordeleted(transientmodel).SourceRecordscanbeconsideredastheunderlyingduplicatesthatareoftenhiddenfromviewforSalesforceend-usersordeletedentirelyonceprocessed.
MatchingSettings MatchingisconfiguredperTargetObjectontheTargetObjectSettingspageandalsoattheDataSourcelevelontheDataSourcesettingspage.AsettingbysettingdefinitionfortheMatchingSettingsisprovidedinAppendixA.
MatchedState AgivenSourceRecordiseitherexposedtotheMatchingEngineornot.The[IsActiveforMatching?]field(record-levelflag)istypicallyconfiguredtoexpressthiskeyactivationstatevalue.TheMatchingMDMoperationwillsettheflagtoFalseoncompletion,unlessAutoMatchingisapplied(wheretherecord-levelflagisignored).WhereAutoMatchingisnotusedtherecord-levelflagisusedtoisolaterecordsthatrequirematching,i.e.onlyrecordswheretheflagistrueareprocessed.clearMDMcanbeconfigured(“CheckMatchingStateonSave?”)tomanagetheflagvalue;recordmodificationsareevaluatedtodeterminewhetheraMatchingsignificantchangehasoccurred,i.e.anyfieldreferencedinthe
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 5
settingsorruledefinitionshaschanged.IfsuchachangeoccurstheflagissettoTrue,i.e.therecordhaschangedmateriallyandrequireseitherre-MatchingorSynchronisation.
BlockingKeyMatchValue
TheBlockingKeyisconstructedfromcharacterstakenfromupto3inputfields–theselectedfieldsmusthaveahighpopulationpercentage,bestaticdatai.e.notsubjecttofrequentchange(non-volatile)andincombinationcovernomorethanapproximately250recordsacrossthedataset.TheBlockingKeyispopulatedbytheNormalisationMDMoperation.TheBlockingKeyMatchValueisadefinedsubsetofthefullBlockingKeypopulatedbytheNormalisationMDMoperation.Thenumberofcharactersusedcontrolstheselectivityofthematchingbehaviour.TheBlockingKeyMatchValue(orMatchingKey)providestheinitialgroupingofrecordstowhichMatchingRulesareapplied.Forexample;BlockingKey=GBFEDEXSWBlockingKeyMatchValueLength=5BlockingKeyMatchValue=GBFEDIntheabovecase,recordsonlyrequirethefirst5characterstobecommon,enablingmatchingbetweenrecordsthathaveGBFEDEXSWandGBFEDCONEblockingkeys–forexample.WheretheGBFEDgroupsizeexceedstheconfiguredprocessinglimit,additionalcharacterswillbeaddedtocreatesub-groupingsi.e.GBFEDEandGBFEDC.Auto-adjustmentofthistypecanbeappliedautomaticallybytheMatchingengineandrequiresthefullBlockingLengthtobegreaterthentheBlockingKeyMatchValueLength.RecordswithoutacompleteBlockingKeyarenotmatchedatall,recordsmustshareacommonBlockingKeyMatchValuetobematchedtogether;theBlockingKeystructureisthereforeacriticaldecisionpointwhenconfiguringclearMDMthatrequiresunderstandingofthepopulationcharacteristicsofthetargetdataset.
MatchingAlgorithm Phase1:BlockingKeyMatchValue
• GroupSourceRecordsbyBlockingKeyMatchValue(BKMV)–wheretheDataSourcesetting[AutoMatchRecords?]=True,ortherecord-levelflag[IsActiveforMatching?]=True.
• ForeachBKMVaddMasterRecordswheretheDataSourcesetting[MasterRecordActiveforMatching?]=True.
Phase2:MatchingRules• ForeachBKMVgroupattempttomatchtogethereachdistinct
pairingofrecords(Cartesianproduct).• WheretheMatchScoreisabovetheconfiguredMatchScore%
createaMatchedRecordPair__crecordat“Candidate”or“Accepted”status.
• StructuretheMatchedRecordPair__crecordsintoMatchedRecordGroupsviatheRecordGroupId__cfield,wherea
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 6
transitiverelationshipexists.Note,asingleSourceRecordcanexistinoneMatchedRecordGrouponly.
• Resetthe[IsActiveforMatching?]flagtoFalse,iftheDataSourcesetting[AutoMatchRecords?]=False.
• SettherecordlevelMDMStatusfieldto“Matched”or“NoMatch”dependingonwhethermatcheshavebeenidentifiedfortherecord–finallyupdatetheLastMatchingDatefield.
Note,SourceRecordswithacompletelyuniqueBlockingKeyMatchValueareskippedbytheMatchingEngineandwillretainablankMDMStatus.
MatchingRules MatchingRulestakeaninputfield,applyaruleandcalculateadirectoutcome(KeyMatchorDeterministicFail)orfield-levelfuzzyscore.Field-levelfuzzyscoresareaggregatedtotherecordleveltodeterminetherecordlevelmatchingscoreagainstwhichtheconfiguredscorethresholdiscomparedtodeterminethematchoutcome(Match=Candidate,Match=AutoAccepted,NoMatch).ThesupportedMatchingRuletypesaredefinedinthefollowingsubsection.
MatchingResults EachmatchedrecordpairisrecordedintheMatchedRecordPair__cobject.Foreachrecordthefollowingattributesarestored:
• Record1Id+Name+DataSource• Record2Id+Name+DataSource• TargetObject• ThresholdMatchScore%• ActualMatchScore%• MatchStatus(Candidate,Rejected,Accepted)• BlockingKeyMatchValue• MatchData(FieldbyFieldScoreCalculations)• RecordGroupId(MatchedRecordGroup)
TheMergeMDMoperationprocesseseachMatchedRecordGroupintoeitheraMasterRecordcreateorupdateoperation.However,MatchedRecordGroupsthatcontain“Candidate”statuspairingswillbeskipped.ItisthereforeakeyDataStewardingrequirementthatCandidatematchesarereviewedandeitherAcceptedorRejectedinorderforthegrouptobeprocessed.Auto-acceptancesettingsprovidecontroloverthelevelofmanualinterventionrequired.
AutoAcceptance ToprovidecontroloverthelevelofeffortrequiredformanualDataStewarding,auto-acceptancecanbeimplemented.Asecond(higher)thresholdscore%isdefined,MatchedRecordPairsthatscoreabovethislevelwillbesettoAccepted(ratherthanCandidate).Intheexamplebelow,matchesabove65%andbelow75%willrequiremanualdatastewarding.FuzzyMatchThreshold%=65%
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 7
AutoAcceptMatchThreshold%=75%
MatchRejection TherecordIdpairingwithinMatchedRecordPairsthatareexplicitlysettothestatus“Rejected“arerecordedintheRejectedRecordPair__cobject.ThisobjectisreferencedbytheMatchingEnginetoensurethepairingisnotmatchedagain.
MatchingRuleTypesMatchingRulesaredefinedper-fieldontheTargetObjectandappliedone-at-a-timetoeachrecordpaircomparisonforagivenBlockingKeyMatchValue.MatchingRulesareevaluatedindividuallyandreturnoneofthefollowingoutcomes;
1) The Record Pairing is confirmed as aMatch (due to a commonality of field values for aparticularlydiscriminatingfieldsuchasSocialSecurityNumberorMobilePhoneNumber).
2) TheRecord Pairing is confirmed as aNoMatch (due to the absence of commonality of arequiredfieldvalueacrossbothrecords,forexampleGender).
3) AFieldLevelScoreisreturnedandaddedtotheRecordLevelMatchScore.Thesupportedruletypesareoutlinedinthetablebelow.RuleType Order DefinitionKey 1 Ifthetwofieldvalues(ontherecordpair)areequalthentherecord
pairingisdeemedtobeKeymatchat100%.KeyrulescanbeusedonsinglefieldsorformulafieldsthatconcatenateanumberofinputstoreturnaKeyMatchingValueuponwhichaKeyruleisapplied.KeyrulesrunbeforeDeterministicandFuzzyrules.Note,wherefieldvaluescontainsapipe(|)delimitedlistthenmatchingwillbeappliedtoeachindividualvalue.
Deterministic 2 Ifthetwofieldvalues(ontherecordpair)arenotequalthentherecordpairingisdeemedtobeaNon-match.Deterministicrulesprovideameanstorule-outmatchesbeforetheapplicationofFuzzyrules.GenderisoftenagoodexamplefortheDeterministicruletype.
Fuzzy 3 Thetwofieldvalues(ontherecordpair)areevaluatedthroughtheEditdistancealgorithmtodetermineafield-levelmatchingscorewhichisa%oftheMaxFieldScoresettingbasedonthenumberofeditoperationsrequiredtoalignthevaluesfromthetotalpossibleoperations.WhereoneorbothvaluesareblanktheNullFieldScoresettingvalueisreturned.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 8
Thefield-levelfuzzy(andexact)matchingscoresareaggregatedtotherecord-leveltoreturnanoverallrecordmatchingscorefortherecordpair.
Exact 3 Thetwofieldvalues(ontherecordpair)areevaluatedforanexactmatch,wherethisisthecasetheMaxFieldScoresettingisreturned.WhereoneorbothvaluesareblanktheNullFieldScoresettingvalueisreturned.
Ignore 0 FieldsthatarerelevanttoMergebuthavenoMatchingsignificanceshouldbesetwiththeIgnoretype.ConverselyfieldsthatareMatchingsignificantbutmustnotbemergedareshouldbesetwiththe“MatchingOnly?]flagequaltoTrue.
MatchingMethodsThe tablebelowoutlines the supportedmethods for invocationof theMatchingMDMOperation.SettingreferencesrefertotheTargetObjectMatchingsettings.Method DefinitionBatchJob TheclearMDMJobspagecanbeusedtoscheduletheMatchingMDM
operationtorunforagivenTargetObjectimmediatelyoronascheduledbasis.The[AutoMatchRecords?]DataSourcesettingcontrolswhetherallrecordsarematched,irrespectiveofMatchedState,orwhetherjustrecordsthatrequirematchingareprocessed.WhereadailybatchprocessingmodelisimplementedforMDMprocessing,theMatchingMDMoperationwilltypicallybethethirdjobandwillinvokethenextjobinthesequenceusingthejobchainingTargetObjectsettingse.g.MergeSettingssection,[IsInvokedbyMatchingJob?]flag.InadditiontothestandardMatchingjob,asecondmatchingjobnamed“InternalMatching”canbeenabled.Thisjobisintendedforprocessinglargedatavolumes(multiplemillionrecords)duringinitialmigrationandislimitedtoprocessingrecordsinasingleobjectonly.ThisjobappliestheinternalDataSourcesettingsforthespecificTargetObjectonly,partitionDataSourcesareignored.
OnRecordCreate RecordscanbeMatchedoncreationtopreventcreationofduplicaterecords.Thismethodrequiresthe[CheckforMatchesonRecordCreation?]TargetObjectsettingtobesettoTrueandtheApplicationSettings–[IsTriggersActive?]settingtobesettoTruealso.Thisbehaviourcanbebypassedforspecificfieldconditionsoruserprofiles.
OnRecordSave RecordscanbeMatchedonsavetopreventcreationofaduplicateviarecordmodification.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 9
Thismethodrequiresthefieldspecifiedbythe[MatchingCheckonSaveFieldName]TargetObjectsettingtobesettoTrueoneachrecordandtheApplicationSettings–[IsTriggersActive?]settingtobesettoTrue.Thisbehaviourcanbebypassedforspecificfieldconditionsoruserprofiles.
Action RecordscanbeMatchedbyProcessBuilderaspartofacustomprocessautomation.ToconfigureaProcessBuilderActionforthispurpose,addanActionwithpropertiessetasbelow.
1. ActionType=Apex2. ApexClass="MatchRecordsAction”3. RecordIDparameter=Reference[ObjectIdfield].
TheActioncanalsobeimplementedwithinaVisualWorkflow(orFlow).
API RecordscanbeMatchedbyacustomactionexposedviathestandardForce.comRESTAPI;endpointbelow./services/data/vXX.0/actions/custom/apex/clearmdm__ RecordMatchingAction TheAPIoperationtakesasinglerecordIdparameter.FurtherdetailscanbefoundintheclearMDMAPIGuide.AsecondAPIoperation“QuickMatching”extendspoint-of-entrycheckingouttoexternalsystemsinadistributedMDMmodel./services/apexrest/clearmdm/1.0/QuickMatching TheAPIoperationtakesrecordattributessuchasNameandAddresstoenablematchingplusthelistoffieldstoreturnonmatchedresults.FurtherdetailscanbefoundintheclearMDMAPIGuide.
UI RecordMatchingcanbeappliedmanuallyviathe2pagesbelow.FindMatchesThe“FindMatches”pageisinvokedviaUrlwiththeformatbelow.TheclearMDMpackagedlayoutsforAccount,ContactandLeadcontainCustomButtonsforconvenientaccess./apex/FindMatches?id=[recordId] TheFindMatchespagesupports2real-timesearchscenarios:
1. “Find”:Findmatchesthatareadirectmatchtothegivenrecord.2. “FindAll”:Findallmatchesforthegivenrecord’sBlockingKeyMatch
Value.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 10
MatchingresultscanbemanuallysavedasMatchedRecordPairswithinMatchedRecordGroups.SuchgroupswillbeprocessedbythenextMergeMDMoperationjoborcanbemanuallymergedviatheMergepage.MatchingTestThe“MatchingTest”pageisaccessedviaatabintheMDMapp.Arecordsearchcanbeperformed(acrossdatasources)usingacompoundfieldfilter.TworecordsfromthesearchresultscanbeselectedandcomparedusingthecurrentmatchingsettingsfortheTargetObject.TheMatchingTestpageallowsthesettingstoexperimentedwithusingexemplarrecords;refinedsettingscanbeapplieddirectlytotheTargetObjectsettings.ThetwoselectedrecordscanalsobemanuallymergedirrespectiveoftheBlockingKeycommonalityormatchingscore.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 11
Step1–ConfigureApplicationSettingsPre-requisite:clearMDMmustbesettoActiveviatheApplicationSettingspage.Pre-requisite:clearMDMmustbesetwithTriggersActiveviatheApplicationSettingspage.Tocompletethisstep,firstnavigatetotheMDMApp,opentheSettingstab,tickthetwofieldshighlightedbelowandclicktheSavebutton.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 12
Step2–ActivatetheTargetObjectforMatchingTocompletethisstep,firstnavigatetotheMDMApp,opentheSettingstab,selecttheTargetObjectstabandclicktheEditlinknexttotherequiredTargetObject.Note,forLightningExperiencetheEditmenuisaccessibleviatheDropdownmenuintherightmosttablecolumn.Next,setthe[IsActive?]flagequaltotrueintheMatchingSettingssection(orMatchingSettingstabin Lightning Experience) and ensure the relevant settings are configured correctly. Appendix AprovidesaSettingsreference.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 13
Step3–ConfigureMatchingRulesTocompletethisstep,firstnavigatetotheMDMApp,opentheSettingstab,selecttheTargetObjectstabandclicktheEditlinknexttotherequiredTargetObject.Note,forLightningExperiencetheEditmenu is accessible via the Dropdownmenu in the rightmost table column. On the Target ObjectsettingspageclicktheFieldstab.Next,setthe[IsActive?]flagequaltotruenexttotherelevantfieldandselecttherequiredMatchingRuletype(e.g.Key).FortheFuzzyandExactruletypesaMaxScoreandNullScorevaluemustbeentered.FinallyclicktheSavebutton.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 14
Step4–ActivatetheDataSourceforMatchingTocompletethisstep,firstnavigatetotheMDMApp,opentheSettingstab,selecttheDataSourcestabandclicktheEditlinknexttotherequiredDataSource.Note,forLightningExperiencetheEditmenuisaccessibleviatheDropdownmenuintherightmosttablecolumn.Next,setthe[IsActive?]flagsequaltotrueintheDataSourceSettingsandMatchingSettingssections(ortabsinLightningExperience)andensuretherelevantsettingsareconfiguredcorrectly.AppendixAprovidesaSettingsreference.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 15
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 16
Step5–RuntheMatchingJobTocompletethisstep,firstnavigatetotheMDMApp,opentheJobstab,selecttheMatchingJobtypeandtherequiredTargetObject.FinallyselecttherequiredJobScheduleandclickthe“ScheduleJob”button.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 17
Step6–ViewMatchingResultsTocompletethisstep,firstnavigatetotheMDMApp,opentheMatchedRecordPairstabandthenopenaMatchedRecordPairrecordbyclickingonthehyperlinkintheMatchedRecordPairNumbercolumn.OntheMatchedRecordPairdetailpagenavigatetotheMatchedRecordGroupviathe“ViewMatchedRecordGroup”button(ordropdownmenuoptioninLightningExperience).ThescreenshotsbelowshowaMatchedRecordGroupcreatedbytheMatchingMDMoperation.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 18
ThescreenshotbelowshowstheMatchingMDMfieldsdisplayedonanexamplerecord.PlacementofMDM fields on layouts for administrators, data stewards and end-users is a key implementationdecision.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 19
Step7–ManualMatching–FindMatchesThescreenshotsbelowshowthestepsofthe“FindMatches”featurethatallowsrealtimematchingtobeinvokedfromabuttonorlinkdisplayedontherecorddetailpage.OpenaSourceRecordandclickthe“FindMatches”buttonorlink.The“FindMatches”CustomButtonforAccountprovidesatemplatethatcanbecopiedforotherobjects.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 20
NextclicktheFindbutton(directmatchestotherecord)orFindMatchesbutton(allmatchesfortheblockingkeymatchvalue)toperformareal-timematchingoperation.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 21
NextclicktheSavebuttontocreateaMatchedRecordGroupforpairingsthathavethe[IsMatch?]columnticked.Note,thisvaluecanbeoverriddenmanually.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 22
NextopentheMatchedRecordGroupviathehyperlinkshownabove.
Finally theMatchedRecordGroup enablesMatchAnalysis of individual pairing and the option tomanuallymergethegroup.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 23
Step8–ManualMatching–MatchAnalysisThescreenshotsbelowshowthe“MatchedRecordGroup”and“MatchAnalysis”features.Note,thefeatures are applicable to all Matched Record Groups irrespective of whether the grouping wascreatedbymanual,batchjoborAPImatching.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 24
Step9–ManualMatching–MatchingTestThescreenshotsbelowshowthe“MatchingTest”featurethatallowstwoarbitraryrecordstofound,comparedandpotentiallymerged.ThefeatureisintendedtoenableanexploratoryapproachtothedefinitionoftheoptimalsetofMatchingRules.
AcompoundfiltercanbedefinedusingStartsWithorContainspredicates.TheSearchbuttonsrunsthedefinedquerytoreturnanymatchingrecordsacrossallactiveDataSourcesfortheselectedTargetObject.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 25
FromthereturnedSearchResults,2recordscanbeselectedandtheNextbuttonclickedtoproceedtotheComparepage.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 26
The compare page allows Matching Rule changes to be applied and the Matching Score to berecalculated.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 27
AppendixA-MatchingSettingsReferenceTargetObjectMatchingSettingsareconfiguredontheTargetObjectsettingspage.Setting DefinitionIsActive? IfsettoFalsetheTargetObjectwillbeexcludedfromall
NormalisationMDMoperation.IsInternalMatchingActive? IfsettoTruetheInternalMatchingjobisavailableforselectionon
theJobspage.CheckforMatchesonRecordCreation? IfsettoTruethenMatchingwillrunfornewrecordsatthetimeof
creation–wherematchesarefoundtherecordcreationwillbeblocked.
AutoAdjustBlockingKeyMatchValue? IfsettoTruethenMatchingenginewillincreasethelengthoftheBlockingKeyMatchValuetoallowprocessingofgroupsthatexceedthecurrentsettings.Auto-adjustmentisonlypossiblewheretheoverallsizeoftheBlockingKey(Inputlengths1,2and3combined)exceedsthecurrentBlockingKeyMatchLength.
MatchingCheckonSaveFieldName IfsettoTruethenMatchingwillrunformodifiedrecordsatthetimeofsave–wherematchesarefoundtherecordmodificationwillbeblocked.Thisbehaviourcanprovetoorestrictiveincertaincircumstances(Adminprofilesetc.)–assuchtheMatchingCheckcanbebypassedusingtheMatchingCheckOverrideFieldNamesetting.
MatchingCheckOverrideFieldName AcheckboxformulafieldontheTargetObjectthatreturnstrueforagivenrecordwheretheMatchingCheckonSavebehaviourshouldbebypassed.Theformulaexpressioncanencapsulatelogicalconditions(suchasparticularrecordtypesetc.)andaccessscenarios(Userprofileetc.).
BlockingKeyMatchLength ThelengthoftheBlockingKeyValueusedfortheinitialgroupingofrecordsbeforeMatchingRulesareapplied.ItisbestpracticetodefineaBlockingKeylengthinthe8-10rangeandusethefirst6or7charactersforgrouping.WherelargegroupingsareencounteredtheMatchingenginecanaddthe8th,9thor10thcharactertodecomposethegroupintosmallsubgroupings.
DateMatchingTolerance Thenumberofdaysdifferencebetween2comparedDateorDatetimefieldvaluesthatconstitutesamatch.WherethisvalueisZerodatesmustbethesameday,wherethetoleranceis1thenthedatescanbeonedayapartandstillbeconsideredamatch.
FuzzyMatchThreshold% Thematchscore%thatconstitutesaCandidatematch.Comparedrecordpairsthatscorebeneaththisthresholdarenon-matchesandarenotrecordedintheMatchedRecordPairobject.
MatchingManagerApexClassName ThenameofApexClasstowhichthematchingenginedelegatesthematchingalgorithm.TheStandardMatchingManagerdefaultimplementstheEditDistanceorLevenshteinalgorithm.CustomalgorithmscanbeimplementedusingtheApexlanguage.
AutoAcceptMatches? IfsettoTruethencomparedrecordpairsmaybesettoAcceptedstatusautomaticallyifthescorevalueissufficientlyhigh.
AutoAcceptMatchThreshold Thematchscore%thatconstitutesanAcceptedmatch.Comparedrecordpairsthatscoreonorabovethisthresholdareauto-accepted.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 28
IsInvokedbyNormalisationJob? IfsettoTruethenNormalisationjobswillinvokeaMatchingjobforthesameTargetObjectuponcompletion.
IsInvokedbySynchronisationJob? IfsettoTruethenSynchronisationjobswillinvokeaMatchingjobforthesameTargetObjectuponcompletion.
DataSourceSettingsareconfiguredontheDataSourcesettingspage.Setting DefinitionDataSourceSettingsIsActive? IfsettoFalsetheDataSourcewillbeexcludedfromallMatching
MDMoperations.IsExternal? IfsettoTruethentheDataSourceisoftheexternaltypeanda
SourceObjectmustbespecified.IfsettoFalsethentheDataSourceisoftheinternaltypeandonlytheTargetObjectmustbespecifiedastheSourceObjectwillbethesamevalue.
Name AuniquenamefortheDataSource.Examplesbelow.AccountsMasterAccountsExcludedContactsHighQualityLeadsSAPCompaniesEcommerceCustomers
SourceSObjectType ExternalDataSourcesOnly.ThenameoftheobjectthisDataSourceexposesrecordsfrom.
TargetSObjectType ThenameoftheTargetObjecttowhichthisDataSourcerelates.TheMatchingMDMoperationrunsforagivenTargetObject;recordsaregatheredfromallDataSources(internalandexternal)fortheTargetObject.
MDMStatusFieldName AtextfieldontheSourceObjectintowhichtheMDMstatusisset,e.g.Matched,NoMatch,MergeSource.
IsActiveforSynchronisation? IfsettoTruethentheDataSourcewillexposeSourceRecordstotheSynchronisationMDMoperation.SynchronisationallowsfieldvaluechangestoefficientlyflowacrossanexistinglinkagebetweenaSourceRecordandaMasterRecordwithouttherequirementtore-matchandmergethemodifiedSourceRecord.TheSynchronisationMDMoperationprocessesSourceRecordsthathavethe[IsActiveforMatchingflag]settotrue.
IsActiveforReparentingFieldName AcheckboxfieldontheSourceObjectthatreturnsTruewhereaSourceRecordhasbeenmergedandchildrecordsshouldbere-parented.TheflagissettoTruebytheMergeoperationandsubsequentlysettoFalsebytheReparentingMDMoperation.WherechildrecordsretainarelationshiptotheSourceRecord(CustomObjects)andaresubjecttoongoingchange–theparentSourceRecordflagmustbesettoTruetoallowsarelationshiptotheMasterRecordtobeestablished.ProcessBuilderprovidesanefficientmeanstoaddressthisrequirement.TheReparentingMDMoperationconsolidateschildrecordsparentedbymergedSourceRecordstotherelatedMasterRecord.Thisoperationiskeyinprovidingaconsolidated(360º)view.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 29
ResetReparentingFlag? IfsettoTruethentheMatchingMDMoperationwillsetthe[IsActiveforReparenting?]recordlevelflagequaltofalseforallmatchedrecordsinanticipationoftheMergeMDMoperationsettingthesameflagtotrueformergedrecords.
IsPartition? IfsettoTruethentheDataSourceexposesthesubsetoftheSourceObjectrecordsasdefinedbythepartitionfilter.
PartitionFieldName IsPartition=Trueonly.AcustomtextfieldontheSourceObjectuponwhichreturnsthepartitionfiltervalue.BestPractice:Atextformulafieldcanbeimplementedtoreturntherequiredpartitionvaluebasedonlogicencapsulatedintheexpression.AlternativelytheDataQualityMDMoperationcanpopulatethedefinedfieldwiththepartitionvalue.
PartitionFieldValue IsPartition=Trueonly.Atextvaluethatdefinesthefilterlogicappliedtothepartition;externalsystemnameorregionorqualitygradeetc.
DataSourceMatchingSettingsIsActive? IfsettoFalsetheDataSourcewillbeexcludedfromallMatching
MDMoperations.AutoMatchRecords? IfsettoTruethenallSourceRecordsfortheSourceObject(subjectto
partitionfiltering)areexposedtotheMatchingMDMoperationirrespectiveofthesettingoftherecord-level[IsActiveforMatching?]flag.Automatchingistypicallyusedonlywhenanexistingdatasetismatchedforthefirsttime–orduringexploratorytesting.
MasterRecordsActiveforMatching? AutoMatchRecords=FalseOnly.IfsettoTruethenallMasterRecordsfortheSourceObject(subjecttopartitionfiltering)areexposedtotheMatchingMDMoperationirrespectiveofthesettingoftherecord-level[IsActiveforMatching?]flag.ThisflagenablesnewormodifiedSourceRecordstobematchedagainstthefullsetofexistingMasterRecordsforthesameBlockingKeyMatchValue.IfsettoFalsethenSourceRecordsarematchedagainstrecordsthathavetherecord-level[IsActiveforMatching?]flagequaltotrueonly.
CheckMatchingStateonSave? AutoMatchRecords=FalseOnly.IfsettoTruethenrecordmodificationswillbeevaluatedtodeterminewhetheramatchingsignificantfieldhaschanged,ifthisisthecasethenthe[IsActiveforMatching?]flagissettotruetoexposetherecordtothenextSynchronisationorMatchingMDMoperation.
ResetSourceRecordMatchingFlag? AutoMatchRecords=FalseOnly.IfsettoTruethentheMatchingMDMoperationwillsettherecord-level[IsActiveforMatching?]flagequaltofalseoncearecordhasbeenprocessed.Thisflagiskeytoensuringthatrecordsareonlyprocessedonceunlesssubsequentmatchingsignificantfieldchangesareapplied.
IsActiveforMatchingFieldName AutoMatchRecords=FalseOnly.AcheckboxfieldontheSourceObjectthatispopulatedwithatruevaluewhenarecordshouldbeexposedtotheMatchingMDMoperation.
MasterRecordFlagFieldName AutoMatchRecords=False&MasterRecordsActiveforMatching=TrueOnly.AcheckboxfieldontheSourceObjectthatispopulatedwithatruevaluewhenarecordistoconsideredaMasterRecord.Ifnofield
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 30
referenceissetthenthedefinitionofaMasterRecordistakenfromtheMDMStatusbeingequalto‘MergeMaster’or‘ConversionMaster’.BestPractice:InmanycasesstandalonerecordsthathavenoMDMStatusarealsoconsideredtobeaMasterRecord.Tosupportthisaformulafieldcanbeimplementedthatreturnstruewhenarecord’sMDMStatusisnot‘MergeSource’or‘ConversionSource’.TheformulafieldwillbesettocontroldeterminationofMasterRecordstateinthissetting.
LastMatchingDateFieldName AdatetimefieldontheSourceObjectthatwillbepopulatedwiththeprocessingtimestamp.
SourcetoTargetFieldSettingsTargetField ATargetObjectfieldthatisactiveforMatchingandMerge.SourceField ExternalDataSourcesonly.
ASourceObjectfieldthatismappedtotheTargetField.MDMoperationsprocessdataacrossobjectusingadynamicfieldmapcomprisedofSourcetoTargetfieldmappings.
CrossFieldMatching AdditionalfieldsontheSourceObjectwheretheTargetFieldvaluemayexist.TheMatchingMDMoperationwillevaluatethebestscorefortheTargetFieldacrossboththeprimaryfieldandthesecondaryfieldsspecifiedbythissetting.
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 31
AppendixB–TroubleshootingAllclearMDMMDMoperationslogactivity(StartandEndtimesetc.)anderrorstotheAuditLogEntryobject.TheMDMapplication includesanAuditLogEntry tabtoprovideconvenientaccess to thisdata.EachAuditLogEntryrecordistime-stampedandrelatedtotheparentBatchJobRunrecord:allMDMoperationsthatrunviatheJobMethodcreatedaBatchJobRunrecordthatrecordsjobstatisticsandstatus.MonitoringoftheAuditLogshouldbeafrequentactivityperformedbytheAdministratororDataStewardresponsiblefortheclearMDMimplementation.BestPractice:SalesforceReportingNotificationsprovideaproactivemeansofreportingonerrorsgeneratedbyclearMDMoperations.InthismodelastandardreportisusedtoreturndatafromtheAuditLogEntryobjectwhererequiredconditionsaremet.OnlywhenrecordsmeetthecriteriaisareportsenttotheAdministratororDataStewardresponsible.MatchingLogTypesRuleType DefinitionGroupSizeLimitReached-SourceRecordsWillBeIgnored[XXXXX]7451:5000.0
ThenumberofSourceRecordsfortheBKMVexceedsthesettingvaluebelow.[SystemSettings]MaxRecordsPerIterableCycleWhereDataSourcesexistthatareconfiguredwith[MasterRecordsActiveforMatching?]=TruethentheactuallimitappliedtotheSourceRecordcountisreducedbythepercentagespecifiedinthesettingbelow.[SystemSettings]MasterRecordPartitionAllowanceTheaboveisnecessarytolimittheworkloadplacedintoeachBatchApexexecutecyclesuchthatCPUtimeouterrorsareavoided.Tomitigatethiserror,theBKMVcanbemademoreselectivebyaddingadditionalcharacters(increasingtheBKMVlengthsetting).Or,theSystemSettingsbelowcanbemodified.MaxRecordsPerGroup:ControlsthemaximumBKMVgroupsizebeforeauto-adjustmenttakesplace.RecommendedSetting:500MaxRecordsPerIterableCycle:ControlsthemaximumnumberofrecordsthatcanbeplacedintotheworkloadforasingleBatchApexexecutecycle.RecommendedSetting:2000
clearMDM®isaregisteredtrademarkofAudit9LtdacompanyregisteredintheUnitedKingdomwithcompanynumber08088394. 32
MaxGroupsPerIterableCycle:ControlsthemaximumnumberofBKMVgroupsthatcanbeplacedintotheworkloadforasingleBatchApexexecutecycle.RecommendedSetting:5(thiscanbereduceddownto4,3,2or1wherelimitissuesarerecordasbelow)
BlockingKey[XXXXX]GroupSizeLimitReached-SourceRecordsWillBeIgnored
ThenumberofSourceRecordsfortheBKMVexceedsthesettingvaluebelow–andautoadjustmentisnotenabledORautoadjustmenthasbeenappliedandthereferencedBKMVisthefullBlockingKeylengthandnofurtheradjustmentpossible.[SystemSettings]MaxRecordsPerGroup
BlockingKey[XXXXX]AutoAdjustment-SourceRecordsWillBeIgnored
ThereferencedBKMVhasbeenauto-adjustedbutnotallSourceRecordscouldbeassignedtosubgroupingswithinthesizelimitdefinedbythesettingbelow.[SystemSettings]MaxRecordsPerGroup
CycleProcessingStopped-ProcessingLimitExceeded(CpuTime,HeaporDmlRows)bk:JOHNNcputime:59708[59400.000]heap:689258[11880000.000]dml:isPersist=true:222[9999]
TheworkloadplacedintotheBatchApexexecutecyclereachedprocessinglimitsandtoavoidahardplatformexceptionprocessinghasbeenstopped.Tomitigatethiserrorpleaserefertotheprecedingrow.
MissingorInactiveTargetObjectMatchingsettings
ThiserrorcanoccurwheretheTargetObjectMatchingsettingsareinactive,deletedortheSalesforceUserdoesnothavepermissionstotheobjectorfieldsreferenced.