OBLYTECH Logo
OBLYTECH Logo
ServiceNow Request Fulfilment and Service Catalog Integration Patterns

ServiceNow Request Fulfilment and Service Catalog Integration Patterns

Common Integration Patterns Overview

Request Fulfilment and Service Catalog often need to integrate with systems that fulfil requests. When a user orders a laptop through the catalog, the request must flow to the IT hardware team or directly to a provisioning system. When a user requests access to an application, the request must route to the application owner or to an identity and access management (IAM) system. These integrations are not optional; without them, requests become tickets that staff must manually parse and process.

Common integration patterns are: inbound (external systems create requests in Service Catalog), outbound (Service Catalog sends requests to external systems for execution), and bidirectional (updates flow in both directions). Each pattern has trade-offs in complexity and flexibility. Choose based on your toolset and how much automation you want to achieve.

Inbound Versus Outbound Integration Approaches

Inbound integration means external systems create catalog requests. For example, an HR system detects a new hire and automatically creates a request for IT to provision a laptop and access. This pattern is powerful because it eliminates manual data entry and ensures requests are created consistently. The challenge is that the external system must understand ServiceNow’s catalog structure and requirements, and error handling must be reliable (what if the request creation fails in ServiceNow but succeeds in HR’s records?). Inbound integration requires careful API design and testing.

Outbound integration means Service Catalog sends requests to external systems. When a user submits a catalog request, a workflow automatically sends it to the relevant fulfillment system (provisioning, HR, facilities). The fulfillment system executes the request and returns status. This pattern is simpler than inbound because ServiceNow controls the request; it also gives ServiceNow a central view of all requests regardless of where they are fulfilled. The challenge is integrating with many external systems; each may have different APIs and requirements.

Bidirectional integration syncs status in both directions. A request submitted in ServiceNow creates a work item in the fulfillment system; when the fulfillment system updates the work item, ServiceNow sees the update. This pattern provides real-time visibility but is most complex to implement; conflicts (both systems update the same field simultaneously) must be handled gracefully. Bidirectional integration is most valuable when both systems are equally authoritative for the request.

Choosing Between Integration Approaches

Start with outbound integration if you control the Service Catalog but the fulfillment systems are independent. This approach keeps ServiceNow as the primary repository of request status and gives IT full visibility. It works well when fulfillment systems have modern APIs (REST, webhooks) and can be called reliably.

Use inbound integration if external systems are the primary request source and you want to centralise requests in ServiceNow. This works for new-hire workflows (HR sends new-hire requests), order workflows (ERP sends purchase requests), or provisioning (monitoring systems send provisioning requests). The external system drives the workflow; ServiceNow provides visibility and tracking.

Avoid bidirectional integration unless both systems are equally authoritative. It is the most complex to maintain and the easiest to break. If one system should be the source of truth, make it so; let the other system sync from it. Bidirectional sync creates confusion about which system is correct when conflicts occur.

Error Handling and Data Synchronisation

Integration between Service Catalog and fulfillment systems is only reliable if error handling is reliable. API calls fail for reasons outside your control: network timeouts, server errors on the external system, authentication failures. Design integrations to handle failures gracefully: retry failed calls, log errors with enough detail for debugging, and alert teams if sync is out of date.

A critical error is a mismatch between ServiceNow and the external system. The request succeeded in the fulfillment system but failed in ServiceNow, or vice versa. When this happens, data is inconsistent and confusion follows. Design integration to use idempotent operations (calling the same operation twice produces the same result) and to verify success (did the fulfillment system actually create the asset, or did it fail silently?). Some integrations use a status-verification loop: after creating the request, query the external system 30 seconds later to confirm it was created.

Implementation Considerations

Integration complexity depends on whether you are integrating with well-documented APIs or legacy systems with limited integration capability. Modern systems (ServiceNow, cloud applications) provide good APIs. Legacy systems (on-premise databases, proprietary applications) may require custom code or third-party integration platforms. Evaluate integration effort as part of the Service Catalog scope. A service that requires complex integration may not be worth including in the initial release.

Performance matters. If a catalog request integration takes several minutes to complete (sync HR data, provision access, update ServiceNow), staff will think the system is broken. Design integrations to be fast for simple operations or asynchronous (request submitted, status checked later). A fast confirmation (“Your request has been submitted”) followed by asynchronous processing is better user experience than a slow sync operation.

Security matters. Integrations exchange data, often including user credentials or sensitive information. Ensure integrations use encrypted connections (HTTPS, SSL), authenticate using service accounts with limited permissions, and log access for audit. Do not pass credentials in URLs or logs; use OAuth or API keys. Regularly review integration security (are old integrations still running? do they still have needed permissions? have credentials been rotated?).

Assigning a system of record to each field

