Pular para o conteúdo

Several Patterns, One Solution

Este conteúdo não está disponível em sua língua ainda.

Module 6 of 7 in the chapter Integration Patterns, chapter 7 of the Integration Architect course. Each module stands on its own. Previous: Choosing a Pattern · Next: Checkpoint 1: Steve Trucking

The question this module answers: Why do real solutions combine several patterns, and how do you put them together?

So far, one arrow has had one pattern. Real solutions aren’t like that. Sometimes you don’t just use one integration method. Here’s a design we took to production that used four.

The company had five Salesforce orgs, one per business line: electrical, plumbing, heating, roofing and solar. Some of it came from acquisitions, and each line ran its own business. But if you were selling plumbing, you wanted to see what cases and opportunities the customer had with electrical. You didn’t want to copy it into your org. You just wanted to see it.

That’s data virtualization, module 3, and Salesforce Connect does it: it can even read another Salesforce org. So the first answer is easy: every org connects to every other org, each with its own Salesforce Connect connection.

Now count. Electrical needs to see plumbing, heating, roofing and solar: four connections. So does plumbing, and heating, and roofing, and solar. Five times four is 20 connections. Salesforce Connect is “available for an extra cost” (Salesforce Connect (opens in a new tab), Salesforce Help, checked 2026-11-01). That’s a lot of licensing, and twenty of anything gets costly.

Five orgs, every pair The mesh: five Salesforce orgs in a ring, electrical, plumbing, heating, roofing and solar. Frame by frame, each new org adds arrows to every org already there: 2 orgs, 2 Salesforce Connect connections; 3 orgs, 6; 4 orgs, 12; 5 orgs, 20. {"author": "Steve Simpson", "blueprint": "1.0.0", "builder": "concept 1.4.0", "built": "2026-10-30", "id": "DGM-INT-PT-15", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "mesh 0.1.0", "theme": "stevetecharc 1.4.0"} 5 orgs: 20 Salesforce Connect connections Each org reads every other org. Electrical Plumbing Heating Roofing Solar One arrow: one org reading another, one connection to license and run. Blue: the arrows this frame adds. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Five orgs, every pair: 20 connections.

It’s the same arithmetic you met in chapter 5: point to point grows with every pair.

And money isn’t the only problem. Salesforce Connect adds a related list for each connection, at the object level. Pick one org, say electrical, and open an account. There’s electrical’s own Cases. Then plumbing’s cases, an external object through its own connection. Then heating’s, then roofing’s, then solar’s: four separate external objects for one idea, a case, and four related lists of cases on one page.

One page, every pair Frame 1 of 2, every pair: electrical's account page and its related lists. Cases, electrical's own; then cases from plumbing, an external object through its own connection; cases from heating, roofing and solar, each another external object, in coral. Frame 2 of 2, one shared database: the same page, with cases, electrical's own, and one related list in cyan, cases from every other line, plumbing, heating, roofing and solar, from the shared database, with electrical's own filtered out. Underneath: each Salesforce Connect connection brings its own external object and its own related list, on every object you share: cases, opportunities, orders. ELECTRICAL'S ACCOUNT PAGE: THE RELATED LISTS Cases electrical's own Cases: plumbing an external object, through its own connection Cases: heating another external object Cases: roofing another external object Cases: solar another external object Each Salesforce Connect connection brings its own external object and its own related list, on every object you share: cases, opportunities, orders. HOW TO READ IT every pair: one related list for each connection one shared database: one related list © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Frame 1 of 2: one page, every pair. Four related lists of cases from four other orgs.

Your users see four lists where they want one. Your reports have to combine four objects. Then do it all again for opportunities, and for orders. And every new org adds one more external object to every other org. So we chose not to use Salesforce Connect between every pair.

So we put a database in the middle, our mini data lake: one shared database with every org’s cases and opportunities. Now every org connects to one place, and the order you build it in matters.

Five orgs, one database Frame 1 of 4: five orgs stacked on the left, electrical, plumbing, heating, roofing and solar; one shared database on the right, the mini data lake, with every org's cases and opportunities, in one place, for every org to read. Frame 2 of 4: five navy arrows from the database side into each org: the Bulk API load, the past, once, to set the baseline. Frame 3 of 4: five amber arrows from the database side into each org: Change Data Capture, the listener subscribing to each org to keep it in sync. Frame 4 of 4: five blue arrows from each org to the database: Salesforce Connect, each org connecting to the database to read it. Underneath: arrows start where the connection starts; set the baseline, keep it in sync, then turn on Salesforce Connect, all to one place. FIVE BUSINESS LINES, FIVE ORGS THE MINI DATA LAKE Electrical Plumbing Heating Roofing Solar One shared database every org's cases and opportunities, in one place, for every org to read Arrows start where the connection starts. Set the baseline, keep it in sync, then turn on Salesforce Connect, all to one place. HOW TO READ IT 1. The Bulk API load: the past, once, to set the baseline 2. Change Data Capture: the listener subscribes to each org, to keep it in sync 3. Salesforce Connect: each org connects to the database to read it © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Frame 1 of 4: five orgs, one database.

