Gå til indhold

Tegn systemlandskabet

Findes også på 28 sprog

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

A hand-drawn map of a region in ink and watercolor, half finished: towns, roads, a river and a rail line on one side, faint pencil lines on bare paper on the other.
Billedet er lavet med AI

Modul 4 af 6 i kapitlet Forstå virksomhedens data, kapitel 4 i kurset Data Architect. Hvert modul står på egne ben. Forrige: Systemerne omkring Salesforce · Næste: Org-strategi er en landskabsbeslutning

Spørgsmålet, dette modul besvarer: Hvordan tegner jeg et landskab, der viser, hvor dataene går hen?

Giv mig et nyt scenarie og en tom whiteboard, og noget af det første, jeg tegner, er systemlandskabet. Ikke smukt, ikke hvert API, ikke datamodellen endnu. Jeg vil se virksomheden: hvem brugerne er, hvilke systemer der er involveret, hvor Salesforce står, hvad der omgiver det, hvor data kommer fra, og hvor de går hen. Og så vil jeg gå pilene igennem. Et godt landskab er ikke et billede af kasser. Det er en måde at afsløre arkitektoniske beslutninger på.

Jeg får CTA-kandidater til at øve det her. Læs scenariet, og begynd så at tegne. Vent ikke, til du har løst det hele i hovedet; tegningen hjælper dig med at løse det. Derfor er hjemmeopgaven efter første dag at starte landskabet, før man giver et første bud på datamodellen. Tegn datamodellen først, og du har allerede antaget, hvad der hører hjemme i Salesforce. Tegn landskabet først, og du kan se de systemer, der bør forme den beslutning.

Start højt oppe, og bor dig så ned: hele virksomheden først, så detaljerne, hvor de betyder noget.

Steves landskabslayout Steves layout til systemlandskabet, endnu uden pile. Til venstre, oppefra og ned: interne brugere, partnerbrugere og kunder. I midten Salesforce i blåt med en sky, den org, vi designer omkring, med partnercommunityen og kundecommunityen nedenunder, i kontakt med den. Ovenover: et offentligt website øverst til venstre, medarbejdernes identitetsudbyder og partnernes identitetsudbyder over Salesforce, og en AppExchange-app til e-signatur skubbet til højre. Til højre for Salesforce integrationslaget, med Data 360 under det i samme kolonne (tæt på core: styres på core, hostes uden for core; brugere forbinder sig aldrig til det, og det når mange backend-systemer), derefter de interne systemer: ERP, økonomi, ordrestyring og datavarehuset. Nedenunder: kundekanalerne, e-mail, webformularer, telefon og beskeder. Nederst til højre data ind og ud: et arkiv, dataindlæsninger og eksterne data, der refereres i stedet for at kopieres. Seks trinbilleder bygger det op: de tomme zoner, så menneskene, Salesforce og dets communities, identitet ovenover, integration og de interne systemer, og til sidst kanalerne og data. OVENOVER: IDENTITET, APPEXCHANGE, WEB MENNESKER TIL HØJRE: INTERNE SYSTEMER NEDENUNDER: KUNDEKANALER NEDERST TIL HØJRE: DATA IND OG UD © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Trin 1 af 6: et blankt lærred. Kun zonerne.

Der er mange måder at tegne et systemlandskab på. Det her er bare min måde, en jeg har finpudset gennem mange år, og jeg deler den, så du kan se, hvordan man hurtigt sætter et sammen. Jeg bruger den til hvert eneste Salesforce-landskab, og den læses som en sætning: mennesker til venstre når Salesforce i midten, får tillid gennem systemerne over det, betjenes gennem kanalerne under det og er forbundet med back office til højre.

Mennesker til venstre, oppefra og ned: interne brugere, partnere, kunder. Ikke alle personas endnu; nok til at svare på hvem prøver at nå denne arkitektur? Hver gruppe peger på det sted, hvor den kommer ind: interne brugere til Salesforce, partnere til partnercommunityet, kunder til kundecommunityet. Systemer eksisterer ikke af sig selv. Nogen, eller noget, prøver at bruge dem.

Steves landskabslayout Steves layout til systemlandskabet, endnu uden pile. Til venstre, oppefra og ned: interne brugere, partnerbrugere og kunder. I midten Salesforce i blåt med en sky, den org, vi designer omkring, med partnercommunityen og kundecommunityen nedenunder, i kontakt med den. Ovenover: et offentligt website øverst til venstre, medarbejdernes identitetsudbyder og partnernes identitetsudbyder over Salesforce, og en AppExchange-app til e-signatur skubbet til højre. Til højre for Salesforce integrationslaget, med Data 360 under det i samme kolonne (tæt på core: styres på core, hostes uden for core; brugere forbinder sig aldrig til det, og det når mange backend-systemer), derefter de interne systemer: ERP, økonomi, ordrestyring og datavarehuset. Nedenunder: kundekanalerne, e-mail, webformularer, telefon og beskeder. Nederst til højre data ind og ud: et arkiv, dataindlæsninger og eksterne data, der refereres i stedet for at kopieres. Seks trinbilleder bygger det op: de tomme zoner, så menneskene, Salesforce og dets communities, identitet ovenover, integration og de interne systemer, og til sidst kanalerne og data. OVENOVER: IDENTITET, APPEXCHANGE, WEB MENNESKER TIL HØJRE: INTERNE SYSTEMER NEDENUNDER: KUNDEKANALER NEDERST TIL HØJRE: DATA IND OG UD Interne brugere salg, service, drift Partnerbrugere Kunder mennesker © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Trin 2 af 6: hvem prøver at nå denne arkitektur?

