OBLYTECH Logo
OBLYTECH Logo
Common ServiceNow CMDB Mistakes and How to Avoid Them

Common ServiceNow CMDB Mistakes and How to Avoid Them

A common CMDB mistake is an error in how the configuration management database is designed, governed or kept current, and it usually shows up later as stale records, broken relationships and data nobody trusts. This page covers the mistakes that recur most often, why each one starts, and how to avoid them before the next import.

Misunderstanding Reconciliation Scope

The most frequent CMDB failure occurs when organizations try to reconcile too many attributes too quickly. Teams discover mid-project that discovery tools populate hundreds of fields, but the CMDB can only meaningfully track a small subset per CI type. The root cause is skipping the data model design phase and assuming that more fields mean better visibility.

To avoid this, map your actual operational decisions to specific attributes before discovery runs. Ask: does changing this attribute change how you support the CI? If not, exclude it. Start with just name, type, owner, and location. Run a time-boxed pilot on one CI class before expanding to others. Document why each field exists in your CMDB team wiki so new team members understand the decision.

Broken Relationship Chains

CMDB relationships form the foundation for impact analysis and dependency tracking, but many implementations treat them as optional decoration. When a service is down, the CMDB query that should show you the affected configuration items instead returns a long list of unrelated rows because relationships are incomplete or pointing to archived CIs. The issue stems from no clear responsibility for relationship maintenance after initial import.

Assign an owner for each relationship type and conduct regular audits against actual architecture diagrams. Use a report or the CMDB Health dashboard to list orphaned CIs with no relationships. Enforce relationship creation in your change control workflow: before approving any CI change that adds or removes dependencies, verify the CMDB relationship is created or updated. A small team can keep a mid-size environment current if its review workload is sized to the number of relationships that change each week.

Treating CMDB as a Static Inventory

The third major mistake is viewing the CMDB as a read-only inventory report instead of an operational tool that feeds change, incident, and problem workflows. When the CMDB data goes stale, nobody trusts it, and teams maintain shadow inventories in spreadsheets outside ServiceNow. The root cause is usually that discovery was run once and never refreshed, or refresh was scheduled but nobody acted on the import results.

Schedule discovery at a cadence that matches how fast your infrastructure changes: more often for cloud and virtualized infrastructure, less often for physical equipment. Define an escalation process when new CIs appear in discovery: they should be validated and assigned to a team within an agreed time. Create a dashboard that shows discovery deltas so your CMDB team sees what changed in the last run. If a CI is not updated for a period set in your governance model, flag it for decommissioning review rather than letting it drift as unknown.

Missing Stakeholder Buy-In and Governance

CMDB implementation often succeeds technically but fails operationally because nobody assigned clear ownership or enforced accountability. When a storage array is retired but remains in the CMDB because the operations team did not decommission it, or when an application dependency is created by a developer and never reviewed, the data quality deteriorates steadily. The root cause is vague governance that says someone should maintain the CMDB without specifying who, when, and against what criteria.

Document a governance model that names specific roles: CI steward (owns data quality for one CI type), relationship owner (keeps dependencies current), discovery lead (schedules and validates imports), and escalation contact (resolves data conflicts). Measure success by the share of CIs updated recently, and track this in a regular report presented to IT leadership. Set target data quality thresholds with the business, aiming for an assigned owner on every CI and documented relationships for critical services.

Overlooking CI Type Customization

Many teams struggle because they try to fit their business into the out-of-box CI types or over-customize early without understanding the long-term impact. Custom CI types created ad-hoc by different teams become inconsistent, difficult to report on, and hard to support through upgrades. The mistake occurs when a developer creates a custom application class for one project, then another team creates a second application class without knowing about the first one without knowing about the first one.

Before creating a custom CI type, audit your existing types and ask whether an unmodified type could work. If you do need a new type, involve your CMDB governance group and documentation team. Establish a naming convention, define required vs. optional attributes, and document the business driver. Keep custom types under a meaningful share of your total CI types; if you exceed that, re-evaluate your data model.

Identity keys that look stable and are not

Duplicate records are often blamed on discovery, but many of them start with a choice made during the first import: which attribute identifies an item. Teams often pick the IP address or the host name because both are visible in every feed. Both change. Addresses are reassigned by DHCP and by cloud networking, and host names are changed during rebuilds and during tidy-up projects. When the identity rule keys on a value that moves, the platform creates a new record instead of updating the old one, and impact analysis then splits a single server across two histories.

The fix is to decide the identity rule before the first import, using attributes that rarely change, such as a serial number for physical hardware or a cloud resource identifier for virtual items, and to document what happens when those are missing. Test the rule on a sample of records that have been renamed or re-addressed. If the rule creates two records in that test, it can create duplicates in production.

Retiring records by deleting them

A common reflex when a server is decommissioned is to delete its record. That removes the one place where the item’s history, its former owner and its old relationships are still visible. A later incident on a successor system may depend on understanding what the retired host used to run. Deleting the record can make that question unanswerable.

A safer pattern is to move retired items into a retired state, keep their relationships where they help explain history, and exclude them from active counts and impact queries. Set a review date for the retired items so that the archive does not grow without anyone looking at it. Whether a retired item should eventually be purged is a governance decision, one that the CMDB governance model should settle once and in writing, rather than by whoever runs the clean-up job.

Trusting a green health view that measures the wrong thing

Health dashboards are built from the checks someone chose to include. A view that shows every host as updated within the last month can be entirely green while the relationships for the most important services are a year old, because the freshness check only looked at host records. The mistake is to read a green panel as a statement about the whole model rather than about the fields it measures.