First, set your baseline. Change Data Capture only sends new changes, so the database starts empty of everything that already happened. A Bulk API load copies each org’s existing records into it, once. The load process calls in to each org, so its arrows point back in.

Five orgs, one database Frame 1 of 4: five orgs stacked on the left, electrical, plumbing, heating, roofing and solar; one shared database on the right, the mini data lake, with every org's cases and opportunities, in one place, for every org to read. Frame 2 of 4: five navy arrows from the database side into each org: the Bulk API load, the past, once, to set the baseline. Frame 3 of 4: five amber arrows from the database side into each org: Change Data Capture, the listener subscribing to each org to keep it in sync. Frame 4 of 4: five blue arrows from each org to the database: Salesforce Connect, each org connecting to the database to read it. Underneath: arrows start where the connection starts; set the baseline, keep it in sync, then turn on Salesforce Connect, all to one place. FIVE BUSINESS LINES, FIVE ORGS THE MINI DATA LAKE Electrical Plumbing Heating Roofing Solar One shared database every org's cases and opportunities, in one place, for every org to read bulk load bulk load bulk load bulk load bulk load Arrows start where the connection starts. Set the baseline, keep it in sync, then turn on Salesforce Connect, all to one place. HOW TO READ IT 1. The Bulk API load: the past, once, to set the baseline 2. Change Data Capture: the listener subscribes to each org, to keep it in sync 3. Salesforce Connect: each org connects to the database to read it © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Frame 2 of 4: the bulk load sets the baseline.

Then keep it in sync. Change Data Capture in every org, and a listener that subscribes to each one. These arrows point back in too: the listener opens the connection to subscribe, even though the changes flow out to the database. That’s the reversed arrow, and chapter 11 (coming soon) takes it apart.

Five orgs, one database Frame 1 of 4: five orgs stacked on the left, electrical, plumbing, heating, roofing and solar; one shared database on the right, the mini data lake, with every org's cases and opportunities, in one place, for every org to read. Frame 2 of 4: five navy arrows from the database side into each org: the Bulk API load, the past, once, to set the baseline. Frame 3 of 4: five amber arrows from the database side into each org: Change Data Capture, the listener subscribing to each org to keep it in sync. Frame 4 of 4: five blue arrows from each org to the database: Salesforce Connect, each org connecting to the database to read it. Underneath: arrows start where the connection starts; set the baseline, keep it in sync, then turn on Salesforce Connect, all to one place. FIVE BUSINESS LINES, FIVE ORGS THE MINI DATA LAKE Electrical Plumbing Heating Roofing Solar One shared database every org's cases and opportunities, in one place, for every org to read subscribes subscribes subscribes subscribes subscribes Arrows start where the connection starts. Set the baseline, keep it in sync, then turn on Salesforce Connect, all to one place. HOW TO READ IT 1. The Bulk API load: the past, once, to set the baseline 2. Change Data Capture: the listener subscribes to each org, to keep it in sync 3. Salesforce Connect: each org connects to the database to read it © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Frame 3 of 4: Change Data Capture keeps it in sync.

Then turn on Salesforce Connect. Each org gets one connection, pointing to the database. Five, not twenty.

Five orgs, one database Frame 1 of 4: five orgs stacked on the left, electrical, plumbing, heating, roofing and solar; one shared database on the right, the mini data lake, with every org's cases and opportunities, in one place, for every org to read. Frame 2 of 4: five navy arrows from the database side into each org: the Bulk API load, the past, once, to set the baseline. Frame 3 of 4: five amber arrows from the database side into each org: Change Data Capture, the listener subscribing to each org to keep it in sync. Frame 4 of 4: five blue arrows from each org to the database: Salesforce Connect, each org connecting to the database to read it. Underneath: arrows start where the connection starts; set the baseline, keep it in sync, then turn on Salesforce Connect, all to one place. FIVE BUSINESS LINES, FIVE ORGS THE MINI DATA LAKE Electrical Plumbing Heating Roofing Solar One shared database every org's cases and opportunities, in one place, for every org to read reads reads reads reads reads Arrows start where the connection starts. Set the baseline, keep it in sync, then turn on Salesforce Connect, all to one place. HOW TO READ IT 1. The Bulk API load: the past, once, to set the baseline 2. Change Data Capture: the listener subscribes to each org, to keep it in sync 3. Salesforce Connect: each org connects to the database to read it © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Frame 4 of 4: five Salesforce Connect connections, not twenty.

