OBLYTECH Logo
OBLYTECH Logo
Common ServiceNow Platform Performance Mistakes and How to Avoid Them

Common ServiceNow Platform Performance Mistakes and How to Avoid Them

This guide covers the performance problems that slow ServiceNow platform use. Examples include list views without database indexes and forms that run too many business rules before they render. For each problem it gives the symptom, the root cause, the fix and a prevention habit, from stored totals to notification volume.

Mistake 1: Running Complex Queries Without Indexes

Symptom: list views are slow to load, reports take minutes to run, users complain about waiting.

Root cause: queries search large tables without matching database indexes. Database scans all rows instead of using index to jump to matching rows. As table size grows, query speed degrades exponentially.

Fix: add database indexes on frequently filtered fields. If a view filters by department, create an index on department field. If a report filters by date, index the date field. Indexes are small and fast to create.

Prevention: review query performance when views are created. If a view is slow, ask: what fields are being filtered? Create indexes on those fields. Monitor query performance as tables grow. When query time increases, look for missing indexes.

Mistake 2: Overloading Forms with Business Rules

Symptom: forms take seconds to load, UI is slow to respond, users experience lag when typing.

Root cause: too many business rules running on form load. Each rule performs a database query or calculation. With 50 rules, form does 50 queries before rendering. More rules = slower load.

Fix: audit and consolidate business rules. Delete unused rules. Combine rules that do related work—one rule doing work of five rules is faster. Move non-essential logic to server-side scripts or workflows.

Prevention: measure form load time and set performance target. If form takes too long to load, investigate. Limit business rules per form to a small number, reviewed regularly. Do not use business rules for heavyweight processing; use workflows instead.

Mistake 3: Storing Calculated Fields That Should Be Aggregated

Symptom: data is stale, reports are wrong, maintaining data is manual and error-prone.

Root cause: calculated field is stored in database but not updated when underlying data changes. For example, total project cost is stored on project record but sum is calculated when budget line items are created. If line item budget changes, total is not updated.

Fix: use database aggregation instead of stored calculation. Let database calculate the total on the fly from source data. Or use workflows to update the stored value whenever underlying data changes.

Prevention: when designing data model, decide: will this calculated field be aggregated on the fly, or stored and updated by workflow? Aggregation is simpler but slower. Stored values are faster but require maintenance logic.

Mistake 4: Notifications That Spam or Never Arrive

Symptom: users receive too many notifications and stop reading them, or critical notifications are never received.

Root cause: notification logic is too broad—notifies too many people about too many events. Or notification logic is too narrow and never triggers. Or notification email is treated as spam. Or email server is misconfigured.

Fix: review notification rules. Tighten scope—notify only relevant people about relevant events. Test notifications end-to-end—create a test record, confirm notification sends, confirm recipient receives. Check email delivery logs. Confirm notifications are not being filtered as spam.

Prevention: monitor notification delivery. Track how many notifications are sent and to whom. If notification volume is too high, users will tune them out. If delivery rate is too low, notifications are not reaching recipients. Adjust thresholds to balance volume and coverage.

Mistake 5: Inefficient Integration Implementations

Symptom: system gets slow when integrations run, integrations fail frequently, external systems report high latency.

Root cause: integration calls an external API for every record in a table. Processing 1,000 records means 1,000 API calls. API calls are slow; 1,000 slow calls make system slow. If API has rate limit, requests get throttled or fail.

Fix: batch integration calls. Instead of 1,000 individual calls, bundle 100 records into one batch call. Batch calls are faster and hit rate limits less. Use asynchronous processing so integration does not block user-facing operations.

Prevention: design integrations with volume in mind. If integration will process thousands of records, design for batching from the start. Test integrations with realistic volume before deployment. Monitor integration performance and adjust if performance degrades.

Avoiding Performance Mistakes

Establish performance baselines. Measure performance when app is deployed. As app grows and usage increases, re-measure. If performance degrades, investigate before users complain.

Use performance monitoring tools. ServiceNow provides some native tools. Third-party APM tools provide more detail. Identify slow queries, slow reports, slow integrations. Fix the slowest things first.

Test performance changes. Before deploying new workflow, business rule, or integration, test performance impact on sample data. Does new feature make system slower? If so, optimize before deployment.

Culture of Performance

Make performance part of your development culture. When creating a new feature, consider performance. When modifying a table, consider indexes. When writing a report, optimize queries. When designing an integration, plan for volume.

Share performance knowledge. When you find a performance problem and fix it, document the fix so others learn. Use code reviews to catch performance issues before they are deployed.

