Skip to content

Steve Trucking's Landscape

Also in 28 languages

Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

A cracked truck-yard surface with each problem circled in bright paint and orange cones set out, nothing repaired yet, a delivery truck at the dock behind.
Image generated with AI

Module 6 of 6 in the chapter Understanding Enterprise Data, chapter 4 of the Data Architect course. Each module stands on its own. Previous: Org Strategy Is a Landscape Decision · Next: the next chapter, Data Quality and Governance

The question this module answers: What does a real landscape tell us before we design anything?

This chapter has been pulling the camera back: Salesforce as one system among many, the kinds of data, the systems around Salesforce, how to draw the landscape, and org strategy. Now let’s put it together on Steve Trucking. But we’re not going to fix anything yet. That’s the discipline: draw what exists, walk every arrow, and see what the landscape tells us.

Steve Trucking runs one Salesforce org, in the US. Service Cloud handles cases from Recipients and Retail Partners; Field Service runs appointments, crews and the mobile app; Experience Cloud gives Retail Partners a portal, used today only for claims and reports; Sales Cloud tracks partner contracts and bids for new DCs. So Salesforce goes in the middle.

On the left, the people: 45 dispatch coordinators working inside the Retail Partners’ DCs, about 700 crew members on 330 trucks, 60 customer-care agents, 40 operations, finance and sales staff, and about 300 Retail Partner users. That already tells us something: this isn’t a departmental CRM. It’s an operational platform for most of the business. But it’s still one box. Now let’s see what surrounds it.

Steve Trucking's current landscape Steve Trucking's landscape today, marked "Current state: today, before a proper implementation". On the left: 45 dispatch coordinators inside nine partner DCs, about 700 delivery crew members on 330 trucks, 100 care and office staff, about 300 Retail Partner users, and about a million Recipients a year. In the middle, one Salesforce org in the US with the Retail Partner portal; the corporate identity provider above shares a certificate with it, for office staff only. A scheduled export job, in the middle, pulls a weekly export from Salesforce through the Bulk API and loads Snowflake. FleetLink has a red dotted line to Salesforce: missing, where's the truck? Between RouteDesk and Salesforce, two red dashed arrows: routes rekeyed into Salesforce, and completed stops rekeyed back into RouteDesk, by hand. Red dashed arrows also carry delivery counts from RouteDesk into a monthly spreadsheet and on to the finance ERP, by hand. Each Retail Partner has two arrows with RouteDesk: manifests in, opened by the partner (Keystone's file, Redrock's API, Brightwave's EDI), and status out, opened by RouteDesk. At the bottom right, RouteDesk sends a day-before message with no link through the SMS and email provider, in red; Recipients call, in red, 60% of them asking where's my delivery; email becomes cases in Salesforce. The legend: red is a bad or improper process today, dashed is done by hand, red dots a missing connection. {"author": "Steve Simpson", "blueprint": "1.0.0", "builder": "standard 1.28.0", "built": "2026-10-15", "id": "DGM-DA-ED-61", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "system-landscape 0.10.0", "theme": "stevetecharc 1.4.0"} Current state: today, before a proper implementation 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 EXPORT JOB Snowflake ops and finance analytics FleetLink GPS every minute; a separate screen Finance ERP invoices partners, pays crews Monthly spreadsheet delivery counts, by hand RouteDesk (legacy) routes in the DCs; 8 years of history Phone care agents Email email-to-case SMS and email provider day-before message, no link Redrock REST API, webhooks Keystone CSV over SFTP Brightwave EDI through a third-party network Salesforce one org, US office staff only calls: 60% where's my delivery? cases in manifests in (API) status out (webhook) manifests in (file) status out (file) manifests in (EDI) status out (EDI) weekly export (Bulk API) weekly load routes, rekeyed completed stops, rekeyed missing: where's the truck? day-before, no link delivery counts monthly, by hand Salesforce a community people identity, apps, web an internal system a customer channel data in and out the integration layer starts at the system that opens the connection; the label says what moves dashed: done by hand red: a bad or improper process today red dots: a missing connection a shared certificate: trust, no direct call © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Steve Trucking today, before a proper implementation. Every manifest lands in RouteDesk; coordinators rekey routes into Salesforce and completed stops back, by hand; FleetLink is missing its connection.

This is a current state, before a proper implementation, and I say so on the drawing. Then I open up the palette. On a landscape of a finished system I don’t use red; on a current state I do. Red marks a bad or improper process, dashed marks something done by hand, and red dots mark a connection that’s missing. Leaving an arrow out says something too. None of it is decoration: every red line is a requirement waiting to be written.

The three Retail Partners send manifests three different ways, so draw each one separately.

Keystone drops a CSV manifest on an SFTP server each afternoon, for delivery two days later, and wants a status file back each night. Two arrows: manifest in by file, opened by Keystone, and status out by file, opened by RouteDesk. Asynchronous, with a wide timing window.

Redrock sends manifests through a REST API and expects status updates by webhook as they happen. Two arrows, two mechanisms: Redrock calls in with manifests through the API, and RouteDesk calls out with status through the webhook. Near real time.