Salesforce i midten. Én enkel kasse. Ikke fordi Salesforce er virksomhedens centrum (vi har lige brugt tre moduler på at sige, at det ikke er), men fordi det er det system, jeg designer omkring. Det er ankeret.

Communities lige under det, så de rører. Et partnercommunity og et kundecommunity er separate endepunkter, så de får deres egne kasser. Men de står op ad Salesforce, fordi intet skal integreres for at nå dem: de kører i den samme org.

Steves landskabslayout Steves layout til systemlandskabet, endnu uden pile. Til venstre, oppefra og ned: interne brugere, partnerbrugere og kunder. I midten Salesforce i blåt med en sky, den org, vi designer omkring, med partnercommunityen og kundecommunityen nedenunder, i kontakt med den. Ovenover: et offentligt website øverst til venstre, medarbejdernes identitetsudbyder og partnernes identitetsudbyder over Salesforce, og en AppExchange-app til e-signatur skubbet til højre. Til højre for Salesforce integrationslaget, med Data 360 under det i samme kolonne (tæt på core: styres på core, hostes uden for core; brugere forbinder sig aldrig til det, og det når mange backend-systemer), derefter de interne systemer: ERP, økonomi, ordrestyring og datavarehuset. Nedenunder: kundekanalerne, e-mail, webformularer, telefon og beskeder. Nederst til højre data ind og ud: et arkiv, dataindlæsninger og eksterne data, der refereres i stedet for at kopieres. Seks trinbilleder bygger det op: de tomme zoner, så menneskene, Salesforce og dets communities, identitet ovenover, integration og de interne systemer, og til sidst kanalerne og data. OVENOVER: IDENTITET, APPEXCHANGE, WEB MENNESKER TIL HØJRE: INTERNE SYSTEMER NEDENUNDER: KUNDEKANALER NEDERST TIL HØJRE: DATA IND OG UD Interne brugere salg, service, drift Partnerbrugere Kunder Partnercommunity Kundecommunity Salesforce den org, vi designer omkring Salesforce en community mennesker © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Trin 3 af 6: Salesforce i midten, communities lige under det.

Identitet øverst. Identitetsudbyderne kommer øverst, dem, udviklere glemmer: én til interne brugere, måske en anden til partnere. AppExchange-pakker kommer også derop, skubbet til højre, fordi de er funktioner, der hentes ind i org’en, ikke back office-systemer, der udveksler data med den. Offentlige websites står øverst til venstre.

Steves landskabslayout Steves layout til systemlandskabet, endnu uden pile. Til venstre, oppefra og ned: interne brugere, partnerbrugere og kunder. I midten Salesforce i blåt med en sky, den org, vi designer omkring, med partnercommunityen og kundecommunityen nedenunder, i kontakt med den. Ovenover: et offentligt website øverst til venstre, medarbejdernes identitetsudbyder og partnernes identitetsudbyder over Salesforce, og en AppExchange-app til e-signatur skubbet til højre. Til højre for Salesforce integrationslaget, med Data 360 under det i samme kolonne (tæt på core: styres på core, hostes uden for core; brugere forbinder sig aldrig til det, og det når mange backend-systemer), derefter de interne systemer: ERP, økonomi, ordrestyring og datavarehuset. Nedenunder: kundekanalerne, e-mail, webformularer, telefon og beskeder. Nederst til højre data ind og ud: et arkiv, dataindlæsninger og eksterne data, der refereres i stedet for at kopieres. Seks trinbilleder bygger det op: de tomme zoner, så menneskene, Salesforce og dets communities, identitet ovenover, integration og de interne systemer, og til sidst kanalerne og data. OVENOVER: IDENTITET, APPEXCHANGE, WEB MENNESKER TIL HØJRE: INTERNE SYSTEMER NEDENUNDER: KUNDEKANALER NEDERST TIL HØJRE: DATA IND OG UD Interne brugere salg, service, drift Partnerbrugere Kunder Offentligt website Medarbejdernes IdP single sign-on Partnernes IdP single sign-on AppExchange-app e-signatur Partnercommunity Kundecommunity Salesforce den org, vi designer omkring Salesforce en community mennesker identitet, apps, web © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Trin 4 af 6: identitet øverst, kassen, udviklere glemmer.

Integration og derefter back office til højre. Integrationslaget, en ESB eller iPaaS (eller MuleSoft, når det er navngivet), er en høj bjælke lige til højre for Salesforce. De interne systemer står bag den: ERP’erne, økonomi, ordrestyring, gamle systemer, datavarehuset. Nu læses siden fra venstre mod højre: mennesker, Salesforce, integration, back office.