What the panel checks What it can miss Complementary check to add
Recent update time on host records Stale relationships between hosts and applications Date of the last validated relationship for each business service
Count of items with an owner Owners who have left but are still assigned Owner status against the current directory of people
Discovery job success Jobs that succeed but find a shrinking subset of the estate Count of items found against the expected population for each class
Absence of duplicate names Duplicates with different names for the same hardware Duplicate check on serial numbers and cloud identifiers

Starting a clean-up without a stopping point

Clean-up projects often drift. A team starts by fixing duplicates in one class, finds relationship problems, then starts remodeling attributes for a class nobody uses. Later on, the project can have no end state and the data is no better for the central services. Define what done looks like before the first record is touched: which classes, which services, which fields and which checks. Anything outside that definition goes on a separate list for a later phase.

  1. Choose the business services whose incidents and changes depend most on the CMDB, and limit the first clean-up to their items and relationships.
  2. Agree the end-state checks for those services with their owners, in writing.
  3. Fix the identity rule and the duplicate handling first, so that the clean-up is not undone by the next import.
  4. Clean the relationships for the chosen services, then re-run the checks and compare the results with the agreed end state.
  5. Only when the first set passes, widen the scope and repeat the same order for the next group.

Treating integrations as finished once they run

An integration that runs without error is not the same as one that produces correct data. Mapping changes on the source side, a new field that is populated differently, or an API that starts returning paged results can all keep an import succeeding while the CMDB slowly diverges. Review integration output on a schedule, not only when a job fails. Compare a sample of imported records with the source, and treat a change in record counts from one run to the next as a signal to investigate, not as normal variation.

Questions that come up when a mistake is found late

Can we fix a bad identity rule without losing history?

Often yes, but it requires a mapping exercise that links old identifiers to new ones before records are merged. Do not merge first and map later, because the link between the two sets of history is then lost.

Should we tell the business units about records we have retired?

Tell the owners of the services those records supported, because they may have been relying on the relationships. A short notice that names the retired items and the replacement, if one exists, prevents a surprise during the next change.

Is it worth auditing past changes for missed mistakes?

Where a change was made to a critical service’s relationships, yes. Pick the changes from the last cycle that touched those services and check that the new state matches the architecture. Mistakes in those records are the ones that can surface in the next incident.

What habit helps prevent these mistakes?

Keep a short log of data decisions, ideally alongside the measures the team reports on, covering why an identity rule, a retirement practice or a relationship type was chosen. Many of the mistakes above are made by someone who did not know an earlier decision existed, and the log can stop that from happening again.

Next step

The remediation workflow guidance covers how to route the fixes once they are prioritized.

CMDB mistakes: the tables, fields and values to check first

The quickest way to find a CMDB mistake is to read the CMDB through its own records: the base table cmdb_ci, the relationship table cmdb_rel_ci, and the CMDB Health measures, chiefly completeness, correctness and compliance. Most problems show up in one of these long before users complain.

The names below are common out-of-box values. Check them on your own instance and release, because labels, defaults and enabled health checks change between versions.

Where to look What it tells you
cmdb_ci Base table every class extends. Review name, sys_class_name, operational_status and install_status for records that disagree with reality.
cmdb_rel_ci Relationship records, with parent, child and type fields. Look for rows whose parent or child is a retired CI.
cmdb_rel_type Relationship types such as Depends on::Used by. A long list of casually added types usually means nobody governs them.
owned_by, managed_by, support_group Ownership fields on each CI. Empty values mean nobody will correct the record.
discovery_source, last_discovered Where a record came from and when it was last seen. Useful for spotting stale or doubly loaded data; confirm the field labels on your release.
CMDB Health dashboard Scores for completeness, correctness and compliance, which answer different questions and should not be read as one number. Which checks run depends on your release and configuration.

Example (hypothetical): after two sources load the same servers, a team finds paired records for many hosts. Grouping by discovery_source shows each host carried by both sources. Deleting the extras by hand invites the next load to recreate them. The lasting fix is to decide which attributes identify a server, then rank the sources so one wins when values conflict.

Why do duplicate CIs return after a clean-up?

Because the cause sits in the identification and reconciliation rules, not in the rows. If the rules do not say which attributes make a CI unique, or which source has precedence, each new load can write another copy. Removing rows treats the symptom only.

What does a completeness score leave out?

It shows whether expected attributes are filled in, not whether the values are right. A record can be fully populated and wrong. Read it beside the correctness measure, which looks at problems such as duplicates and orphaned records, and check which checks are switched on for your release.

How do I find CIs that nobody owns?

List cmdb_ci, filter for an empty owned_by and an empty support_group, and group by class. The classes with the largest unowned counts are where a governance decision will pay off first. See the guidance on CMDB metrics worth tracking, the CMDB overview, and the reconciliation and duplicate control service.

Frequently asked questions

How often should we run discovery?

Weekly for cloud and virtualized assets that change frequently, monthly for physical infrastructure. The frequency depends on your rate of change; if your environment is stable, monthly is sufficient. Set up an automated schedule and monitor the import log for errors so you catch discovery failures immediately.

What should we do with stale CI records?

After a period without updates that you set in your governance model, create a decommissioning review ticket and contact the CI owner. If the owner cannot be reached or confirms the CI is retired, move it to a retired status and archive it. Do not delete it; you may need the history for compliance or incident investigations.

How many attributes should each CI type have?

Start with 20 to 30 attributes per CI type. Choose only the attributes that drive operational decisions like alerting, change control, or incident assignment. Every attribute requires maintenance; unused attributes just accumulate stale data and confuse users.

Talk to Oblytech

Planning, running or fixing a ServiceNow programme? Tell us where you are and we will suggest a sensible next step.

Contact us