Brightwave sends EDI files through a third-party network and expects EDI status messages back. Another format, another mechanism.

Same business concepts (manifest, delivery, status), three completely different integrations. Don’t simplify the drawing because you’d like them to be consistent. They aren’t. That’s the current state.

Then walk them. Keystone: how does the SFTP connection authenticate, where does the file land, what picks it up, how do we know the whole file was processed, what happens to a bad row, and how does Keystone hear about a change before tonight’s file? Redrock: how does the API authenticate, what happens when either side is down, what counts as a successful webhook, what if the same status arrives twice? Brightwave: who runs the EDI network, where’s the translation, what acknowledgments come back? We’re not redesigning anything. We’re discovering the questions. That’s the landscape’s job.

RouteDesk is the legacy desktop dispatch and routing tool coordinators use in each DC to turn manifests into routes. It holds eight years of delivery history, and it’s scheduled to be retired. Draw it anyway. A common mistake is leaving off the system “we’re getting rid of.” When? Say the answer is eighteen months. Then it’s part of the architecture for at least eighteen months, and its eight years of history, about five million deliveries, don’t vanish when the application does. And look at what the landscape exposes: RouteDesk and Salesforce aren’t connected. Crews work their stops in Salesforce’s Field Service app, but the routes are built in RouteDesk, so coordinators rekey them into Salesforce every evening, then rekey the completed stops back into RouteDesk so it can send status to the partners. About 3,300 stops a day, twice, by hand. That’s dashed and red on the drawing. It also tells you Redrock’s “as they happen” webhook isn’t really as they happen. What does RouteDesk own today? What depends on it? What history must survive it, and where: Salesforce, the warehouse, an archive? We’re not answering yet. The landscape just exposed the questions.

FleetLink, the telematics platform, gets GPS from every truck: about 200,000 readings a day, every truck, every minute it’s running. And it isn’t connected to anything. Coordinators look at it on a separate screen. So draw FleetLink with no arrows. No magic integration line because we think there should be one.

Then count the zeros: 200,000 a day is over 70 million a year. That’s not “we have GPS data.” It’s a streaming source with a lot of zeros, sitting outside the Salesforce experience. Does Salesforce need 70 million readings a year? Probably not all of them. That’s a design question for later.

The finance ERP invoices each Retail Partner per delivery, install and haul-away, and pays crew incentives. And delivery counts reach it through a monthly spreadsheet. Draw the spreadsheet. Don’t replace it with a tidy API arrow because we’re architects and know better; it’s part of the current architecture. And once it’s drawn, the questions come: who makes it, from which system, who checks it, what if a delivery changes after it’s sent, and whose number wins? Money is attached to the answers.

Snowflake holds operations and finance analytics, fed by a weekly export. Snowflake can’t do that itself; something in the middle does: a scheduled export job, running outside Salesforce, that pulls through the Bulk API and loads Snowflake. Where analytics lives follows where the data lives, and Snowflake is already the analytical home. But the timing tells us something too. “What happened last month?” A weekly feed is fine. “Where is this delivery right now?” Snowflake isn’t where I’d start. Same enterprise, different workload, different freshness, different answer.

Identity Doesn’t Reach Everyone the Same Way

Section titled “Identity Doesn’t Reach Everyone the Same Way”

The corporate identity provider goes above Salesforce. Office staff use single sign-on. But coordinators and crews log in with Salesforce credentials. So one trust line from the IdP to Salesforce would hide half the story. The real question is which users sign in through which path, and that belongs on the landscape.

The SMS and email provider sends Recipients a generic “your delivery is tomorrow” message from RouteDesk. There’s no tracking link. Meanwhile there are about 180,000 cases a year, and about 60% of them are “where’s my delivery?”: roughly 108,000 cases a year asking the same question. Now put that next to FleetLink. The company knows where its trucks are. Its Recipients keep calling to ask. And the system that knows isn’t connected to the one answering. I don’t need to design the solution yet. The landscape is already telling the story.

Now count what moves. As in module 4, the zeros don’t go on the arrows; they go in the inventory behind the picture, where they’ll drive the mechanisms when we design. About a million deliveries a year, about 3,300 a day, growing 30% a year; about 1.6 line items each; about eight status updates each, so eight million status updates a year today; four to five million photos a year, currently on crews’ own phones; about 200,000 GPS readings a day; about 180,000 cases a year. An arrow labeled “delivery status” isn’t an occasional message. The boxes tell you what exists. The arrows tell you what moves. The zeros tell you whether your assumptions survive reality.

