01 / PURPOSE
A workflow outcome worth connecting
Start with the decision or hand-off the integration must improve.
Many ServiceNow integration problems that reach a platform owner began with a tool choice made too early. Someone asked for a connection, a developer built it in whatever form was fastest, and the connection now carries three business processes that nobody wrote down. Before a second system is connected to a workflow, the team should decide which pattern the work needs. A notice that tells another system something has changed is a different design from a process that waits for an answer, and both differ from a nightly reconciliation that corrects drift. The integration pattern explainer defines what an integration pattern is, but the decision itself belongs in the design document, because the pattern determines the monitoring, the retry rules and the person who gets alerted.
| Pattern | Use it when | Main risk to design for |
|---|---|---|
| One-way event notice | The other system needs to know something happened and returns no decision | A lost or duplicated notice that nobody can see was missed |
| Synchronous lookup | A workflow step cannot continue without an answer from the other system | A slow or unavailable system stalls the workflow for every user |
| Orchestrated multi-step process | Several systems must each complete a step and the order matters | A partial completion that nobody owns |
| Scheduled reconciliation | Two systems must agree over time and some lag is acceptable | Silent drift between runs, and corrections that overwrite the wrong side |
Orchestration is the right word for the third row only. Teams often describe every connection as orchestration, which hides the failure they are actually designing for. Name the pattern for each connection, because that name tells the next engineer which failures to expect.
Any integration that sends a request more than once, or that consumes events from a queue, will eventually receive the same instruction twice or receive a later update before an earlier one. A common failure is a fulfillment system that creates two equipment orders because a timeout looked like a failure and the platform retried. The design fix is an idempotency key: an identifier that lets the receiving system recognize a repeated request and return the original result instead of repeating the work. The key should come from the business record, such as the request number, and never from a timestamp generated at the moment of sending.
Out-of-order delivery needs its own rule. If a status update that says a task is complete arrives before an earlier update that says it is in progress, the receiving record should not move backwards. Write that rule as a transition table rather than a sentence in a specification. A table makes it obvious which changes are accepted, which are ignored and which are routed to a person for inspection.
Automatic retries help with brief outages and do damage during long ones. A policy that retries many times in quick succession can overload a system that is already struggling, and it floods the platform with failed records that look like separate problems. Agree three settings before go-live: the wait between attempts, the maximum number of attempts, and the condition that stops retrying and raises a visible exception. Where the other system enforces a usage limit, retries should pause once that limit is reached rather than continue, because the provider may block the whole account. The retry policy explainer and the rate limit explainer are the related pages for these two settings.
Separate failures that can succeed later from failures that never will. A timeout or temporary service error justifies a retry. A record rejected because a mandatory field is empty does not, and retrying it only repeats the error. Classifying errors this way keeps the exception queue short enough for someone to clear it each day.
Not every step belongs in the workflow. Calculations that depend on data held elsewhere, transformations already performed by a middleware service, and long-running file jobs are often better left where they are and called from the workflow with a clear result. The workflow should hold the decision, the status and the evidence, while heavy processing stays with the system that owns the data. Keeping that boundary explicit stops logic from accumulating in a flow that only one specialist can read.
Credentials need the same discipline as code. Each connection should use a credential that belongs to a named service account, with the permissions that call needs and nothing more. When the person who created the connection leaves, the credential should still have an owner who can rotate it. Record where the credential is held and who may change it. An integration can fail on the day a password expires, and a rotation calendar helps avoid that.
Many organizations do not start with an orchestration design. They inherit direct connections built by different people over several years. Replacing them in one step is rarely safe, because each old connection carries behavior nobody documented, such as a field that only one of them sets. A safer route runs the old and new connections side by side for a full business cycle, compares the results and retires each old connection only after its outputs have been matched. The comparison should include the month-end or peak-volume events that exercise rare branches. The ServiceNow data migration, reconciliation and cutover page covers reconciliation evidence for migrated data, a related comparison.
| Stage | What is done | What must be true to continue |
|---|---|---|
| Inventory | List every connection with its direction, trigger, credential and owner | No connection remains without a named owner |
| Parallel run | The new flow runs while the old connection stays active | Differences are explained, not just counted |
| Switch | The old connection is disabled one record type at a time | A rollback step exists and has been tested |
| Retire | The old connection is removed after a full cycle | The owner has signed off the comparison evidence |
No. A single notice that a record changed may be better as a simple event. Orchestration earns its cost when several steps, owners and outcomes depend on one another. A useful test is whether a failure in the middle of the sequence would leave the business in a state that someone must repair by hand.
Test the normal path first, then the failure paths in the order they are most likely to occur: timeouts, rejected data, duplicate delivery, and a response that arrives after the workflow has already moved on. The depth of testing should follow the business consequence of a wrong result rather than the difficulty of building the connection.
It should not. A connection with no owner for its exceptions fails quietly, and the first person to notice is usually someone who depends on its output. Assign the owner before release and make sure that person can see the logs and the exception queue.
Take one connection that causes repeated manual work and map it on a single page. Write the trigger, the data sent, the decision returned, the owner of each end, the retry rule and the reconciliation route. If the page cannot be finished because nobody knows an answer, that gap is the first finding. Teams often find that a small number of connections account for most of their exceptions, and fixing those first can give a visible improvement before any larger redesign is approved. Where the connection depends on a provider’s API, see ServiceNow IntegrationHub and API automation.
The connection that generates the most manual repair work is the one to bring to the next design review, together with its pattern, its retry and ownership rules and the route from the existing connection to a controlled design.
Guides from the Oblytech ServiceNow library that explain the practice behind this page.