Custom Business Application Tables Exist <!-- .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; } --> Get Well Playbook Custom Business Applications Exist A step by step guide to analyze and remediate custom business application tables 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: Identify and Analyze Custom Business Application Tables Play 2: Manually Reclassify Custom Business Applications Play 3: Reclassify Custom Business Applications Semi-Automatically Play 4: Remove Custom Business Application Tables Data Governance Summary Goal of this Playbook To help you identify custom business application tables and replace them with default business application tables. Details about this playbook. Author Peter LaudatDate 12/16/2020Addresses HSD # HSD0001701Applicable ServiceNow Releases All ReleasesTime required Approximately 1 to 8 hours Audience ServiceNow Admin or Discovery AdminConfiguration Management TeamIT ArchitectService Portfolio ManagerApplication Service OwnerBusiness Service Owner Problem Overview ServiceNow recommends against custom business application tables. Use default classes whenever possible to get the value and ease of use provided by their dependent NOW platform functionalities and supported platform features. If the records within your CMDB (and CSDM specifically) are not located within the provided classes, you risk incurring additional costs in terms of ongoing maintenance, support and development of all sorts of reports, dashboards, digital workflows, access controls and much more that are already being developed, tested, and delivered by the platform. Executive Summary How this playbook can help you achieve business goals This playbook will help you find and reclassify your custom business application tables into default business application tables. Default business application tables natively support integrated portfolio management activities. How this playbook is structured This playbook is structured to guide the user through five plays: Play 1 (analyze) helps you identify your instance's custom business applications and analyze them for reclassificationPlay 2 (fix) helps you manually reclassify your custom business applications to default business applicationsPlay 3 (fix) helps you automate reclassification of your custom business applications to default business applicationsPlay 4 (fix) helps you remove your empty business applications tables Problem Analysis Upstream Causes Legacy – default business application tables were unavailable until Kingston release, so custom business application tables were createdEducational – inadequate understanding of the correct purpose and use of default business application tablesProcess – population of business application tables has not been mandatoryData Migration – custom business applications were created via import from legacy source(s)Competing Priorities – usage of or migrations to default business application tables were lower priorities Downstream Consequences Data Consequence Custom business application table usage will add data maintenance burden (e.g., ETL imports/exports, table cleanup, etc.) to maintain and use themData duplication between custom and default tables can cause confusion and mistakes when relationships are createdData inconsistencies resulting from custom business application tables can erode trust, which can lead to inefficiencies causing teams to seek data elsewhere Operation Consequence Audit and Compliance will have to find alternative means to understand business impactSince the visibility of the associations between technical dependencies and business impact are lost with custom business applications, teams will struggle with important decisions in areas such as work prioritization and changesReduced ability for service owners to oversee business applications will cause them to compensate by using unintegrated and possibly non-authoritative sources App Consequence Use of custom business applications encourages additional customizations (e.g., forms, reports, etc.) that can affect platform performance and must be rebuilt in subsequent platform versionsCustom business applications are invisible to the rest of the platform unless much effort is made to add further customizations to enable themServiceNow applications such as APM and Software Asset Management (SAM) may not function properly since they have critical dependencies on the relationships between default business application tables and other tablesCustom table usage and fields may impact NOW instance scalability, automation, and time to value Impact on Your Business Custom business applications can impact the following: Increase Operational Visibility Process AlignmentLifecycle Management Audit/Compliance System IntegrityData GovernanceProcess GapsInformation Security Service Level Awareness Data IntegrationModel Management Process Automation Service AwarenessData AccuracyIntegrity of Relationships Engagement Questions: Consider the answers to these questions: Are you aware that you have custom business application tables?When were they created?Who wanted custom business application tables?Why were custom business application tables created?Are the custom business tables in use?Who uses the custom business tables today, and for what purpose?When do you plan to migrate from custom to default business application tables? Remediation Plays Summary The table below lists and summarizes each of the remediation plays in the playbook. Details are included later. Play Name Play 1: Analysis - Identify and analyze custom business application tables What this play is about Identify and analyze custom business application tables for reclassification or removal Required tasks Review script output Play 2: Manually reclassify custom business applications What this play is about Reclassify custom business applications Required tasks Manually reclassify the records found in the custom business application tables Play 3: Reclassify custom business applications semi-automatically What this play is about Reclassify custom business applications Required tasks Semi-automatically export, reclassify, and import many custom business applications Play 4 - Remove custom business application tables What this play is about Remove empty custom business application tables Required tasks Filter Configuration Items and remove empty custom business application tables Play 1: Analysis - Identify and Analyze Custom Business Application Tables What this Play is about You will run a script to identify custom business application tables on your instance. Required tasks Option 1: Install CMDB and CSDM Data Foundations Dashboard from the ServiceNow App StoreNavigate to the CMDB Data Foundations Dashboard module in the left navigation menuSelect the Customizations tabSelect the Use of Custom Attributes line in the score card shows the current scoreSelect the Services Missing Owners report to view a list of services CIs that are missing owners If you see a count of zero then this playbook is not applicable to you. Option 2: Download, import, and run the HSD0001701 - Query Script.xml attached to this article. Custom business application table names begin with the prefixes "u_" or "x_" and may include combinations of strings containing "bus", "biz", or "app" as in the sample output listed below.In the example below, the script returned custom tables u_cmdb_ci_biztalk_app and u_cmdb_ci_business_application.Review each table returned by the script by entering "<custom table name>.list" in the Filter navigator at the top left corner to display the list view of its records. If the table is not a custom business, ignore it.The example below depicts the list of custom BizTalk Apps returned by "u_cmdb_ci_biztalk_app.list". Review of this table's intent and data determined that this table was not intended as a custom business application, so it was ignored.The example below depicts the list of Custom Business Applications returned by "u_cmdb_ci_business_application.list". Review of this table's intent and data determined that this table contains custom business applications. Evaluate the custom business applications you wish to reclassify to default business applications. Review the migration guidance to help you evaluate your dependencies and develop a migration plan that eliminates or mitigates misplacement or loss of custom attribute information.Continue on to the next play to remediate any findings. Play 2: Fix - Manually Reclassify Custom Business Applications What this Play is about Manually reclassify each custom business application to a default business application, repeating as necessary. Required tasks Review the reclassification guidance.NOTE: Each class is defined with a unique set of attributes consisting of attributes derived from the parent class and additional attributes defined for the class. "Reclassify" means to modify a Configuration Item's class attribute to assign it to another class higher (downgrade), lower (upgrade), or in a different branch (switch) in the class hierarchy with concomitant changes in attribute sets. Note the following excerpt from the documentation:Type "<custom table name>.list" in the Filter navigator at the top left to display the list of custom business applications in the table.Click in the business application's class field just right of the class name value to activate the pulldown menu of reclassification value options. Select ServiceNow's default Business Application class option from the pulldown menu and click the green check mark just to the right to save your selection. Be careful to avoid selecting a similarly named custom business application class. You may notice that the class field may go blank; simply reload the page. The reclassified business application should no longer be visible in the custom business applications table. Verification steps Navigate to CSDM > Design > Business ApplicationLocate your reclassified business applicationContinue on to Play 4 after you have removed all custom business applications from the custom business application table Play 3: Fix - Reclassify Custom Business Applications Semi-Automatically What this Play is about You can semi-automate custom business application reclassifications by exporting, modifying, and importing the modified records. Required tasks Review the reclassification guidance.NOTE: Each class is defined with a unique set of attributes consisting of attributes derived from the parent class and additional attributes defined for the class. "Reclassify" means to modify a Configuration Item's class attribute to assign it to another class higher (downgrade), lower (upgrade), or in a different branch (switch) in the class hierarchy with concomitant changes in attribute sets. Note the following excerpt from the documentation:Follow GetWell Knowledge Article KB0830072 to export custom business application records into an Excel spreadsheet template, modify the class attributes in the template, and then import the records back into your instance. Verification Steps Repeat the verification steps in Play 2 for your imported (default) business applicationsContinue on to Play 4 after you have removed all custom business applications from the custom business application table Play 4: Fix - Remove Empty Custom Business Application Tables What this Play is about Manually remove each empty custom business application table, repeating as necessary. Required tasks Enter "cmdb_ci.filter" in the Filter navigator at the top leftFilter the list for the custom business applications table classDelete the class Verification Steps Rerun the query script in Play 1. The output should no longer display the custom business application table name. Data Governance What this Play is about This play describes some good practices that should discourage the creation of custom business application tables without proper review and approval. Required tasks Document an internal policy that prevents the creation of cmdb_ci-descended custom business applications without approval from a qualified person or teamIt is recommended that the CMDB owner, in partnership with the CI Class Owner, should approve any new business applications in alignment with business requirementsInstitute a code review process that watches for cmdb_ci-descended custom business applications in Update SetsCreate a report that shows any cmdb_ci-descended custom business applications after the last business application cleanup was performedRegularly review Configuration Management Database (CMDB) release notes for announcement of NOW platform changesWrap change management processes around business application creation Congratulations You have completed this Get Well Playbook.