Steve Trucking's inventory, with the zeros Steve Trucking's inventory today, one row per kind of data, with volume and mechanism tinted together. Partner manifests: transactional, from each Retail Partner into RouteDesk, about a million deliveries a year growing 30%, by SFTP file, REST API and EDI. Delivery status: transactional, from RouteDesk to the partners, about eight million updates a year, by nightly file, webhook and EDI. Routes and completed stops: between RouteDesk and Salesforce, about 3,300 stops a day both ways, rekeyed by coordinators by hand. GPS readings: streaming, in FleetLink, about 200,000 a day, over 70 million a year, with no connection, only a separate screen. Delivery photos: unstructured, on crews' own phones, four to five million a year, with no mechanism at all. Cases: transactional, in Salesforce, about 180,000 a year, 60% asking where a delivery is, by phone and email-to-case. Delivery counts for invoicing: transactional, in the finance ERP, monthly, by a spreadsheet made by hand from RouteDesk. Operations and finance analytics: in Snowflake, weekly, by an export job that pulls through the Bulk API and loads Snowflake. Delivery history: in RouteDesk, eight years and about five million deliveries, in a legacy application. Underneath: the boxes tell you what exists, the arrows tell you what moves, and the zeros tell you whether your assumptions survive reality. {"author": "Steve Simpson", "blueprint": "1.0.0", "builder": "standard 1.28.0", "built": "2026-10-15", "id": "DGM-DA-ED-62", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "system-landscape/inventory 0.10.0", "theme": "stevetecharc 1.4.0"} DATA KIND WHERE IT LIVES TODAY WORKLOAD VOLUME AND TIMING CURRENT MECHANISM Partner manifests Transactional Each Retail Partner, then RouteDesk Operational ~1 million deliveries a year, growing 30% SFTP file, REST API, EDI, into RouteDesk Delivery status Transactional RouteDesk, sent to partners Operational ~8 million updates a year Nightly file, webhook, EDI, from RouteDesk Routes and completed stops Transactional RouteDesk and Salesforce Operational ~3,300 stops a day, both ways Rekeyed by coordinators, by hand GPS readings Streaming FleetLink Streaming, operational ~200,000 a day, over 70 million a year None: a separate screen Delivery photos Unstructured Crews' own phones Operational, historical 4 to 5 million a year None Cases Transactional Salesforce Operational ~180,000 a year; 60% "where's my delivery?" Phone, email-to-case Delivery counts for invoicing Transactional Finance ERP Financial Monthly A spreadsheet, made by hand from RouteDesk Operations and finance analytics Analytical Snowflake Analytical Weekly Export job: Bulk API out, loads Snowflake Delivery history Historical RouteDesk Reference 8 years, ~5 million deliveries Legacy application The boxes tell you what exists. The arrows tell you what moves. The zeros tell you whether your assumptions survive reality. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

The inventory behind Steve Trucking’s landscape: volume beside the mechanism it will drive.

No target architecture yet, and I can already see where the important data lives, what kind it is, how fast it moves and how the systems exchange it.

Beyond the exam: what AI changes. Suppose Steve Trucking builds an agent to answer a Recipient’s “where’s my delivery?” Which system should it ask? Salesforce knows the appointment, FleetLink knows where the truck is, the partner’s manifest defined the delivery. The current landscape is the agent’s map, and before the agent can answer safely, the architect has to know which system is authoritative for each fact and how current it is. Point an agent at the wrong source and stale data becomes a confident answer.

Stand back. Three partners, three integration styles. A legacy dispatch tool holding eight years of history, and coordinators rekeying 3,300 stops a day into Salesforce and back. A telematics platform with 200,000 readings a day, disconnected. Finance counting deliveries from a monthly spreadsheet. Analytics a week behind. Single sign-on for some users, not others. No tracking link, and 108,000 cases a year asking where a delivery is. All growing 30% a year.

That’s a lot of architecture from one picture. The temptation is to start fixing it. Don’t. Not yet. I want you comfortable leaving a current-state diagram ugly, because sometimes the current state is ugly. The point isn’t to impress anyone with clean drawing; it’s a shared understanding of reality. Redesign while you document and you lose the baseline. Later I want to say: this is what existed, this is the problem we solved, this is what we changed, and why. Chapter 6 starts making decisions about ownership and identity, and Checkpoint 1 puts Part 1 together. The Integration Architect course designs the partner flows in depth.

At this stage the architect isn’t deciding the target architecture. The decision is whether the current state is understood well enough to design one:

  • Which systems, user populations, data stores and external partners actually exist today.
  • What data crosses each important boundary, in which direction, how often and by what mechanism.
  • Where the operational, analytical, streaming, historical and unstructured data lives now.
  • Which flows carry the most volume and deserve early attention.
  • Which gaps, manual steps, disconnected systems, unclear authorities and inconsistent patterns become explicit design questions.

This chapter started with one idea: draw the landscape before you design the org. If I’d started with Steve Trucking’s data model, I could have spent hours on objects and relationships while FleetLink sat outside with 200,000 readings a day, RouteDesk held eight years of history, three partners spoke three languages, finance used a spreadsheet, and a hundred thousand cases a year asked where a delivery was. Those aren’t object-model questions. They’re enterprise data questions. Draw the ugly integrations, the spreadsheet, the system you’re supposedly retiring. Write down the zeros. Walk every arrow. Then you’re ready to change it.

  • The Steve Trucking brief, sections 2–4, and its landscape diagram.