<h2>Patterns and horizontal discovery</h2><br/><div style="overflow-x:auto"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><meta content="text/html; charset=UTF-8" /><meta name="copyright" content="(C) Copyright 2025" /><meta name="DC.rights.owner" content="(C) Copyright 2025" /><meta name="generator" content="DITA-OT" /><meta name="DC.type" content="concept" /><meta name="DC.title" content="Patterns and horizontal discovery" /><meta name="abstract" content="A pattern is a series of operations that tell Discovery which CIs to find on your network, what credentials to use, and what tables to populate in the CMDB." /><meta name="description" content="A pattern is a series of operations that tell Discovery which CIs to find on your network, what credentials to use, and what tables to populate in the CMDB." /><meta name="DC.subject" content="pattern designer, horizontal discovery, classifiers, horizontal pattern probe, probes, Discovery, use patterns, discovery patterns" /><meta name="keywords" content="pattern designer, horizontal discovery, classifiers, horizontal pattern probe, probes, Discovery, use patterns, discovery patterns" /><meta name="DC.relation" scheme="URI" content="../../../product/discovery/reference/r-discovery.html" /><meta name="DC.relation" scheme="URI" content="../../../product/it-operations-management/reference/r_ITOMApplications.html" /><meta name="DC.relation" scheme="URI" content="../../../product/it-operations-management/reference/itom-visibility-landing-page.html" /><meta name="DC.creator" content="ServiceNow" /><meta name="DC.date.created" content="2023-08-03" /><meta name="DC.date.modified" content="2024-02-01" /><meta name="DC.format" content="XHTML" /><meta name="DC.identifier" content="c-UsingPatternsForHorizontalDiscovery" /><link rel="stylesheet" type="text/css" href="../../../CSS/commonltr.css" /><title>Patterns and horizontal discovery</title></head><body> <div class="nested0" id="c-UsingPatternsForHorizontalDiscovery"> <h1 class="title topictitle1" id="ariaid-title1">Patterns and horizontal discovery</h1> <div class="body conbody"><p class="shortdesc">A pattern is a series of operations that tell Discovery which CIs to find on your network, what credentials to use, and what tables to populate in the CMDB.</p> <div class="section" id="c-UsingPatternsForHorizontalDiscovery__section_hn5_bbp_2cb"> <div class="p">This topic assumes you understand the phases of horizontal discovery. If you need to review the horizontal discovery process for probes and for patterns, see the following: <ul class="ul" id="c-UsingPatternsForHorizontalDiscovery__ul_t1z_qgj_h2b"><li class="li"><a class="xref" href="c_DiscoProcessFlows.html" title="The horizontal discovery process passes through the four phases of discovery using probes, which gather information on the target machine, and then sensors, which help Discovery determine what to do with that information.">Horizontal discovery process flow with probes and sensors</a></li><li class="li"><a class="xref" href="disco-process-flow-patterns.html" title="Horizontal discovery with patterns has four phases, just as horizontal discovery with probes does. However, for the last two phases, Discovery triggers operations from a pattern, rather than additional sets of probes.">Horizontal discovery process flow with patterns</a></li></ul> </div> <div class="p"><div class="note"><span class="notetitle">Note:</span> For information on Probe to Pattern migration see the knowledge article <a class="xref" href="https://support.servicenow.com/kb_view.do?sysparm_article=KB0694477" target="_blank" rel="noopener noreferrer">KB0694477</a>.</div> </div> </div> <div class="section" id="c-UsingPatternsForHorizontalDiscovery__section_fy5_5n2_r2b"><h2 class="title sectiontitle">How Discovery uses patterns</h2> <p class="p">A pattern performs the same function as a probe: it identifies and explores a target CI. Discovery uses patterns only during the last two phases of discovery: Identification and Exploration.</p> <p class="p">When you kick off horizontal discovery with patterns, the Scanning and Classification phases run as they would if you were not using patterns (only using probes and sensors). After the Classification stage completes, Discovery looks at the trigger probes on the classifier to see which probe to launch. When the <span class="keyword parmname">Horizontal Pattern</span> probe is specified as a trigger probe, Discovery launches both the <span class="keyword parmname">Horizontal Pattern</span> probe and the pattern that it specifies.</p> </div> <div class="section" id="c-UsingPatternsForHorizontalDiscovery__section_xfm_nqj_h2b"><h2 class="title sectiontitle">Differences between probes and patterns</h2> <p class="p">The main differences between using patterns for horizontal discovery and using only probes for horizontal discovery are outlined in this table:</p> <div class="p"> <div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="c-UsingPatternsForHorizontalDiscovery__table_zxz_nfj_h2b" class="table" frame="border" border="1" rules="all"><colgroup><col style="width:22.123893805309734%" /><col style="width:39.38053097345132%" /><col style="width:38.49557522123893%" /></colgroup><thead class="thead" style="text-align:left;"><tr class="row"><th class="entry cellrowborder" style="vertical-align:top;" id="d419365e120">Topic</th><th class="entry cellrowborder" style="vertical-align:top;" id="d419365e123">Horizontal discovery with probes</th><th class="entry cellrowborder" style="vertical-align:top;" id="d419365e126">Horizontal discovery with patterns</th></tr></thead><tbody class="tbody"><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e120 ">Discovery phases</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e123 ">Probes run during all four discovery phases.</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e126 ">Patterns run only during the identification and exploration phases. Discovery still uses the Shazzam probe and port probes to kick off discovery.</td></tr><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e120 ">Finding new CIs</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e123 "><p class="p">Discovery offers several out-of-box probes and sensors.</p> <p class="p">However, if you want to find new CIs or change the data that Discovery populates in the CMDB, you must create news probes and sensors or customize the existing ones. To do this, you need knowledge of Java and JavaScript, and you need to understand how probes work together with other probes and with sensors.</p> </td><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e126 "><p class="p">Discovery is offering more patterns in every major release and on the <a class="xref" href="https://store.servicenow.com/sn_appstore_store.do#!/store/search?apptype=servicenow&orderby=rating" target="_blank" rel="noopener noreferrer">ServiceNow App Store</a>.</p> <p class="p">If you want to create a new pattern or customize an existing one, you can use the pattern designer, which is a user-friendly interface that helps you construct steps and enter values.</p> </td></tr><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e120 ">Feature support</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e123 ">Supports all standard network, and CI discovery. Certain applications are not supported without the use of patterns. See <a class="xref" href="../../service-mapping/reference/r_SupportedApplications.html" title="Discovery and Service Mapping can discover a wide range of operating systems and applications.">Detailed information on products discovered by ITOM Visibility</a> for a full list.</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e126 ">In addition to supporting all standard discovery, patterns support: <ul class="ul" id="c-UsingPatternsForHorizontalDiscovery__ul_pzk_1rz_h2b"><li class="li">Cloud discovery</li><li class="li">configuration file tracking</li><li class="li">CI deletion strategies</li></ul> </td></tr><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e120 ">The ECC queue and troubleshooting</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e123 "><p class="p">Discovery creates Multiple ECC Queue records depending on how many probes are launched.</p> <p class="p">To troubleshoot any issues with horizontal discovery, you must analyze several ECC queue records to see the data that Discovery retrieved.</p> </td><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e126 "><p class="p">Discovery creates only one additional ECC queue record for the pattern.</p> <p class="p">To troubleshoot any issues with horizontal discovery during identification and exploration, you only have to analyze one ECC queue record for the pattern.</p> </td></tr><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e120 ">Performance</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e123 ">Depending on what type of target CI you are trying to identify and explore, Discovery might trigger multiple probes during the identification phase, and then trigger additional probes during the discovery phase. It is possible that horizontal discovery with probes can take longer because of the extra overhead in triggering and processing many probes.</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d419365e126 ">Discovery triggers one pattern during the identification an exploration phases. All operations that Discovery needs to run are in the pattern and Discovery can execute them in order until the pattern is finished. Therefore, pattern discovery can lead to faster performance.</td></tr></tbody></table> </div> </div> </div> <div class="section"><h2 class="title sectiontitle">Patterns for top-down and for horizontal discovery</h2> <p class="p">Both Discovery and Service Mapping can use the same pattern for horizontal and top-down discovery. But they are edited differently. See <a class="xref" href="../../service-mapping/task/t_CreatePatternPatDef.html" title="Create or modify a discovery pattern and define its basic attributes.">Create or customize patterns</a> for all steps. If you take a pattern that was exclusively used for top-down discovery and you want to use it for horizontal discovery, you have to make a few modifications. See <a class="xref" href="c-UsingPatternsForHorizontalDiscovery.html#t-UseSMPatternForDisco" title="If you want to use a new pattern, or if you already have a pattern that you were using for top-down discovery, you can use the pattern for horizontal discovery with a few modifications to the relevant classifier.">Use a pattern for horizontal discovery</a> for instructions.</p> </div> </div> <div class="related-links"> <div class="familylinks"> <div class="parentlink"><strong>Parent Topic:</strong> <a class="link" href="../../../product/discovery/reference/r-discovery.html" title="ServiceNow Discovery is an automated process that continuously scans and identifies all the components within the IT infrastructure. It plays a crucial role in maintaining an accurate and up-to-date CMDB 360 with the information it finds.">Discovery</a></div> </div> </div><div class="topic concept nested1" id="pattern-orchestrator"> <h2 class="title topictitle2" id="ariaid-title2">Pattern Orchestrator</h2> <div class="body conbody"><p class="shortdesc">Pattern Orchestrator is a process that allows a discovery to trigger multiple patterns related to a collection of data in a hierarchical manner. This is to help address issues with large datasets (or large payloads) that can cause slow discoveries and OOM (out-of-memory) issues on a MID Server.</p> <div class="section" id="pattern-orchestrator__section_bsf_4dn_cmb"> <p class="p">The Pattern Orchestrator is accessed in the <span class="ph uicontrol">Pattern Orchestrator</span> tab in the <span class="ph uicontrol">Pattern Designer</span>. The tab contains three new tables: <span class="ph uicontrol">Trigger Rules</span>, <span class="ph uicontrol">Orchestrator Input</span>, <span class="ph uicontrol">Orchestrator Output</span>.</p> <img class="image" id="pattern-orchestrator__image_ykb_wfn_cmb" src="../image/pattern-orchestrator-tab.png" alt="The Pattern Orchestrator tab in the Pattern Designer." /> <div class="p">The <span class="ph uicontrol">Trigger Rules</span> table specifies the parent pattern with the <span class="ph uicontrol">Parent Pattern</span> field. The <span class="ph uicontrol">Batch Size</span> field specifies how many items should be triggered from the parent pattern to the child pattern. <span class="ph uicontrol">Batch Size</span> has the options <span class="ph uicontrol">Count</span>, <span class="ph uicontrol">All</span>, and <span class="ph uicontrol">Use Parent Context Only</span>. <ul class="ul" id="pattern-orchestrator__ul_srv_n3n_cmb"><li class="li"><span class="ph uicontrol">Count</span> must specify a number for the <span class="ph uicontrol">Batch Size Count</span>. The child pattern is triggered each time the parent pattern sends the specified number of CIs.</li><li class="li"><span class="ph uicontrol">All</span> uses every CI sent from the parent pattern and triggers the child one time.</li><li class="li"><span class="ph uicontrol">Use Parent Context Only</span> relies on the parent pattern's output settings to dictate which child pattern should trigger. This is useful when two patterns have the same parent, but you need one to trigger before the other.</li></ul> </div> <p class="p">The <span class="ph uicontrol">Orchestrator Input</span> uses the <span class="ph uicontrol">CI Type</span> field to accept CI types from its parent pattern or parent's parent pattern. The <span class="ph uicontrol">Saved As</span> field saves the CI type's name to be used in the pattern. Service accounts are a special case and must be named service_account. The <span class="ph uicontrol">CI Attributes</span> field uses any outputs from the parent pattern to select which attributes to use.</p> <p class="p">The <span class="ph uicontrol">Orchestrator Output</span> controls which data will be sent to subsequent patterns. It has the fields <span class="ph uicontrol">CI Class Type</span>, which is the type of CI being discovered, and <span class="ph uicontrol">Variable Names</span> which specifies the variables to be passed on as inputs to child patterns. Any variables not specified in <span class="ph uicontrol">Variable Names</span> are not sent to child patterns. The variable <span class="ph uicontrol">source_native_key</span> can be manually added by searching for it in the <span class="ph uicontrol">Variable Names</span> field.</p> </div> <div class="section" id="pattern-orchestrator__section_n4l_5mn_cmb"><h3 class="title sectiontitle">Source Native Key</h3> <p class="p">In some situations, one pattern may get partial information about a CI, while another pattern gets partial info about the same CI. Instead of creating redundant records or discarding partial information, the information is stored in the CMDB IRE Partial Payloads [cmdb_ire_partial_payloads_list] table. After enough patterns gather partial information, it can correlate that data to provide complete information on the CI.</p> </div> <div class="section" id="pattern-orchestrator__section_stt_24n_cmb"><h3 class="title sectiontitle">Pagination</h3> <p class="p">Another way to reduce stress on the MID Server's memory is pagination. Pagination breaks a large payload up into smaller, ordered slices called pages. Pagination limits the maximum size of items received and generates a token. Once that page is processed, the token is passed to the next page, which is then processed, until all the pages are completed.</p> <p class="p">Pagination is controlled from the Custom Operations table [sa_custom_operation]. The field <span class="ph uicontrol">Is pagination capable</span> is hidden by default on the form, and can be added to the form with the <span class="ph uicontrol">Personalize Form</span> controls. Once that is set to true, the associated pattern in the pattern designer has the field <span class="ph uicontrol">Paginated</span>. Setting the <span class="ph uicontrol">Paginated</span> field to true runs that step in the pattern with pagination.</p> </div> </div> </div> <div class="topic task nested1" id="t_AddHorizontalPatternProbe"> <h2 class="title topictitle2" id="ariaid-title3">Add the Horizontal Pattern probe to a classifier</h2> <div class="body taskbody"><p class="shortdesc">To use a pattern for the identification and exploration phases of horizontal discovery, you must add the Horizontal Pattern probe to the classifiers for the CIs are you trying to discover.</p> <div class="section prereq p">Role required: discovery_admin</div> <div class="section context"> <div class="p"><div class="note warning"><span class="warningtitle">Warning:</span> This procedure is only intended for custom classifier records or those that do not include a pattern by default. However, if you have already populated your CMDB with data using probes from this classifier and then switch to use patterns, Discovery may create duplicate CIs. Therefore, only follow this procedure if you have never run Discovery with probes for this classifier type.</div> </div> </div> <ol class="ol steps"><li class="li step stepexpand"> <span class="ph cmd">Navigate to <span class="ph menucascade"><span class="ph uicontrol">All</span> > <span class="ph uicontrol">Discovery Definition</span> > <span class="ph uicontrol">CI Classification</span> > <span class="ph uicontrol">{classifier type}</span></span>.</span> </li><li class="li step stepexpand"> <span class="ph cmd">Open the classifier record.</span> </li><li class="li step stepexpand"> <span class="ph cmd">Click the <span class="ph uicontrol">Triggers probe</span> related list.</span> </li><li class="li step stepexpand"> <span class="ph cmd">Deactivate the existing identification and exploration probes.</span> </li><li class="li step stepexpand"> <span class="ph cmd">Click <span class="ph uicontrol">Edit</span>, and add the <span class="ph uicontrol">Horizontal Pattern</span> probe.</span> <div class="itemgroup info">The probe appears in the related list.</div> </li><li class="li step stepexpand"> <span class="ph cmd">From the related list view, double click the field under the <span class="ph uicontrol">Pattern</span> column and add the pattern you want to associate with the classification.</span> <div class="itemgroup info"> <img class="image" id="t_AddHorizontalPatternProbe__image_zkz_xpq_mx" src="../image/TriggerProbe-HorizontalProbe.png" alt="Adding the Horizontal Pattern probe and a pattern" /> </div> </li><li class="li step stepexpand"> <span class="ph cmd">Remove or deactivate the other probes from the <span class="ph uicontrol">Triggers probe</span> related list.</span> <div class="itemgroup info"> <div class="note" id="t_AddHorizontalPatternProbe__PatternDeletion"><span class="notetitle">Note:</span> If you delete a pattern, the Horizontal Pattern probe is not automatically removed from the classifier. You must select another pattern for the Horizontal Probe, or you can switch back to using identification and exploration probes specific to the classifier. If you use the Horizontal Probe without a pattern specified, discovery stops after the classification stage.</div> </div> </li></ol> </div> </div> <div class="topic task nested1" id="t-UseSMPatternForDisco"> <h2 class="title topictitle2" id="ariaid-title4">Use a pattern for horizontal discovery</h2> <div class="body taskbody"><p class="shortdesc">If you want to use a new pattern, or if you already have a pattern that you were using for top-down discovery, you can use the pattern for horizontal discovery with a few modifications to the relevant classifier.</p> <div class="section prereq p">Role required: discovery_admin</div> <div class="section context" id="t-UseSMPatternForDisco__context_ydg_rwk_h2b"> <div class="p"><div class="note warning"><span class="warningtitle">Warning:</span> This procedure is only intended for custom classifier records or those that do not include a pattern by default. However, if you have already populated your CMDB with data using probes from this classifier and then switch to use patterns, Discovery may create duplicate CIs. Therefore, only follow this procedure if you have never run Discovery with probes for this classifier type.</div> </div> </div> <ol class="ol steps"><li class="li step stepexpand"> <span class="ph cmd">Verify that Discovery can use the pattern:</span> <ol type="a" class="ol substeps" id="t-UseSMPatternForDisco__substeps_xvv_yxl_nx"><li class="li substep substepexpand"> <span class="ph cmd">Navigate to <span class="ph menucascade"><span class="ph uicontrol">Pattern Designer</span> > <span class="ph uicontrol">Discovery Patterns</span></span>.</span> </li><li class="li substep substepexpand"> <span class="ph cmd">Open the pattern.</span> <div class="itemgroup info">Application patterns that Service Mapping uses are indicated as type <span class="ph uicontrol">1-Application</span>.</div> </li><li class="li substep substepexpand"> <span class="ph cmd">In the <span class="ph uicontrol">Identification Sections</span> on the <span class="ph uicontrol">Basic</span> tab, verify that there is at least one section that allows for an entry point type of <span class="ph uicontrol">TCP</span> or <span class="ph uicontrol">All</span>.</span> <div class="itemgroup info">If not, create one. See the Identification steps for <a class="xref" href="../../service-mapping/task/t_CreatePatternPatDef.html" title="Create or modify a discovery pattern and define its basic attributes.">creating a new pattern</a>.</div> </li><li class="li substep substepexpand"> <span class="ph cmd">Save the pattern.</span> </li></ol> </li><li class="li step stepexpand"> <span class="ph cmd">On the instance, create or modify the classification for the CI type you want to discover.</span> <div class="itemgroup info">Configure the classifier as follows:</div> <ol type="a" class="ol substeps" id="t-UseSMPatternForDisco__substeps_u2m_kyl_nx"><li class="li substep substepexpand"> <span class="ph cmd">Navigate to <span class="ph menucascade"><span class="ph uicontrol">Discovery Definition</span> > <span class="ph uicontrol">CI Classification</span> > <span class="ph uicontrol">{classification type}</span></span>.</span> </li><li class="li substep substepexpand"> <span class="ph cmd">Open the relevant classifier.</span> </li><li class="li substep substepexpand"> <span class="ph cmd">Configure the classifier as follows:</span> <div class="itemgroup info"> <ul class="ul" id="t-UseSMPatternForDisco__ul_yzm_2tj_kx"><li class="li"><span class="ph uicontrol">Relationship type</span>: Select <span class="ph uicontrol">Runs on::Runs</span> (for process classifiers only)</li><li class="li"><span class="ph uicontrol">Condition</span>: Configure the same condition you defined in the pattern.</li><li class="li"><span class="ph uicontrol">Triggers probes</span> Related list: Add the Horizontal Pattern probe, and then add the pattern you are using to the <span class="ph uicontrol">Pattern</span> column.</li></ul> </div> </li></ol> <div class="itemgroup info">See <a class="xref" href="../task/create-discovery-ci-classification.html" title="A CI classification allows Discovery to discover most common operating systems, network devices, and processes.">Create a Discovery CI classification</a> for a description of the other fields on the classifier.</div> </li></ol> <div class="section postreq"> <p class="p">Run the pattern in <a class="xref" href="../../service-mapping/task/t_CreatePatternPatDef.html" title="Create or modify a discovery pattern and define its basic attributes.">Debug mode</a> to test it. When you are sure the pattern works, you can run discovery by setting up a discovery schedule or running an on-demand discovery. See <a class="xref" href="../task/t_CreateADiscoverySchedule.html" title="A Discovery schedule determines what horizontal Discovery searches for, when it runs, and which MID Servers are used. Create a Discovery schedule for your local environment or a schedule for discovering the resources in your cloud service account.">Schedule a horizontal Discovery</a> for more information.</p> </div> </div> </div> </div> </body></html></div>