Steves landskabslayout Steves layout til systemlandskabet, endnu uden pile. Til venstre, oppefra og ned: interne brugere, partnerbrugere og kunder. I midten Salesforce i blåt med en sky, den org, vi designer omkring, med partnercommunityen og kundecommunityen nedenunder, i kontakt med den. Ovenover: et offentligt website øverst til venstre, medarbejdernes identitetsudbyder og partnernes identitetsudbyder over Salesforce, og en AppExchange-app til e-signatur skubbet til højre. Til højre for Salesforce integrationslaget, med Data 360 under det i samme kolonne (tæt på core: styres på core, hostes uden for core; brugere forbinder sig aldrig til det, og det når mange backend-systemer), derefter de interne systemer: ERP, økonomi, ordrestyring og datavarehuset. Nedenunder: kundekanalerne, e-mail, webformularer, telefon og beskeder. Nederst til højre data ind og ud: et arkiv, dataindlæsninger og eksterne data, der refereres i stedet for at kopieres. Seks trinbilleder bygger det op: de tomme zoner, så menneskene, Salesforce og dets communities, identitet ovenover, integration og de interne systemer, og til sidst kanalerne og data. OVENOVER: IDENTITET, APPEXCHANGE, WEB MENNESKER TIL HØJRE: INTERNE SYSTEMER NEDENUNDER: KUNDEKANALER NEDERST TIL HØJRE: DATA IND OG UD Interne brugere salg, service, drift Partnerbrugere Kunder Offentligt website Medarbejdernes IdP single sign-on Partnernes IdP single sign-on AppExchange-app e-signatur Partnercommunity Kundecommunity INTEGRATIONSLAG (ESB) ERP ordrer, fakturaer Økonomi betalinger Ordrestyring Datavarehus analyse Salesforce den org, vi designer omkring Salesforce en community mennesker identitet, apps, web et internt system integrationslaget © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Trin 5 af 6: integration og derefter back office.

Kanaler nederst. Alt, der har en direkte linje til kunderne: email-to-case, web-to-lead, telefon, beskeder.

Data ind og ud, nederst til højre. Eksterne datakilder, arkiver, dataindlæsninger.

Data 360 til højre, under integrationslaget. Brugerne forbinder sig aldrig til det, og dets tenant forbinder sig til mange back end-systemer, så det står sammen med rørføringen, hvor de linjer forbliver korte: ved siden af de interne systemer, datavarehuset og dataene nederst til højre. Datateams åbner godt nok dets skærme, men de skærme er i org’en: Data 360 er tæt på core (near-core), administreret på core og hostet uden for core (modul 1). Én linje tilbage til Salesforce viser, hvem der administrerer det. Hvor du sætter kassen, skal fortælle historien om, hvad den gør.

Intet af denne geometri er helligt. Værdien af en konvention er, at jeg ikke opfinder det visuelle sprog på ny hver gang, og at alle, der har set ét af mine diagrammer, kan læse det næste hurtigere.

Steves landskabslayout Steves layout til systemlandskabet, endnu uden pile. Til venstre, oppefra og ned: interne brugere, partnerbrugere og kunder. I midten Salesforce i blåt med en sky, den org, vi designer omkring, med partnercommunityen og kundecommunityen nedenunder, i kontakt med den. Ovenover: et offentligt website øverst til venstre, medarbejdernes identitetsudbyder og partnernes identitetsudbyder over Salesforce, og en AppExchange-app til e-signatur skubbet til højre. Til højre for Salesforce integrationslaget, med Data 360 under det i samme kolonne (tæt på core: styres på core, hostes uden for core; brugere forbinder sig aldrig til det, og det når mange backend-systemer), derefter de interne systemer: ERP, økonomi, ordrestyring og datavarehuset. Nedenunder: kundekanalerne, e-mail, webformularer, telefon og beskeder. Nederst til højre data ind og ud: et arkiv, dataindlæsninger og eksterne data, der refereres i stedet for at kopieres. Seks trinbilleder bygger det op: de tomme zoner, så menneskene, Salesforce og dets communities, identitet ovenover, integration og de interne systemer, og til sidst kanalerne og data. OVENOVER: IDENTITET, APPEXCHANGE, WEB MENNESKER TIL HØJRE: INTERNE SYSTEMER NEDENUNDER: KUNDEKANALER NEDERST TIL HØJRE: DATA IND OG UD Interne brugere salg, service, drift Partnerbrugere Kunder Offentligt website Medarbejdernes IdP single sign-on Partnernes IdP single sign-on AppExchange-app e-signatur Partnercommunity Kundecommunity Data 360 tæt på core: styres på core, hostes uden for core INTEGRATIONSLAG (ESB) ERP ordrer, fakturaer Økonomi betalinger Ordrestyring Datavarehus analyse E-mail e-mail til sag Webformularer web til kundeemne Telefon kundeservice Beskeder sms, chat Arkiv gamle sager Dataindlæsninger migrering Eksterne data refereres, kopieres ikke Salesforce den org, vi designer omkring Salesforce en community mennesker identitet, apps, web et internt system en kundekanal data ind og ud integrationslaget stiplet: ikke i drift endnu, eller refereret © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Trin 6 af 6: hele layoutet, endnu uden pile. Alle senere landskaber beholder disse placeringer.

Hold notationen enkel. Hvert system er et kort: dets navn, dets rolle og et lille ikon, der siger, hvilken slags ting det er: et ERP, en database, en identitetsudbyder, en gruppe mennesker. De områder, jeg lige har beskrevet, tegnes som svage, navngivne zoner, så selve layoutet er synligt. En signaturforklaring nederst siger, hvad hvert ikon og hver linje betyder.