Misreading where the time goes

A costly performance mistake is often not a bad query. For the wider picture of how these layers fit together, the platform performance overview is the place to start. It is spending a sprint on the database when the delay is happening in the browser, or tuning a server script when the form is waiting on a second request triggered by a field change. A team that opens with the database tends to find a slow query, because slow queries are common on busy instances, and then reports a fix that does not move what users feel. Separate the layers before you spend effort on any of them.

Pattern What users notice The check that separates it
Client script makes a server call on every field change Typing or selecting a value lags, but saving is quick Count the server requests fired by one field change in the browser’s network view
A list is slow only when filters are removed The default view is fine, the “all records” view hangs Compare the same list with and without the most common filter applied
A dashboard refreshes on a short interval The whole instance feels slow at regular intervals Look for the widgets that refresh on a timer and their total load across users
A script loops over records and reads each one from the database Bulk updates take far longer than the number of records suggests Check whether the loop reads from the database on every pass
Access rules are evaluated per row on a large table Lists take longer for non-administrators than for administrators Compare timings for two roles that see the same records

A sequence for narrowing a complaint before changing code

Use this order when a complaint arrives. Each step rules out one layer, and most cases are settled by the second or third step.

  1. Reproduce the slowness on a named view with a named user, and time it from the first click to a usable screen.
  2. Repeat the same action as an administrator and as a standard user. A large gap points toward access evaluation or role-specific logic.
  3. Count the server requests during that action in the browser. Many small requests suggest client-side logic calling the server, and one long request suggests a query or a server rule.
  4. Check the platform’s slow-operation records for that window. Only now look at the code that the matching records name.
  5. Make one change, repeat the same timing, and record both results together.

What a healthy investigation looks like in the record

A good investigation leaves a short trail: the complaint, the reproduction steps, the timings before and after, and the layer that was changed. Teams that skip this trail can repeat the same investigation, because nobody can tell which of the earlier fixes actually held. Keep the trail in the same place as the change record so a later reviewer can see the reasoning and not only the result.

Why a fix can move the problem somewhere else

Caching a lookup can make one form fast and make the cache refresh job slow. Moving a report to a nightly run can keep the morning clear and load the batch window that a data import needs. Splitting a large list into smaller views can reduce the time to first row while increasing the number of views that need maintenance. Each of these is a legitimate trade, but only if the team names what it gave up. A rule-level view of the same trade-off is in the business rules governance and performance article. Measure the window the fix was meant to protect and the window it may have affected.

When the mistake is in the expectation, not the code

Some teams expect a very large list to open as quickly as a short one. That expectation is not met by any amount of indexing. Agree on what a usable first screen means for each view, and let the design show the first page quickly while the rest loads. A list that shows results quickly and a filter that narrows them is often a better fix than a list that tries to show everything at once.

Why does the form feel slow when the database looks healthy?

Because most of the wait is often spent in the browser or in a server call triggered by a field change, not in the query that loads the record. Count requests and time them separately before concluding that the database is the cause.

Is it safe to turn off a rule that looks expensive?

Only after you know what it protects. Many rules enforce data quality or approval logic that the business relies on. Remove the cost by changing how the rule runs, for example by limiting its conditions, rather than removing the control. The governance model for this section names who signs off that kind of change.

Why do administrators see faster lists than users?

Access evaluation can add work per row for roles with narrower access, and the gap grows with table size. Compare the two roles on the same data before deciding whether the issue is access design or the view itself. The KPI guide is the place to look for measures that can be repeated across a comparison like that.

How do I know if a dashboard refresh is the cause?

Look at the timing pattern. A slowdown that repeats on a fixed interval, across many users at once, points to scheduled refresh. Check how many widgets refresh on that interval and whether all of them need to.

Frequently asked questions

How do we know if our database is lacking indexes?

Open the slow query records the instance keeps under System Diagnostics and look at which fields the slow filters use, then check the table definition to see whether those fields are indexed. Queries doing full table scans are slow. Database size also matters—small tables are fast even without indexes. Large tables need indexes. If table has millions of rows and query is slow, indexes are likely missing.

What is acceptable query performance?

List views, reports and real-time dashboards each need a load or refresh target, set from current measurements. These are guidelines; your tolerance may differ. Set targets based on user expectations and use case.

Should we cache data to improve performance?

Caching helps for read-heavy data that does not change frequently. Cache product catalog, role information, or other reference data. Do not cache frequently-changing data like project status—cache gets stale. Clear cache when underlying data changes.

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