דלגו לתוכן

What the Arrow Means on a Landscape

תוכן זה אינו זמין עדיין בשפה שלך.

Module 3 of 6 in the chapter Understanding the System Landscape, chapter 5 of the Integration Architect course. Each module stands on its own. Previous: Boxes, Boundaries and Touch Points · Next: Where an Integration Happens: Browser or Server

The question this module answers: On a system landscape, what does each arrow tell you, and how do you draw the ones that aren’t simple calls?

The arrows are important. In chapter 1, Every Arrow Is a Decision asked what an arrow means, and we found two answers that can point in opposite directions: who starts the connection, and which way the data flows. On a system landscape, I tend to make mine client-server: the arrow starts at the system that opens the connection, and the label says what moves.

That rule is for the system landscape. On a data-flow diagram, the arrows follow the data, and we’ll come back to that at the end. Now let’s put the rule to work on a whole landscape.

Take the Steve Trucking landscape from module 2 and read its arrows one at a time. Each one answers a question before you’ve asked it: who starts this?

  • The crews into Salesforce. The mobile app opens the connection. What comes back is the day’s deliveries, and what goes in is each status and photo, but the arrow starts at the app.
  • The recipients to the tracking page, “a link, no login.” The person opens the page. The status comes back to them, but they started it.
  • Salesforce to the SMS and email provider, “day-before, with a link.” Salesforce starts it: it calls the provider and asks it to send.
  • FleetLink into Salesforce, “latest position only.” FleetLink starts it. Salesforce never asks; it’s told.
  • The phone. As in module 2: an IVR is an arrow in, a dialer is an arrow out, and email can be in and out, so it gets one arrow for each.

Why does it matter who starts it? Because the system that starts the call carries the work: it needs the other side’s address, the credentials to sign in, the schedule, and the plan for when nobody answers. Chapter 1 made that point. On a landscape, you can see it for every system at once.

Now look at Redrock. Redrock sends Steve Trucking its manifests every night: Redrock starts that call. And Steve Trucking sends each delivery’s status back to Redrock: our side starts that one.

Same two systems. Two conversations. Two starters. So, two arrows.

Two conversations, two arrows The Steve Trucking landscape, every box in its place. Two arrows between Redrock and the integration layer are picked out in amber: manifests in, from Redrock to the integration layer, and status out, from the integration layer to Redrock. The legend names them as the pair we read: two conversations. Underneath: manifests in, Redrock starts it, with credentials for our side; status out, we start it, with credentials for Redrock's; two arrows, two mechanisms. {"author": "Steve Simpson", "blueprint": "1.0.1", "builder": "standard 1.54.0", "built": "2026-10-30", "id": "DGM-INT-LS-05", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "system-landscape 0.13.0", "theme": "stevetecharc 1.4.0"} ABOVE: IDENTITY, APPEXCHANGE, WEB PEOPLE RIGHT: INTERNAL SYSTEMS BELOW: CUSTOMER CHANNELS BOTTOM RIGHT: PARTNERS AND PROVIDERS Dispatch coordinators 45, inside 9 partner DCs Delivery crews ~700 on 330 trucks Care and office staff 100: service, ops, finance Retail Partner users ~300 at 3 partners Recipients ~1 million a year Corporate IdP SSO for office staff only Retail Partner portal Tracking page INTEGRATION Snowflake status history, analytics FleetLink raw GPS stays here Finance ERP invoices partners, pays crews Photo storage 4–5 million a year, off core RouteDesk archive retired; 8 years of history Phone care agents Email email-to-case SMS and email provider day-before message, with a link Redrock REST API, webhooks Keystone CSV over SFTP Brightwave EDI through a third-party network Salesforce Field Service, one US org a link, no login office staff only calls cases in manifests in status out manifests in status out manifests in status out upserts, partner key status events status events latest position only delivery counts delivery counts photos, from the crews' app day-before, with a link Salesforce a community people identity, apps, web an internal system a customer channel the integration layer starts at the system that opens the connection; the label says what moves a shared certificate: trust, no direct call the pair we read: two conversations Manifests in: Redrock starts it, with credentials for our side. Status out: we start it, with credentials for Redrock's. Two arrows, two mechanisms. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Two conversations with Redrock, two arrows.

It’s tempting to tidy this into one line with a head at each end. Please don’t. Double arrows are a pet peeve of mine, because they hide the most important fact: these are two different mechanisms. Manifests in might be Redrock calling our API, with credentials we gave Redrock: an External Client App and an integration user, as in Who’s Calling In. Status out might be our side calling Redrock’s webhook, with credentials Redrock gave us, kept in a named credential, as in Named and External Credentials. Different starters, different secrets, different owners, different ways to fail. Two arrows show all of that. One double arrow shows none of it.