Put ikke for meget ind i en kasse. Kun på et meget kompliceret landskab åbner jeg Salesforce op i sine dele (Sales Cloud og Service Cloud inde i org’en, med pile imellem dem). Og opfind ikke femten former, medmindre hver af dem fortæller læseren noget. Jeg vil have, at nogen kan se på landskabet i tredive sekunder og begynde at forstå arkitekturen. Fancy hjælper ikke. Klart gør.

Vent ikke på det detaljerede design med at tænke på volumen. En pil, der bærer 500 produkter om natten, og en, der bærer 200.000 GPS-målinger om dagen, kan se præcis ens ud på landskabet. De er ikke det samme problem. Så før du tegner en eneste pil, så tæl, hvad der bevæger sig. Start oversigten bag billedet med tallene: én række pr. vigtigt datasæt med dets volumen. Nullerne dukker måske aldrig op på pilene, men du skal vide, hvornår du krydser over i høje tal: tusinder eller millioner i timen, hundredtusinder af transaktioner, ja selv ti til hundrede transaktioner i sekundet.

De tal styrer mekanismen. Et par hundrede poster om natten er en batch. Et kald, nogen venter på, kan være synkront, hvis volumen tillader det. Ti til hundrede i sekundet kan kræve hændelser, som platform events, i stedet for ét kald pr. post. Pilen ser ens ud; volumen afgør, hvad der bærer den, så notér den i oversigten, hvor mekanismen bliver valgt.

Mekanismen kan endda ændre pilens retning. Send et par poster i minuttet, og Salesforce kan simpelthen kalde ud: pilen starter ved Salesforce. Send langt flere, og Salesforce publicerer måske i stedet hændelser på event bus’en; det eksterne system abonnerer og kalder ind for at hente dem, så nu starter pilen i den anden ende. Endnu større, f.eks. en natlig synkronisering af millioner af poster, og så er det en batchproces. Så kend dine tal tidligt, når du begynder at designe mekanismerne, for tallene kan tegne pilene om.

Volumen betyder noget to steder, af to grunde. På en datamodel skal jeg bruge den til at holde øje med store datamængder og planlægge arkivering; del 2 går i dybden med det. På et systemlandskab styrer de store tal i oversigten valget af integrationsmønster og mekanisme. Modul 6 sætter rigtige nuller på Steve Truckings landskab og dets oversigt. Med tallene i hånden: tegn pilene.

Når systemerne er på plads, så forbind dem, og landskabet bliver til arkitektur. En kasse er et system; pilen viser, hvem der tager initiativ til forbindelsen. Den starter ved det system, der åbner forbindelsen, og peger på det, den kalder: klient til server. Etiketten siger, hvad der bevæger sig, og i hvilken retning.

Den regel gælder for systemlandskaber, hvor systemer taler med systemer. På et dataflowdiagram følger pilen dataene, som du ville forvente. Tag ikke landskabsreglen med over i andre diagrammer; det skaber bare forvirring.

Landskabet med sine pile Det samme landskab som før, nu med pile; hver pil starter ved det system, der åbner forbindelsen, og dens etiket siger, hvad der flytter sig, og i hvilken retning. Interne brugere når Salesforce, partnerbrugere partnercommunityen, kunder kundecommunityen. Hver identitetsudbyder og Salesforce deler et certifikat, vist som en prikket grøn streg med et certifikat i hver ende: tillid, ikke et direkte kald, fordi login går gennem brugerens browser som omdirigeringer. Medarbejdernes identitetsudbyder sender også brugeropdateringer til Salesforce. Salesforce sender dokumenter ud til AppExchange-appen til e-signatur og ordrer ud til integrationslaget, som sender produkter ind i Salesforce. Integrationslaget sender ordrer ud og henter produkter ind fra ERP'en; ERP'en sender ordrestatus ind til integrationslaget; integrationslaget henter betalinger ind fra økonomi. Data 360, under integrationslaget, åbner sine forbindelser: CRM-data ud af Salesforce, zero copy til datavarehuset og en reference til de eksterne data. Nedefra sender e-mail sager ind og webformularer kundeemner ind i Salesforce; Salesforce sender gamle sager ud til arkivet; dataindlæsninger sender poster ind. OVENOVER: IDENTITET, APPEXCHANGE, WEB MENNESKER TIL HØJRE: INTERNE SYSTEMER NEDENUNDER: KUNDEKANALER NEDERST TIL HØJRE: DATA IND OG UD Interne brugere salg, service, drift Partnerbrugere Kunder Offentligt website Medarbejdernes IdP single sign-on Partnernes IdP single sign-on AppExchange-app e-signatur Partnercommunity Kundecommunity Data 360 tæt på core: styres på core, hostes uden for core INTEGRATIONSLAG (ESB) ERP ordrer, fakturaer Økonomi betalinger Ordrestyring Datavarehus analyse E-mail e-mail til sag Webformularer web til kundeemne Telefon kundeservice Beskeder sms, chat Arkiv gamle sager Dataindlæsninger migrering Eksterne data refereres, kopieres ikke Salesforce den org, vi designer omkring delt certifikat brugeropdateringer delt certifikat dokumenter ud ordrer ud produkter ind ordrer ud, produkter ind ordrestatus ind betalinger ind CRM-data ud zero copy refereret sager ind kundeemner ind gamle sager ud poster ind Salesforce en community mennesker identitet, apps, web et internt system en kundekanal data ind og ud integrationslaget stiplet: ikke i drift endnu, eller refereret starter ved det system, der åbner forbindelsen; etiketten siger, hvad der flytter sig et delt certifikat: tillid, intet direkte kald © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Pilene sat ind. Hver kasse står, hvor den stod; hver pil starter ved det system, der åbner forbindelsen, og dens etiket siger, hvad der bevæger sig, og i hvilken retning.

