26.3 26.2 26.1 26.0 25.3 25.2 25.1 25.0
26.3 26.2 26.1 26.0 25.3 25.2 25.1 25.0

Integration of External Systems

A reliable service behaves predictably even when things go wrong: incomplete input, slow or failing dependencies, unexpected external responses. Reliability in Designer comes from validating early, handling errors intentionally, treating external systems defensively, and proving all of it with tests.

This page covers practical best practices for the integration of external systems.

Design Integrations Defensively

Many service failures happen at integration boundaries. External systems are slower to change, harder to control, and often fail in ways your process must absorb safely.

  • Use clear adapter and API contracts.

  • Validate request payloads before sending them out.

  • Prefer idempotent operations that can be called multiple times.

  • Assume external calls can fail, time out, or return partial data.

  • Check response structures before using returned values.

  • Log the outgoing request and incoming response for each external call — this is usually the fastest way to diagnose an integration failure after the fact.

  • Plan fallback, retry, or manual continuation paths for critical interactions.
    The xUML root state machine helps you with handling that, see Error Handling of Root State Machine for more.

Implementing Backend Access into BPMN

The way how you implement backend access into your BPMN has a big effect on how you can handle errors.

Prefer

Avoid

  • Do not implement backend access to user tasks (Get Data or On Exit).

  • Do not implement multiple backend operations into the same BPMN service task.

Examples

Failure Handling

Failure handling example


1 one circle orange Perform the adapter call.

2 two circle orange Catch all relevant errors.

3 three circle orange Handle the error, e.g. throw it again in a way that relates to your service:

Error re-throw example
📗
📘