And now go back to electrical’s account page. One related list of cases from every other line. The shared database holds electrical’s cases too, so they’re filtered out of that list: if you’re in electrical, you see plumbing, heating, roofing and solar, and your own cases stay where they are.

One page, every pair Frame 1 of 2, every pair: electrical's account page and its related lists. Cases, electrical's own; then cases from plumbing, an external object through its own connection; cases from heating, roofing and solar, each another external object, in coral. Frame 2 of 2, one shared database: the same page, with cases, electrical's own, and one related list in cyan, cases from every other line, plumbing, heating, roofing and solar, from the shared database, with electrical's own filtered out. Underneath: each Salesforce Connect connection brings its own external object and its own related list, on every object you share: cases, opportunities, orders. ELECTRICAL'S ACCOUNT PAGE: THE RELATED LISTS Cases electrical's own Cases: every other line plumbing, heating, roofing and solar, from the shared database; electrical's own filtered out Each Salesforce Connect connection brings its own external object and its own related list, on every object you share: cases, opportunities, orders. HOW TO READ IT every pair: one related list for each connection one shared database: one related list © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Frame 2 of 2: one page, one related list.

Now zoom in on one org, and name the pattern behind each piece. The design is the same for all five.

One solution, four patterns One business line's org on the left, say plumbing, the same design for all five; one shared database on the right, the mini data lake. Between them, one piece at a time, in the same place. Frame 1 of 4: a Bulk API load copies the past into the database, once: Batch Data Synchronization, to seed it. Frame 2 of 4: Change Data Capture and a listener take each change to the database within seconds: publish and subscribe. Frame 3 of 4: Salesforce Connect reads the database when someone looks and shows every line's records in the org: Data Virtualization, one external object. Frame 4 of 4: a nightly refresh, in amber, takes whatever was missed to the database: Batch Data Synchronization, the backup. Underneath: sometimes you don't just use one integration method; a batch to seed it, events to keep it current, virtualization to see it, and a batch underneath. ONE BUSINESS LINE'S ORG THE PIECES BETWEEN THE MINI DATA LAKE An org: say, plumbing the same design for all five A Bulk API load Batch Data Synchronization, to seed it One shared database every org's cases and opportunities the past, once seeded Sometimes you don't just use one integration method. A batch to seed it, events to keep it current, virtualization to see it, and a batch underneath. HOW TO READ IT the batch underneath: catches what the events missed © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Frame 1 of 4: seed it with the past.

Seed it. If an org has 100,000 opportunities and you turn on Change Data Capture, none of the past ones reach the database. So first a process with the Bulk API extracts them and pushes them into the database. That’s Batch Data Synchronization, used once, to set the baseline.

One solution, four patterns One business line's org on the left, say plumbing, the same design for all five; one shared database on the right, the mini data lake. Between them, one piece at a time, in the same place. Frame 1 of 4: a Bulk API load copies the past into the database, once: Batch Data Synchronization, to seed it. Frame 2 of 4: Change Data Capture and a listener take each change to the database within seconds: publish and subscribe. Frame 3 of 4: Salesforce Connect reads the database when someone looks and shows every line's records in the org: Data Virtualization, one external object. Frame 4 of 4: a nightly refresh, in amber, takes whatever was missed to the database: Batch Data Synchronization, the backup. Underneath: sometimes you don't just use one integration method; a batch to seed it, events to keep it current, virtualization to see it, and a batch underneath. ONE BUSINESS LINE'S ORG THE PIECES BETWEEN THE MINI DATA LAKE An org: say, plumbing the same design for all five Change Data Capture and a listener publish and subscribe: every change One shared database every org's cases and opportunities each change within seconds Sometimes you don't just use one integration method. A batch to seed it, events to keep it current, virtualization to see it, and a batch underneath. HOW TO READ IT the batch underneath: catches what the events missed © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Frame 2 of 4: every change, as it happens.

Keep it current. Then you turn on Change Data Capture in every org. It “publishes events for changes in Salesforce records corresponding to create, update, delete, and undelete operations,” in Salesforce’s words, so nobody has to build the event. A listener subscribes and writes each change to the database. That’s publish and subscribe, module 4, and to each org it’s a fire and forget. You could write your own flow and publish your own platform events, or go old school with outbound messages. Change Data Capture just does it for you.