Så hvis integrationslaget skubber produkter ind i Salesforce, går pilen fra integrationslaget til Salesforce med etiketten produkter ind. Hvis Salesforce kalder ud for at hente dem, starter pilen ved Salesforce, stadig med etiketten produkter ind. Samme data, en anden samtale, og den forskel fortæller mig, hvem der skal have legitimationsoplysningerne, og hvem der skal håndtere fejlen. Salesforce sender ordren gennem integrationslaget: ordrer ud. ERP’ets ordreudførelse kommer tilbage: ordrestatus ind. Nu kan jeg se, hvem der starter hver samtale, hvor data kommer ind i Salesforce, og hvor de forlader det, hvilke flows der krydser grænser, hvor ejerskabet sandsynligvis ligger, og hvor jeg skal spørge mere.

Og husk modul 1: hver gang jeg kun ser ét flow, bliver jeg bekymret. På det overordnede niveau afhænger en pil med ordrer ud af returflows: kunder ind, produkter ind, priser. Kig endnu dybere, og der er returrejsen: accept, afvisning, status, et fakturanummer, en annullering. Pilene giver mig noget konkret at udfordre.

Det er her, landskabet holder op med at være PowerPoint-kunst. Ved review boardet kan enhver pil udløse tre spørgsmål, og jeg vil have, at du har svarene:

  • Hvordan autentificerer den? OAuth, et certifikat, en named credential, noget andet?
  • Er den synkron eller asynkron? Venter Salesforce på ERP’et, eller publicerer det og fortsætter? Hvor hurtigt har forretningen brug for resultatet?
  • Hvad er mekanismen? Et REST-kald, en hændelse, en fil, en beskedkø, gennem MuleSoft eller direkte?

Og så: hvad sker der, når den anden side er nede? Hver pil skal have en mekanisme. Hvis du ikke kan forklare den, er linjen pynt.

Og »fire and forget« er ikke et svar. Det betyder som regel »jeg har ikke designet, hvad der sker efter affyringen«. Kom den frem? Blev den accepteret? Fejlede den? Bliver den prøvet igen? Hvem ved, at den sidder fast? Hvad hvis den samme besked kommer to gange? Intet af det kommer på landskabet, som så ville blive ulæseligt. Men pilen skal få dig til at vide, at de spørgsmål findes.

Zoom ind på en hvilken som helst pil, og der er en klient og en server, og hver ejer sin halvdel. Klienten åbner forbindelsen: den skal kende endepunktet og porten, henter først et token fra autentificeringsserveren, kalder den protokol og kontrakt, serveren definerer, og vælger, om den vil vente. Kun klienten ser hele rundturen, så kun klienten kan prøve igen. Serveren lytter, definerer protokollen, kontrakten og payloaden, validerer det, der kommer ind, og ser kun sin egen del. Når jeg tegner en pil, ved jeg allerede, hvilken ende der er hvilken, og det fortæller mig, hvem der ejer hvert af de spørgsmål.

