Background Script to Normalize Reference Qualifiers Skipped During Normalization Data Services Guided SetupIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Dictionary Entry records that reference the Company [core_company] table were skipped during Normalization Data Service (NDS) Guided Setup and need to be manually normalized. Symptoms<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Any one of the Canonical System Properties listed in the Guided Setup are set to true.• glide.cmdb.canonical.discovery.enabled• glide.cmdb.canonical.company.enabled• glide.cmdb.canonical.company.qualifier.enabled• glide.cmdb.canonical.normalize.existing.canonical.core_company_records• glide.cmdb.canonical.always_runThere are records on the Dictionary Entry [sys_dictionary] table that meet all of these query conditions: Reference field is to the Company [core_company] tableDynamic Ref Qual field Is Not CanonicalFilter OR Is EmptyReference Qual field does not contain "canonical=true" Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } All Release Cause<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } In the NDS Guided Setup on Task 3: Update Reference Qualifiers the system will attempt to update the reference qualifiers. When the update has finished, the system will display a list of reference qualifiers it could not update automatically because custom qualifiers were already defined. The system will then prompt you to update these manually. Known Causes: The Skipped Reference Qualifiers were not manually updated and the task was marked as completed while implementing NDS Guided Setup.The Canonical System Properties were enabled but NDS Guided Setup was never started or completed. Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 1. Go to the Dictionary Entries [sys_dictionary] table. 2. Filter the table WHERE Reference = Company AND Dynamic Ref Qual IS Empty OR Dynamic Ref Qual.Display Name IS NOT CanonicalFilter AND Reference Qual Condition DOES NOT CONTAIN 'canonical=true' 3. Before running the background script, you need to manually update the two records for cmdb.company and cmdb.vendor one at at time which will propagate the updates to all tables descending the cmdb base table and will take a minute or two for each to complete. 4. From the list find and open the Dictionary Entry where Table is cmdb and Column name is company. • On the cmdb.company record click the Reference Specification tab. • Add Normalized is True to the Ref Qual Condition. • Save the record. 5. Go back to the list find and open the Dictionary Entry where Table is cmdb and Column name is vendor. • On the cmdb.company record click the Reference Specification tab. • Add Normalized is True to the Ref Qual Condition. • Save the record. 6. Go back to the list and refresh. • All Dictionary Entries for the cmdb table and it's extended tables should now be filtered out with a few tables not extending cmdb still remaining. 7. Run the below background script: var gr = new GlideRecord('sys_dictionary'); gr.addEncodedQuery("reference=core_company^nameNOT LIKEcmdb_ci^nameNOT LIKEdscy_^dynamic_ref_qual!=1b3dae2c0b911200f0f04696a6673ab7^ORdynamic_ref_qualISEMPTY^nameNOT LIKEsamp_^reference_qualNOT LIKEcanonical=true"); gr.query(); while(gr.next()){ var refQualType = gr.getValue("use_reference_qualifier"); var normalizedQualCondition = ""; if(refQualType == "simple"){ var qualCondition = gr.getValue("reference_qual_condition"); var rgx = /^.*\^EQ$/gm if(qualCondition){ if(qualCondition.match(rgx)){ qualCondition = qualCondition.slice(0,-3); } } if(qualCondition){ normalizedQualCondition = qualCondition + "^canonical=true^EQ"; }else if(!qualCondition){ normalizedQualCondition = "canonical=true^EQ"; } gr.setValue("reference_qual_condition",normalizedQualCondition); gr.update(); }else if(refQualType == "advanced"){ var refQual = gr.getValue("reference_qual"); var normalizedRefQual = ""; refQual = refQual.trim(); if(refQual[refQual.length -1] == ";"){ refQual = refQual.slice(0,-1); normalizedRefQual = refQual + " + '^canonical=true'"; }else{ normalizedRefQual = refQual + " + '^canonical=true'"; } gr.setValue("reference_qual",normalizedRefQual); gr.update(); } } 8. Go back to the list and refresh. • All Dictionary Entries/Reference Qualifiers should now be Normalized and the list should be empty.