Hardware Models Should Have Manufacturer and Model Number Product Success Playbook Hardware Models Should Have Manufacturer and Model Number A step-by-step guide to analyze and remediate Unpopulated Manufacturer and Model Number Attributes in Hardware Models Table of Contents Summary Goal of this Playbook Audience Problem Overview Executive Summary How this playbook can help you achieve business goals How this playbook is structured Problem Analysis Upstream Causes Downstream Consequences Impact on Your Business Engagement Questions Remediation Plays Summary Play 1: Review your data Play 2: Initially Analyze your Hardware Model records Play 3: Fix Play Play 4: Fix Play Data Governance Summary Goal of this Playbook Discover, identify, and remediate Hardware Model records with unpopulated Manufacturer or Model number attributes. Details about this playbook Author Peter LaudatDate 03/16/2023Addresses HSD # HSD0011774Applicable ServiceNow Releases AllTime Required Approximately 1 to 8 hours (depending on your environment) Audience Asset Management teamConfiguration Management teamDiscovery teamServiceNow System Administrator Problem Overview Hardware inventory data usually comes from multiple sources which are not always consistent. Without Manufacturer and Model number, ServiceNow Hardware Model Normalization might be unable to automatically normalize records with inconsistent product names into one common display name, a concatenation of Normalized manufacturer, Product name, and Model number in alignment with the global standard for product recognition, the United Nations Standard Product and Services Code (UNSPSC). The image below shows an example of how three variations of an Apple Macbook Pro 15" record might look before and after normalization. Executive Summary How this playbook can help you achieve business goals This playbook provides guidance on how to find, remediate, and prevent Hardware Model records with unpopulated Manufacturer or Model number attributes. How this playbook is structured This playbook guides you through 4 plays to analyze and remediate unpopulated Manufacturer or Model number attributes in Hardware Model records: Play 1 (a data review play) is aimed at identification of Hardware Model records with unpopulated Manufacturer or Model number attributes.Play 2 (an analysis play) is aimed at determining how Hardware Model records entered the system with unpopulated Manufacturer or Model number attributes.Play 3 (a fix play) is aimed at remediation of external sources of Hardware Model records with unpopulated Manufacturer or Model number attributes.Play 4 (a fix play) is aimed at manual remediation of Hardware Model records with unpopulated Manufacturer or Model number attributes.Data governance is aimed at prevention of unpopulated Manufacturer or Model number attributes in Hardware Models. Problem Analysis Upstream Causes Incomplete data imported from external sources (integrations, import sets, discovery, manual entry).Transform Maps that do not include or improperly map the Manufacturer or Model number.Customizations that result in unpopulated Manufacturer or Model number at asset creation time.Customizations that result in failure to synchronize CI Manufacturer or Model number to hardware asset Model record.Someone might have accidentally cleared the Hardware Model record Manufacturer or Model number. Downstream Consequences Data Consequence Multiple Hardware Model records representing the same version or configuration of an asset, resulting in an indefinite list of assets. Operational Consequence Additional data maintenance burden (e.g., manual asset/CI reconciliation, ETL imports/exports, table cleanup, etc.).Difficulty identifying the asset with vendor delays or missed opportunities to realize full warranty, support, renewal, and contractual benefits.IT service actors' trust is eroded by confusing asset information.IT service actors are burdened and delayed while seeking alternate sources of accurate data on the fly.Use of alternate sources of asset information reduces recording and usage of data in the system and in the audit function, resulting in lost audit trails.Degraded asset management processes due to misleading hardware device counts, statuses, locations, users, and historical impact of other ITSM processes on them. App Consequence ServiceNow Hardware Model Normalization cannot automatically and fully align normalize Hardware Models with missing Manufacturer or Model number values.The ServiceNow Content Library cannot automatically populate the inventory with asset metadata that can't be discovered, such as end of support, end of extended support, and end of life dates.Management and tracking of assets through various ServiceNow platform asset applications including Product Catalog, Asset Management, and Procurement is obscured by inconsistent naming. Impact on Your Business The lack of or partial normalization caused by unpopulated Hardware Model Manufacturer and Model numbers degrades: Audit/Compliance compliance with regulatory and contractual responsibilities.management ability to maintain internal controls and audit trails. Process Automation process automation reliant upon accurate, definitive Hardware Models. Operational Cost investment visibility, enablement of better operational and financial management decisions, and room in the budget to drive innovation and growth.ability to properly manage warranties, contracts, vendor agreements, and software licenses. Service Level Awareness visibility of physical devices throughout their asset life cycles (Request, Procure, Receive, Stock, Deploy, Monitor, Support, MAC, Dispose); organizations won't always know what is in stock, which assets belong to them, where they're located, their users, etc. Engagement Questions: Consider the answers to these questions: How are assets populated? Manually? Via Discovery? Integration with external sources?Are you currently using Hardware Asset Management?Is there a documented process in place to address missing or incorrect Manufacturer or Model numbers? Remediation Plays SummaryThe table below lists and summarizes each of the remediation plays in the playbook. Details are included later. Play Name Review your data What this play is about Identify Hardware Models with unpopulated Manufacturer or Model number attributes Required tasks Display a list of Hardware Models with unpopulated Manufacturer or Model number attributes Analysis Play What this play is about Initially analyze how Hardware Model records' Manufacturer or Model number attributes may have arrived at an unpopulated state. Required tasks Initially analyze the list list of Hardware Models with unpopulated Manufacturer or Model number attributes for causes Fix Plays What this play is about Analyze and remediate external sources of Hardware Models Required tasks Analyze and remediate Field Maps, Transform Maps, and external data sources Fix Plays What this play is about Manually update Hardware Models with unpopulated Manufacturer or Model number attributes Required tasks Manually update Hardware Models with unpopulated Manufacturer or Model number attributes Data Governance What this play is about Take steps to prevent missing Manufacturer and Model numbers in Hardware Models Required tasks Rerun this playbook Play 1 - Review your data What this Play is about Identify Hardware Models with unpopulated Manufacturer or Model number attributes. Required tasks Navigate to Product Catalog > Product Models > Hardware Models.Filter the list for Hardware Models with unpopulated Manufacturer or Model number (ManufacturerISEMPTY^ORModel_numberISEMPTY).Example:If zero records are returned, stop here, otherwise proceed to the next play. Play 2 - Initially Analyze the Hardware Model records What this Play is about Initially analyze how Hardware Model records' Manufacturer or Model number attributes may have arrived at an unpopulated state. Required tasks Add additional columns as needed and filter or group the list in various ways to help analyze and identify the method (e.g., manual entry, import, integration) employed to create the Hardware Model records in question. In the example below, Created = 2023-03-22 16:00:39 in multiple (six) records in the picture below suggests they were imported from an external source. Other records with unique time stamps were likely manually recreated.4. Use the results of your analysis to identify the remediation and thus the play to proceed to next: To remediate Hardware Models created viaProceed to PlayExternal data sources3Manual entry4 Play 3 - Fix Play - Remediate External Sources of Hardware Models What this Play is about Review external source(s) of Hardware Model data that and ensure that they include Manufacturers and Model numbers by taking a look at the associated transform maps and data sources. Transform Maps provide several means to take external data into the platform. Because of that, we will need to check several locations for these mappings. Required tasks Navigate to System Import Sets > Transform Maps.Filter the list for where the Target Table field is cmdb_hardware_product_Model and run the filter.If you know which Transform Maps to check, review each map for Field mappings where target fields are set to Manufacturer or Model number and transform scripts where the script contains Manufacturer or Model_number.(Optional) For help to navigate to the Field maps list view and locate the correct transform map(s), type "sys_transform_entry.list" in the Filter Navigator followed by Enter, then filter the list view such that Target field is Manufacturer OR Target field is Model number OR Source script contains Manufacturer OR Source script contains Model_number. Note that the Map column contains references to the Transform Maps.Analyze the result list returned from the query.Example:The Field Maps list shows two Transform Maps, Imported HW Model Transform and u_imp_tmpl_cmdb_hardware_product_model, with Target table Hardware Model [cmdb_hardware_product_Model] and Target fields Manufacturer and Model_number.Check whether the external data source has records with unpopulated Manufacturer or Model number attributes. Using the filter navigator, navigate to <Source table>.LIST. For the example above, the user might navigate to sn_hamp_imported_hw_models.LIST as depicted below:Sort the import set rows by row, and click open a row, as in this picture from the example:Check that the source data contains records with populated Manufacturer and Model number attributes. In the pictures below from the example, u_type (representing model number) in one record and u_maker (representing publisher) in another record are unpopulated, indicating that the external data source needs needs has missing data that needs to be addressed. Returning to the Transform Map Field Maps, if one or both of the desired Target fields are missing, it may be that you need to add a field mapping to the Transform Map or update the script to handle the data correctly. Note: When adding a new field mapping, you should confirm the presence of the Manufacturer and Model number in the recent data imports (in System Import Sets > Advanced > Import Sets). If the either is not present in the imported data, you must consult with the owner or admin of the external system to get it added to either the exported data (for imports of type CSV, XLSX or XML), or added to the SQL syntax for the JDBC data sources.Have a look at the Choice action field for your Field Maps. The Choice action field specifies what to do if the import set contains a reference field or choice value other than those available. In the example depicted above, Transform Map u_imp_tmpl_cmdb_hardware_product_model, the Choice action is set to ignore for Source field u_manufacturer. This means that particular Field Map will ignore the specific Source field attribute in the Import Set; create will create a new choice or record in the reference table. Determine what Choice action setting is appropriate for the field map and change it as needed.Have a look at the Coalesce field for your Field Maps. Configuring a target field to coalesce causes the import set to treat the field as a unique key. When selected, the import set application attempts to match source values to records with values from an existing record. If a match is found, the transform map updates the record instead of creating a new record. When false, the import set application always creates new records for each transformation. If multiple fields are set to coalesce, all coalesce values must match an existing record. If two fields are set for coalescing and a matching value is found for one of the coalescing fields but not on the other, a new record is inserted. Determine what Coalesce setting is appropriate for the field map and change it as needed.Once you've identified and corrected the cause, reimport the data with coalesce enabled.Proceed to the Data Governance section. Play 4 - Fix Play - Manually Update the Unpopulated Hardware Model Attribute Values What this Play is about Manually update Hardware Models with unpopulated Manufacturer or Model number attributes Required tasks You can directly update Hardware Models with unpopulated Manufacturer or Model number values in the list.Filter the list for unpopulated Manufacturer.Example: To select and batch update Manufacturer for multiple records, hold down the CMD or CTRL button, click to the right of "(empty)" in one of the Manufacturer fields, then drag the cursor up or down as needed to highlight the fields you wish to update. Double click one of the highlighted fields, click the magnifier glass icon, select a Manufacturer from the list, then click the green check mark. You will obviously need to update model_number individually or via import with Coalesce=true. Example:Batch selection and updateUpdated ManufacturersProceed to the Data Governance section. Data Governance What this Play is about Take steps to prevent missing Manufacturer and Model numbers in Hardware Model records. Required tasks Rerun Play 1 periodically or automate generation and distribution of reports on a scheduled basis.Execute the plays indicated by your analysis in Play 1.Review the Transform Maps as part of any new changes or configurations and make sure to use the new practices. Congratulations You have completed this Get Well Playbook. <!-- .SOKMKBArticle div.margin { padding: 10px 40px 40px 30px; color: #283d40; font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; font-size: 10pt; } .SOKMKBArticle div.fed{ background-color: #f5f8fa; border: 1px solid; border-color: #bfbfbf; padding: 10px; } .SOKMKBArticle .FedRestricted{ background-color: #c00000; color: #ffffff; padding: 10px; margin-top: 10px; text-align: center; font-size: 14pt; font-weight: bold; } .SOKMKBArticle .CustRestricted{ background-color: #ff0000; color: #ffffff; padding: 10px; margin-top: 10px; text-align: center; font-size: 14pt; font-weight: bold; } .SOKMKBArticle .SNRestricted{ background-color: #ea700d; color: #ffffff; padding: 10px; margin-top: 10px; text-align: center; font-size: 14pt; font-weight: bold; } .SOKMKBArticle .SNConfidential{ background-color: #ffc000; color: #ffffff; padding: 10px; margin-top: 10px; text-align: center; font-size: 14pt; font-weight: bold; } .SOKMKBArticle .Public{ background-color: #00b050; color: #ffffff; padding: 10px; margin-top: 10px; text-align: center; font-size: 14pt; font-weight: bold; } .SOKMKBArticle table.tocTable { border: 1px solid; border-color: #f2f2f2; background-color: #f2f2f2; padding-top: .6em; padding-bottom: .6em; padding-left: .9em; padding-right: .6em; } .SOKMKBArticle table.noteTable { align: left; border: none; border-color: #81b5a1; background-color: #f2f2f2; width: 100%; border-spacing: 2; font-size: 11px; } .SOKMKBArticle table.internalTable { border-top: 1px solid; border-left: 1px solid; border-color: #81b5a1; width: 100%; border-spacing: 1px; } .SOKMKBArticle .sp td { border-bottom: 1px solid; border-right: 1px solid; border-color: #81b5a1; background-color: #ffffff; height: 20px; padding-top: .5em; padding-bottom: .5em; padding-left: .5em; padding-right: .5em; } .SOKMKBArticle .sphr td { border-right: 1px solid; border-bottom: 1px solid; border-color: #81b5a1; background-color: rgb(245, 245, 245); padding-top: .5em; padding-bottom: .5em; padding-left: .5em; padding-right: .5em; height: 20px; } .SOKMKBArticle .sh td { border-bottom: 1px solid; border-right: 1px solid; border-color: #81b5a1; background-color: #81b5a1; color: #ffffff; height: 20px; padding-top: .5em; padding-bottom: .5em; padding-left: .5em; padding-right: .5em; } .SOKMKBArticle th { padding-top: .5em; padding-bottom: .5em; padding-left: .5em; padding-right: .5em; border-bottom: 1px solid; border-right: 1px solid; border-color: #646464; background: #646464; font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; font-size: 10pt; color: white !important; height: 20px; } .SOKMKBArticle td { border-color: #646464; margin: 5px 5px 5px 5px; padding: 5px 5px 5px 5px; font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; font-size: 10pt; color: #283d40; } .SOKMKBArticle p { color: #283d40; font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; } .SOKMKBArticle li { color: #283d40; font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; font-size: 10pt; line-height: 1.5; } .SOKMKBArticle pre { font-family: Courier New; } .SOKMKBArticle div { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; } .SOKMKBArticle hr { border-top-width: 1px; border-top-style: solid; border-top-color: #81b5a1; } .SOKMKBArticle a { color: #81b5a1; } .SOKMKBArticle a.two:link { padding: 15px 45px 15px 45px; margin-top: 20px; color: #ffffff; text-align: center; background-color: #1F8476; border: 1px solid; border-color: #1F8476; } .SOKMKBArticle a.two:visited { padding: 15px 45px 15px 45px; margin-top: 20px; color: #ffffff; text-align: center; background-color: #1F8476; border: 1px solid; border-color: #1F8476; } .SOKMKBArticle a.two:hover { color: #ffffff; background-color: #259b8a; } .SOKMKBArticle .button { padding: 15px 45px 15px 45px; margin-top: 20px; color: #ffffff; text-align: center; background-color: #1F8476; border: 1px solid; border-color: #1F8476; } .SOKMKBArticle .title { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #81b5a1; font-size: 30pt; } .SOKMKBArticle .hd1 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-size: 20pt; border-bottom: 1px solid; border-bottom-color: #81b5a1; text-decoration: none; } .SOKMKBArticle h1 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-size: 20pt; font-weight: normal; border-bottom: 1px solid; border-bottom-color: #81b5a1; text-decoration: none; } .SOKMKBArticle .hd2 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #68a1af; font-weight: bold; font-size: 16pt; text-decoration: none; } .SOKMKBArticle h2 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #68a1af; font-weight: bold; font-size: 16pt; font-weight: normal; text-decoration: none; } .SOKMKBArticle .hd3 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: normal; font-size: 14pt; text-decoration: none; } .SOKMKBArticle h3 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: normal; font-size: 14pt; text-decoration: none; } .SOKMKBArticle .hd4 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: normal; font-size: 12pt; text-decoration: none; } .SOKMKBArticle h4 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: normal; font-size: 12pt; text-decoration: none; } .SOKMKBArticle .hd5 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: bold; font-size: 10pt; text-decoration: bold; } .SOKMKBArticle h5 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: bold; font-size: 10pt; text-decoration: bold; } .SOKMKBArticle .hd6 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: normal; font-size: 10pt; text-decoration: underline; } .SOKMKBArticle h6 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: normal; font-size: 10pt; text-decoration: underline; } .SOKMKBArticle details { font-size: 10pt; } .SOKMKBArticle details[open] summary ~ * { animation: sweep .5s; margin-top: 0; padding-top: 10px; } @keyframes sweep { 0% {opacity: 0; margin-top: -10px} 100% {opacity: 1; margin-top: 0px} } .SOKMKBArticle summary { cursor: pointer; outline: none; margin-bottom: 3px; } .SOKMKBArticle .summary { background-color: #81b5a1; font-size: 10px; color: white; cursor: pointer; padding: 5px; width: 100%; border: none; text-align: left; outline: none; vertical-align: top; } -->