Hver pil har brug for en mekanisme Én pil fra landskabet, zoomet ind. Salesforce, klienten, med sin Named Credential og External Credential, sender ordrer ud til ERP'en, serveren, som har en External Client App og en integrationsbruger med kun API. En stiplet streg, krævet til OAuth, viser, at klienten først går til en godkendelsesserver, der udsteder tokenet. Nedenunder, række for række, hvad klienten håndterer, og hvad serveren definerer. Hvor: klienten har brug for endepunktet og porten; serveren lytter på en URL eller IP-adresse og en port. Godkendelse: klienten henter først et token, håndterer udløb og logger ind igen, med endepunktet i en Named Credential og godkendelsen i dens External Credential; serveren stoler på tokens fra sin godkendelsesserver, og dens External Client App og integrationsbruger bestemmer, hvad klienten må gøre. Protokol og kontrakt: klienten kalder dem; serveren definerer dem. Payload: klienten serialiserer og læser; serveren definerer JSON, XML eller binær. Timing: klienten vælger at vente, fortsætte eller køre efter en tidsplan; serveren skal kunne følge med. Sporing: klienten ser hele turen frem og tilbage; serveren kun sin egen del. Fejl og nedetid: klienten håndterer alle slags fejl, prøver igen og ved, hvornår den sidder fast; serveren validerer det, der kommer ind, og kan ikke prøve igen. Nedenunder: intet af dette kommer på landskabet, men hver pil har det. krævet til OAuth Godkendelsesserver udsteder tokenet ordrer ud KLIENT Salesforce SERVER ERP Named Credential External Credential External Client App Integrationsbruger (kun API) KLIENTEN HÅNDTERER SERVEREN DEFINERER Hvor Har brug for endepunktet (en URL eller IP-adresse) og porten at forbinde til. Lytter på en URL eller IP-adresse, på en port (for eksempel 443). Godkendelse Henter først et token fra godkendelsesserveren; håndterer udløb og logger ind igen. En Named Credential holder endepunktet, og dens External Credential godkendelsen. Stoler på tokens fra sin godkendelsesserver; en External Client App og en integrationsbruger med kun API bestemmer, hvad klienten må gøre. Protokol og kontrakt Kalder den rigtige protokol, de rigtige metoder og verber (for SOAP importeres WSDL'en). Definerer protokollen (REST, SOAP, gRPC) og kontrakten: metoder, verber, parametre, returværdier. Payload Serialiserer kaldet og læser svaret i det aftalte format. Definerer payloaden: JSON, XML eller binær. Timing Vælger: venter på svaret (synkront), fortsætter (asynkront) eller kører efter en tidsplan (batch). Skal kunne følge med: svarer på hvert kald, når det kommer, eller tager imod batchen, når den kommer. Sporing Ser hele turen frem og tilbage: hvad der gik ud, hvad der kom tilbage, hvor lang tid det tog. Ser kun sin egen del: kaldet, der kommer ind, behandlingen, svaret, der går ud. Fejl og nedetid Håndterer forbindelses-, godkendelses-, server- og svarfejl; prøver igen og ved, hvornår den sidder fast. Validerer det, der kommer ind, og rapporterer sine egne fejl; den ser ikke hele turen, så den kan ikke prøve igen. Intet af dette kommer på landskabet, men hver pil har det. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Én pil, zoomet ind: klienten håndterer, serveren definerer. Intet af det kommer på landskabet, men hver pil har det.

Vend nu pilen om. Når ERP’et kalder Salesforce, er Salesforce serveren: det definerer API’erne, kører sin egen autorisationsserver og bestemmer via en External Client App og en integrationsbruger, hvad den, der kalder, må gøre. Samme spørgsmål, den anden side.