So when do I use a double arrow? Only for a connector: one thing, set up once, that works in both directions.

Think about how a connector between two products works. Underneath, it’s making calls both ways, through APIs you never see or touch. But you don’t configure those calls. You only configure the connector. So on the landscape, it’s one line with a head at each end. Heroku Connect, which keeps Salesforce data in step with a Heroku database, is the example I’ve used for years (Heroku is now in a sustaining engineering model: An Update on Heroku (opens in a new tab), Heroku, 2026-02-06). The same goes for the connectors between Salesforce products with their own hosting, from module 2.

And there’s one more kind of line: a dashed one, for trust. An identity provider above the org doesn’t call Salesforce to move data. The two trust each other, through a shared certificate, so a person signed in to one can be let into the other. No call between them, so no arrow.

Four kinds of line A small landscape. Office staff on the left, with one arrow to Salesforce: one call. An identity provider above, joined to Salesforce by a dashed line: trust, no call. To the right, an online store in its own hosting, a "what if", joined to Salesforce by one double-headed arrow: a connector. Below, a Retail Partner with two separate arrows through the integration layer: call 1, orders in, and call 2, status out; and the orders go on into Salesforce. Underneath: one arrow, one call, from whoever starts it; two arrows, two mechanisms; a double arrow, one connector, set up on both ends; a dashed line, trust, with no call between them. {"author": "Steve Simpson", "blueprint": "1.0.0", "builder": "standard 1.53.0", "built": "2026-10-29", "id": "DGM-INT-LS-06", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "system-landscape 0.13.0", "theme": "stevetecharc 1.4.0"} ABOVE: IDENTITY, APPEXCHANGE, WEB PEOPLE RIGHT: OTHER SYSTEMS BOTTOM RIGHT: PARTNERS Office staff Identity provider single sign-on INTEGRATION Online store what if: its own hosting Retail Partner REST API Salesforce one org one call trust, no call a connector call 1: orders in call 2: status out orders in Salesforce people identity, apps, web an internal system the integration layer starts at the system that opens the connection; the label says what moves a connector: set up on both ends, it pushes and pulls a shared certificate: trust, no direct call One arrow: one call, from whoever starts it. Two arrows: two mechanisms. A double arrow: one connector, set up on both ends. A dashed line: trust, with no call between them. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Four kinds of line, and what each one tells you.

Here’s a question that catches people out: can every box start an arrow?

No. A database stores; a process calls. A table doesn’t wake up and decide to ask for data. Something has to run: a person, an app, a scheduled job, a flow, a service in the middle. At Steve Trucking, Snowflake wants every delivery status, but Snowflake doesn’t call Salesforce for it. The integration layer does the work, and Snowflake receives. So the arrows run from Salesforce to the integration layer, and from the integration layer to Snowflake.

When you draw an arrow starting at a box, ask: what’s running there that makes the call? If the answer is “nothing”, the arrow starts somewhere else, and there’s a box missing from your landscape. The Data Architect course works this case through in Before the Arrow.

You’ll also see landscapes drawn as data flows, and when the question is where the data ends up, that’s the right picture. On a data-flow diagram, the arrows follow the data: from where it starts to where it lands, whoever opens the connection.

Just don’t mix the two on one page. A landscape with some arrows for who starts it and some for where the data goes can’t be read by anyone. So: on the system landscape, arrows start at the initiator and the label carries the direction of the data (“manifests in”, “status out”). When you need the data’s journey, draw it on its own diagram, and say in the legend which kind you’ve drawn.

  • For every arrow on the landscape: who starts it, and what moves, in the label.
  • Where two systems have two conversations: two arrows, each with its own mechanism, credentials and owner.
  • Which lines are connectors (one double arrow) and which are trust (a dashed line, no call).
  • For every arrow that starts at a box: what’s running there that makes the call.
  • When a data-flow diagram is needed beside the landscape, and that each one’s legend says which kind it is.

Beyond the exam: what AI changes. An AI agent is a process, so it can start calls, and it often starts many more than a person would. On the landscape, draw an agent’s arrows like any other: starting at the agent, labelled with what moves. Then the questions from chapter 1 apply to it: whose credentials does it hold, when does it call, and what does it do when nobody answers? An agent that calls in through the same arrow as a person needs its own arrow, so you can see it.