EMC Isilon discovery fails with MULTIPLE_DUPLICATE_RECORDS on cmdb_ci_hardware [name]Issue <!-- /*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: ; } } Horizontal discovery of a Dell EMC Isilon (PowerScale / OneFS) cluster completes data collection successfully on the MID Server, but no CIs are created on the instance. The discovery status shows the pattern completing while reporting that post-processing steps failed, and the ECC payload is rejected by the Identification and Reconciliation Engine (IRE) with: MULTIPLE_DUPLICATE_RECORDS: Found duplicate records in table[cmdb_ci_hardware] using fields [name]. 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: ; } } Quick Discovery or a scheduled Discovery against the Isilon cluster management IP returns "CI Pattern completed but failed some post-processing steps", pattern name EMC Isilon.No cmdb_ci_storage_cluster, cmdb_ci_storage_server, cmdb_ci_storage_cluster_node or cmdb_ci_storage_node_element records are created or updated.The discovery status payload contains MULTIPLE_DUPLICATE_RECORDS against cmdb_ci_hardware using fields [name].The MID Server agent0.log shows the pattern itself succeeding: HorizontalDiscoveryPatternExecutor - Finished Execution of pattern (took ~7 s) [EMC Isilon]HorizontalDiscoveryProbe - ==== Service horizontal discovery completed successfully for Pattern [<pattern sys_id>] Immediately before that, the pattern's extension section terminates without doing any work: PatternExtensionsExecutor - Executing extension section : ReferenceElement{name='EMC Isilon Unique Objet IDs', id='<section sys_id>'}DefaultPatternExecutor - Starting step: 1 [name='Get MID Property' ...]EvalClosure - falseExecutionContextImpl - setAttribute(update_all_number_isilon_ids,false)DefaultPatternExecutor - Starting step: 2 [name='Check discover_emc_isilon_enable_uniq_ids_extension_section' ...]DefaultPatternExecutor - Pattern exit because Graceful Termination, reason: Ignore extension due to sn_itom_pattern.discover_emc_isilon_enable_uniq_ids_extension_section = false In the same log, the node CI payload carries bare logical node numbers as the CI name: setAttribute(cmdb_ci_storage_cluster_node,[{... name=1 ...}, {... name=2 ...}, {... name=3 ...}, {... name=4 ...}])setAttribute(cmdb_ci_storage_node_element,[{... name=1 ...}, {... name=2 ...}, {... name=3 ...}, {... name=4 ...}])setAttribute(cmdb_ci_storage_server,[{... name=System ...}, {... name=Prod ...}]) Facts<!-- /*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: ; } } The EMC Isilon discovery pattern ships an extension section named "EMC Isilon Unique Objet IDs" (spelled this way out of the box — note the missing "c" in "Object"). Its purpose is to qualify Isilon CI identifiers with the cluster name so they are unique across clusters.The section contains six steps. Steps 3 to 6 are Update cmdb_ci_storage_cluster, Update cmdb_ci_storage_node_element, Update cmdb_ci_storage_server and Update cmdb_ci_storage_cluster_node.Step 1, Get MID Property, reads a MID Server parameter, not an instance system property: var rtrn = "false";config = Packages.com.service_now.mid.services.Config.get();rtrn = config.getProperty("sn_itom_pattern.discover_emc_isilon_enable_uniq_ids_extension_section");rtrn; The var rtrn = "false" assignment is only the variable's initial value. It is overwritten on the following line by the getProperty() call and has no effect on the outcome. Editing that literal in the Pattern Designer does not enable or disable the section.Step 2 matches the returned value against "true". Any other value causes a graceful termination of the section, so steps 3 to 6 never run and the identifiers are left as collected.Without those steps, Isilon nodes are named using the logical node number (1, 2, 3, 4) and storage servers are named using the access zone name (System, Prod, and similar).cmdb_ci_storage_node_element, cmdb_ci_storage_cluster_node and cmdb_ci_storage_server all extend cmdb_ci_hardware.Setting the MID Server parameter takes effect in memory without a MID Server restart. The MID logs the change as: ConfigManager - Updated the following configuration values in memory: [sn_itom_pattern.discover_emc_isilon_...]ConfigManager - Notifying listeners of configuration change(s) Repeated ERROR ... [HttpMethodDirector] Invalid challenge: Basic /MalformedChallengeException entries appear during every Isilon pattern run. These are expected and unrelated: OneFS returns a WWW-Authenticate: Basic header without a realm parameter, which the HTTP client cannot parse. The PAPI calls still return data. 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 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: ; } } The MID Server parameter sn_itom_pattern.discover_emc_isilon_enable_uniq_ids_extension_section was set to false (or was absent) on the MID Server executing the pattern. Because that parameter gates the "EMC Isilon Unique Objet IDs" extension section, the section terminated at step 2 on every run, and the four update steps that qualify the identifiers with the cluster name never executed. The node CIs were therefore submitted to IRE with bare logical node numbers as their name value. cmdb_ci_storage_node_element and cmdb_ci_storage_cluster_node both extend cmdb_ci_hardware. When IRE fell through to the name criterion of the hardware identification rule, a lookup on name = 1 returned more than one existing record. IRE cannot resolve a single CI from an ambiguous match, so it rejected the entire payload with MULTIPLE_DUPLICATE_RECORDS and created nothing. This is a configuration condition, not a defect in the pattern. 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- On the MID Server that runs the Isilon discovery, set the MID Server parameter: Name: sn_itom_pattern.discover_emc_isilon_enable_uniq_ids_extension_sectionValue: true Ensure the parameter name contains no leading or trailing whitespace. A name with stray whitespace is silently ignored and logged as: RemoteSettingsAccessor - MID server property or config parameter '<name>' ignored because name contains leading or trailing whitespace 2- Confirm the MID Server has picked the value up. No restart is required; the MID logs the in-memory configuration change within seconds. 3- Re-run Quick Discovery against the Isilon cluster management IP. 4- Confirm in agent0.log that the extension section now executes: EvalClosure - truesetAttribute(update_all_number_isilon_ids,true)Finished Step 3 [name='Update cmdb_ci_storage_cluster' ...] SUCCESSFinished Step 4 [name='Update cmdb_ci_storage_node_element' ...] SUCCESSFinished Step 5 [name='Update cmdb_ci_storage_server' ...] SUCCESSFinished Step 6 [name='Update cmdb_ci_storage_cluster_node' ...] SUCCESS The identifiers are then scoped to the cluster: TableBeforeAftercmdb_ci_storage_cluster_node1, 2, 3, 4<cluster_name>-1 … <cluster_name>-4cmdb_ci_storage_node_element1, 2, 3, 4<cluster_name>-1 … <cluster_name>-4cmdb_ci_storage_serverSystem, Prod<cluster_name>-System, <cluster_name>-Prod 5- Retire or remove any cmdb_ci_hardware records left over from earlier runs that are still named with bare node numbers (1, 2, 3, 4). The corrected payload will no longer match them, so they become orphaned.