Salesforce som server Den samme pil vendt om. ERP'en, klienten, med et klient-id og en hemmelighed eller et certifikat, sender ordrestatus ind i Salesforce, serveren, som kører den som en integrationsbruger med kun API. En stiplet streg, krævet til OAuth, viser, at ERP'en først går til Salesforces egen autorisationsserver, som udsteder tokenet til External Client App. Nedenunder, række for række, hvad klienten håndterer, og hvad Salesforce definerer. Hvor: klienten har brug for org'ens My Domain-URL og API-versionen; Salesforce lytter på My Domain over HTTPS. Godkendelse: klienten henter et adgangstoken gennem External Client App og logger ind igen, når det udløber; Salesforce stoler på sine egne tokens, og appens politikker og integrationsbrugerens tilladelser bestemmer, hvad klienten må gøre. Protokol og kontrakt: klienten kalder REST, SOAP eller Bulk API; Salesforce definerer API'erne, og org'ens objekter og felter er kontrakten. Payload: JSON eller XML, CSV for Bulk. Timing: klienten venter, fortsætter eller indlæser i batcher; Salesforce skal kunne følge med inden for org'ens API-grænser. Sporing: klienten ser hele turen frem og tilbage; Salesforce kun sin egen del. Fejl og nedetid: klienten håndterer forbindelses-, godkendelses-, grænse- og svarfejl og prøver igen; Salesforce validerer det, der kommer ind, returnerer sine fejl og kan ikke prøve igen. Nedenunder: intet af dette kommer på landskabet, men hver pil har det. krævet til OAuth Salesforces autorisationsserver udsteder tokenet til External Client App ordrestatus ind KLIENT ERP SERVER Salesforce Klient-id og en hemmelighed eller et certifikat Integrationsbruger (kun API) KLIENTEN HÅNDTERER SERVEREN DEFINERER Hvor Har brug for org'ens My Domain-URL og API-versionen. Salesforce lytter på org'ens My Domain, over HTTPS (port 443). Godkendelse Henter et adgangstoken fra Salesforces autorisationsserver gennem External Client App; håndterer udløb og logger ind igen. Stoler på sine egne tokens; politikkerne i External Client App og integrationsbrugerens tilladelser bestemmer, hvad klienten må gøre. Protokol og kontrakt Kalder det API, Salesforce definerer: REST, SOAP eller Bulk (for SOAP importeres WSDL'en). Salesforce definerer API'erne og deres versioner; org'ens objekter og felter er kontrakten. Payload Serialiserer kaldet, som API'et forventer, og læser svaret. Definerer payloaden for hvert API: JSON eller XML, CSV for Bulk. Timing Vælger: venter på svaret (synkront), fortsætter (asynkront) eller indlæser i batcher (Bulk API). Skal kunne følge med, inden for org'ens API-grænser. Sporing Ser hele turen frem og tilbage: hvad der gik ud, hvad der kom tilbage, hvor lang tid det tog. Ser kun sin egen del: kaldet, der kommer ind, gemningen og dens automatisering, svaret, der går ud. Fejl og nedetid Håndterer forbindelses-, godkendelses-, grænse- og svarfejl; prøver igen og ved, hvornår den sidder fast. Validerer det, der kommer ind (valideringsregler, påkrævede felter, deling), og returnerer sine fejl; den kan ikke prøve igen. Intet af dette kommer på landskabet, men hver pil har det. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Salesforce som server: de samme spørgsmål, hvor Salesforce svarer på serverens halvdel.

Pile på landskabet, samtaler i en swim lane

Sektion kaldt “Pile på landskabet, samtaler i en swim lane ”

Her er det sted, hvor arkitekter ødelægger et godt diagram: de lader ét artefakt svare på alt. Landskabet får API-navne, payloads, genforsøg, fejlkøer, transformationer, hvert eneste callback, og snart kan ingen læse det. Lad være. Landskabet er det store billede: systemerne og de vigtige flows mellem dem.

Når jeg skal forklare en interaktion, tegner jeg et andet diagram, men ikke for hver integration. Hvis system A sender noget til B, eller endda spørger og får et svar, er den navngivne pil nok. Jeg vil have en swim lane, når processen bliver til en samtale: A kalder B, B tjekker med C, C svarer, B opretter noget og kalder A tilbage, en person godkender, et andet system fortsætter. Min tommelfingerregel: mere end en eller to udvekslinger frem og tilbage, og sekvensen får sin egen swim lane. Pile på landskabet; samtalen i swim lanen.

Og læg mærke til, at en pil betyder noget andet der. På landskabet er en pil en forbindelse: hvem åbner den, og hvad bevæger sig. I en swim lane er hver pil én besked i en samtale, læst i rækkefølge: en forespørgsel går den ene vej, et svar kommer tilbage den anden vej, og det næste trin følger.

Pile på landskabet, samtalen i en swim lane De samme tre systemer vist på to måder. Øverst, som på landskabet: Salesforce sender ordrer ud til integrationslaget, som sender ordrenumre ind i Salesforce, og integrationslaget sender ordrer ud til ERP'en. Nedenunder bliver hvert system en bane, og samtalen løber ned ad siden i seks nummererede trin: 1, Salesforce sender ordren til integrationslaget; 2, integrationslaget svarer, accepteret, med en reference; 3, integrationslaget beder ERP'en om at oprette ordren; 4, ERP'en opretter ordren; 5, ERP'en svarer integrationslaget med ordrenummeret; 6, integrationslaget kalder Salesforce for at opdatere ordren. Svar er lysere. Nedenunder: på landskabet er en pil en forbindelse; i en swim lane er hver pil én besked, i rækkefølge. PÅ LANDSKABET: HVEM DER FORBINDER SIG, OG HVAD DER FLYTTER SIG I EN SWIM LANE: SAMTALEN, I RÆKKEFØLGE Salesforce Integrationslag ERP ordrer ud ordrenumre ind ordrer ud send ordren 1 accepteret: en reference 2 opret ordren 3 opretter ordren 4 ordrenummeret 5 opdatér ordren 6 På landskabet er en pil en forbindelse. I en swim lane er hver pil én besked, i rækkefølge. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Tre pile på landskabet; seks trin i swim lanen. På landskabet er en pil en forbindelse; i en swim lane er hver pil én besked, i rækkefølge.

Når landskabet ser nogenlunde færdigt ud, så gå det igennem, pil for pil. ERP til Salesforce: hvad bevæger sig, hvem ejer det, hvordan autentificerer den, hvad er mekanismen, synkron eller asynkron, hvor aktuelt skal det være? Så den næste pil, og den næste. Det er her, hullerne viser sig. »Nå, vi fandt aldrig ud af, hvordan partneren faktisk sender det.« »Vi sender ordrer til ERP’et, men vi har ikke designet, hvordan de afviste kommer tilbage.« Godt. Du fandt det på whiteboardet i stedet for i produktion.

Billedet skal forblive læseligt, så detaljerne kommer i oversigten bag det. Du startede den med tallene; gør den nu færdig med én række pr. vigtigt datasæt eller flow:

KolonneHvad jeg vil vide
DatasætKunde, produkt, ordre, levering, faktura
TypeMasterdata, referencedata, transaktionsdata, analytiske data, ustrukturerede data
EjerHvem ejer dets betydning og livscyklus?
System of recordHvor er den autoritative version?
ArbejdsbelastningOperationel, analytisk, streaming
VolumenAntallet af nuller
OrgHvilken Salesforce-org, hvis der er flere?
AutentificeringHvordan etablerer forbindelsen tillid?
Mekanisme og timingAPI, hændelse, fil, føderering; synkron, asynkron, batch
TilgangKopiere, referere eller føderere?

Nu er der to artefakter: landskabet lader mig se arkitekturen, og oversigten lader mig udspørge den.

Inventaret bag billedet Inventaret bag landskabet, én række pr. flow, med kolonnerne for volumen og mekanisme tonet sammen. Produkter ind: ejes af ERP'en, omkring 500 ændringer pr. nat, en natlig batch gennem integrationslaget, en External Client App og en integrationsbruger, kopieres. Ordrer ud: ejes af Salesforce, omkring 2.000 om dagen, nogle få i minuttet, næsten realtid, når Salesforce kalder ud gennem integrationslaget, med en callout fra Apex eller Flow og en Named Credential, kopieres. Ordrestatus ind: ejes af ERP'en, omkring 16.000 om dagen i stød, asynkront, når ERP'en sender til integrationslaget, som opdaterer Salesforce gennem REST API, kopieres. Betalinger ind: ejes af økonomi, omkring 1.500 om dagen, en batch hver time gennem Bulk API 2.0, kopieres. CRM-data ud: ejes af Salesforce, millioner af poster, Data 360 henter fra org'en efter en tidsplan, tæt på core, kopieres til Data 360. Zero copy: datavarehusets fem års historik, hundredvis af millioner rækker, forespørges på stedet, federeres. Refereret: en ekstern udbyder, ét opslag ad gangen, læses, når nogen har brug for det, refereres. Nedenunder: pilene ligner hinanden på landskabet; volumen afgør, hvad der bærer hver af dem. FLOW PÅ LANDSKABET EJER VOLUMEN MEKANISME OG TIMING GODKENDELSE KOPIÉR, REFERÉR ELLER FEDERÉR Produkter ind ERP ~500 ændringer pr. nat Batch: integrationslaget indlæser dem hver nat External Client App, integrationsbruger Kopiér Ordrer ud Salesforce ~2.000 om dagen, nogle få i minuttet Næsten realtid: Salesforce kalder ud gennem integrationslaget, med en callout fra Apex eller Flow Named Credential Kopiér Ordrestatus ind ERP ~16.000 om dagen, i stød Asynkront: ERP'en sender til integrationslaget, som opdaterer Salesforce gennem REST API External Client App, integrationsbruger Kopiér Betalinger ind Økonomi ~1.500 om dagen Batch: hver time, gennem integrationslaget og Bulk API 2.0 External Client App, integrationsbruger Kopiér CRM-data ud Salesforce Millioner af poster, dem alle Data 360 henter fra org'en efter en tidsplan Tæt på core: styres i org'en Kopiér til Data 360 Zero copy Datavarehus Fem års historik, hundredvis af millioner rækker Forespørges på stedet efter behov En Data 360-forbindelse til datavarehuset Federér Refereret Ekstern udbyder Ét opslag ad gangen Læses, når nogen har brug for det En Data 360-forbindelse Referencedata Pilene ligner hinanden på landskabet. Volumen afgør, hvad der bærer hver af dem. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Oversigten bag ED-D42. Pilene ligner hinanden på landskabet; volumen afgør, hvad der bærer hver af dem.

Det er derfor, jeg kan lide dette artefakt: det hjælper mig med at tænke. »Hvordan rapporterer vi på tværs af Salesforce og ERP’et?« Det er spørgsmålet fra modul 3: hvilket af mine diagrammer løser det her smukt? Landskabet. Hvis alt er på core, standardrapporter. Hvis dataene er i ERP’et og datavarehuset, kan du se det med det samme. »Hvor skal denne kundeattribut mastres?« Se, hvilke systemer der bruger den, og hvilket der allerede ejer kunden. »Har Salesforce brug for hver GPS-måling?« Hvem producerer den, hvem forbruger den, hvad er arbejdsbelastningen? Måske har Salesforce brug for den aktuelle position, og en anden platform gemmer historikken. Landskabet giver dig ikke svaret. Det giver dig det rigtige blik på problemet.

Tegn den nuværende tilstand, før du retter den

Sektion kaldt “Tegn den nuværende tilstand, før du retter den ”

Én disciplin mere. I en eksisterende virksomhed skal du tegne det, der findes, ikke det, du ville ønske fandtes. Regnearket, der mailes hver fredag: tegn det. Partnerens CSV på en SFTP-server: tegn den. Integrationen, der går uden om ESB’en af historiske grunde: tegn den. Folk, der taster data ind igen mellem to systemer: vis det. Ryd ikke op i virkeligheden, mens du dokumenterer den. Du skal have det nuværende landskab, før du designer mållandskabet, og det er det, vi gør for Steve Trucking i modul 6.

Ud over eksamen: hvad AI ændrer. Landskabet er ved at blive et agentkort. Hvis en agent svarer på »hvor er min levering?«, skal landskabet sige, om svaret kommer fra Salesforce, et partnersystem, telematik, ERP’et eller en blanding. Agenter fjerner ikke systemgrænser; de gør det endnu vigtigere at vide, hvilket system der er autoritativt, og hvordan man når det sikkert.

  • Hvilke systemer og brugergrupper der hører hjemme på landskabet, og hvordan deres placering viser deres rolle.
  • Hvilke flows der krydser systemgrænser, i hvilken retning, og hvad der kommer tilbage.
  • Hvordan hver forbindelse autentificerer, hvilken mekanisme der bærer den, og om den er synkron, asynkron, batch eller fødereret.
  • Hvornår en navngiven pil er nok, og hvornår en interaktion skal have sin egen swim lane.
  • Hvad oversigten bag billedet registrerer: ejer, arbejdsbelastning, volumen, org, timing, autentificering og kopiere, referere eller føderere.

Landskabet er ikke noget, jeg tegner, når arkitekturen er færdig. Det er sådan, jeg finder arkitekturen. Og når du tror, det er færdigt, så lad være med at beundre det. Gå det igennem. Hver pil, du endnu ikke kan forklare, viser dig, hvor arbejdet er.