Teams often start by asking which way the data should flow. The better first question is which system is authoritative for each piece of information. Once that is settled, the direction of each sync follows, and many of the arguments about bidirectional updates can disappear. The table shows how this tends to look for a request catalog that touches HR, finance and asset records.

Attribute Authoritative system Who may change it Direction in the catalog
Requester’s line manager Directory or HR system The HR team only Read in at submission, never edited in the catalog
Request status Catalog Fulfillment groups, through the catalog Sent out to the fulfillment system as it changes
Asset assigned to a requester Asset system The asset team Written back to the catalog once fulfillment completes
Approval decision Catalog The named approver Not synced; recorded in the catalog only
Cost center Finance system Finance Snapshot read at submission and kept with the request

A design record to complete before any integration is built

An integration nobody has written down gets rebuilt badly the first time it breaks. Write a short design record for each integration and keep it with the catalog documentation. The record should answer the questions below, in this order.

  1. What is the trigger, and can it fire more than once for the same request?
  2. What is the idempotency key, meaning the value that lets a retried call be recognized as the same piece of work?
  3. Who is the named owner on each side who answers when the call fails?
  4. What are the timeout and retry rules, written so that the team can test them rather than assume them?
  5. How does the sending system confirm that the receiving system actually did the work?
  6. What does a human see when the call fails, and who is the route to a person who can fix it?
  7. Which credentials does the integration use, and when is the next review of their permissions due?

Choosing not to integrate yet

Integration is not always the right answer, and a manual handover can be the better choice for a while. It makes sense to keep a step manual when the volume is low enough that a person can check each case, when the target system has no stable interface, or when the data changes so rarely that the sync would be run for almost no benefit. A common trap is building a live sync for a field that changes once in a long period. The sync then needs monitoring, credentials and error handling for a benefit that a monthly export would deliver just as well.

Failure patterns that look like success

Some integration faults are dangerous precisely because they do not look like faults. The request shows as completed in the catalog, but the external system never did the work, because the call returned a success code for a queued job that later failed. A retry may create a second asset, a second account or a second charge, because no idempotency key was sent. A credential is rotated on one side and the sync goes quiet without raising an error, so nobody notices until a requester asks where their item is. A mapping between two lists of codes drifts when one side adds a value, and records start arriving with a blank or default status. Each of these is found by comparing the two systems on a sample of real requests, not by reading the logs alone.

Should integration logic live in the catalog item or in a separate flow?

Put the logic in a separate, named flow whenever more than one item uses the same external call. Duplicating the logic across items means that a fix has to be made several times, and the copies quietly diverge. A catalog item should hold the questions and the decision, and leave the calls to the flow.

How can I test a failure without breaking the live system?

Point the test at a copy of the external system that is not live, and force the failure deliberately, for example by pointing the call at a wrong address or by returning an error from a test stub. Confirm that the failure produces the human-visible message and the route to the owner that the design record describes. A failure path that has never been exercised is not a failure path.

Who should own the mapping table between the two systems?

The owner of the authoritative system for the attribute should own the mapping, because they are the people who know when a value changes. The catalog team should be told about changes, and should not maintain the mapping on their own.

Is a nightly batch ever better than real time?

Often, yes. A batch is easier to monitor, easier to reconcile and easier to rerun when it fails. Real time is worth its extra cost when a requester is waiting on the result, such as an access grant needed for the start of a shift. For reference data that only needs to be right by the next working day, a batch is often the sensible choice.

Next step

Start with the authority table, since it settles more questions than any diagram will.

Related guides: Common ServiceNow Request Fulfilment and Service Catalog Mistakes and How to Avoid Them and ServiceNow Request Fulfilment and Service Catalog: Security and Access Design.

Frequently asked questions

Should we integrate with every fulfillment system or just key ones?

Integrate with systems that handle high-volume or important requests. A common approach is to integrate outbound to the major systems (provisioning, IAM, HR) and leave lower-volume fulfillment manual (staff complete the request manually). This reduces integration complexity while covering the important cases. As ServiceNow matures, expand integrations to other systems.

What happens if the fulfillment system is offline?

Design for graceful degradation. If the fulfillment system is temporarily unavailable, queue the request in ServiceNow and retry when it comes back online. Alert teams that there is a queue backlog so they adjust expectations. Once the system is healthy, retry queued requests. A complete integration failure (fulfillment system down for hours) should trigger an escalation so IT can decide whether to manually fulfill requests or pause catalog access.

How do we prevent duplicate requests if both systems create requests?

Establish single ownership: either the HR system creates the new-hire request in ServiceNow, or ServiceNow creates requests in HR, but not both. Use deduplication logic if both systems might create requests (check if a request for the same user and service already exists before creating a duplicate). Add unique identifiers (request ID) when syncing so you can track which request is which.

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