One solution, four patterns One business line's org on the left, say plumbing, the same design for all five; one shared database on the right, the mini data lake. Between them, one piece at a time, in the same place. Frame 1 of 4: a Bulk API load copies the past into the database, once: Batch Data Synchronization, to seed it. Frame 2 of 4: Change Data Capture and a listener take each change to the database within seconds: publish and subscribe. Frame 3 of 4: Salesforce Connect reads the database when someone looks and shows every line's records in the org: Data Virtualization, one external object. Frame 4 of 4: a nightly refresh, in amber, takes whatever was missed to the database: Batch Data Synchronization, the backup. Underneath: sometimes you don't just use one integration method; a batch to seed it, events to keep it current, virtualization to see it, and a batch underneath. ONE BUSINESS LINE'S ORG THE PIECES BETWEEN THE MINI DATA LAKE An org: say, plumbing the same design for all five Salesforce Connect Data Virtualization: one external object One shared database every org's cases and opportunities read when someone looks every line's records Sometimes you don't just use one integration method. A batch to seed it, events to keep it current, virtualization to see it, and a batch underneath. HOW TO READ IT the batch underneath: catches what the events missed © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Frame 3 of 4: see it, live.

See it. Each org’s Salesforce Connect reads the database when someone looks. One external object, with every other line’s records on it, not four. That’s Data Virtualization.

One solution, four patterns One business line's org on the left, say plumbing, the same design for all five; one shared database on the right, the mini data lake. Between them, one piece at a time, in the same place. Frame 1 of 4: a Bulk API load copies the past into the database, once: Batch Data Synchronization, to seed it. Frame 2 of 4: Change Data Capture and a listener take each change to the database within seconds: publish and subscribe. Frame 3 of 4: Salesforce Connect reads the database when someone looks and shows every line's records in the org: Data Virtualization, one external object. Frame 4 of 4: a nightly refresh, in amber, takes whatever was missed to the database: Batch Data Synchronization, the backup. Underneath: sometimes you don't just use one integration method; a batch to seed it, events to keep it current, virtualization to see it, and a batch underneath. ONE BUSINESS LINE'S ORG THE PIECES BETWEEN THE MINI DATA LAKE An org: say, plumbing the same design for all five A nightly refresh Batch Data Synchronization: the backup One shared database every org's cases and opportunities every night whatever was missed Sometimes you don't just use one integration method. A batch to seed it, events to keep it current, virtualization to see it, and a batch underneath. HOW TO READ IT the batch underneath: catches what the events missed © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Frame 4 of 4: catch what was missed.

Catch what was missed. And then a nightly refresh, or a weekly one, catches the one in a billion transaction that didn’t make it. That’s Batch Data Synchronization again, as the backup plan from module 5.

Four pieces, four patterns: a batch to seed it, events to keep it current, virtualization to see it, and a batch underneath to keep it honest.

Here’s the test of a design: what happens when it grows? A sixth business line arrives. With every org connected to every other, six orgs need 30 connections, ten more, and every existing org gets one more related list.

With the database in the middle, you just plug it in, in the same order:

  1. Bulk load its existing records into the database, to set its baseline.
  2. Set up Change Data Capture going out, and subscribe the listener, so it stays in sync.
  3. Turn on Salesforce Connect: one more connection, to the database.

Nobody else changes anything. The other five orgs already read the database, so the sixth line’s cases simply appear in the related list they already have.

These parts aren’t only one team’s idea. Salesforce is retiring Salesforce-to-Salesforce, its older way of sharing records between orgs, in Spring ‘27, and its guide names the replacements: Salesforce Connect, Change Data Capture or Pub/Sub API (Integration Patterns (opens in a new tab), the legacy table, checked 2026-11-01). The same parts as this design. How they fit together for several orgs is the multi-org chapter (coming soon).

  • For every need: whether one pattern is enough, or it takes several.
  • For every combination: which pattern does which job: seed, keep current, show, and catch what was missed.
  • For every design: what happens when it grows by one, and how many connections that adds.
  • For every event-driven piece: the batch that seeds it, and the batch that backs it up.
  • For every build: the order. Set the baseline, keep it in sync, then let people see it.

Beyond the exam: what AI changes. Ask an AI to design this and you’ll likely get the first answer: connect every org to every other org. It’s correct, and it’s the one that doesn’t grow. The second answer comes from counting, the related lists, and asking what happens with org number six. Give it those questions, and it does much better. But the questions are the design work.