· 15 min read

Salesforce to Salesforce Integration: Connecting Two Orgs After S2S (2026 Guide)

Two Salesforce orgs need to share data: after an acquisition, with a partner, or across business units. The old Salesforce to Salesforce feature is being retired in Spring ’27, so the answer now depends on what you need: a live view, a shared customer profile, a partner portal or a real two-way sync. Below: every option, how to choose, how to map IDs and the traps to avoid.
Two CRM clouds with record cards linked by two-way arrows and a key icon, illustrating a Salesforce to Salesforce integration between two orgs
Connecting two Salesforce orgs?Tell us why the orgs need to talk and what each team must see. We’ll help you decide between merging and integrating, map the records and IDs, and build and support the integration.
Plan my org-to-org integration

When you need a Salesforce to Salesforce integration

A Salesforce to Salesforce integration connects two separate Salesforce orgs so records, or views of them, move between them. It usually comes from one of four situations:

  • Mergers and acquisitions. The acquired company runs its own org. Leadership wants one pipeline report next week, long before anyone can merge systems.
  • Partner sharing. A distributor or reseller runs Salesforce too, and you exchange leads, opportunities or cases with them.
  • Multi-org by design. Regions, brands or regulated units keep separate orgs on purpose, and a central team needs shared accounts or consolidated reporting.
  • Special-purpose orgs. A service, support or product org that has to see the customer master from the main sales org.

Each case needs something different. A partner needs a narrow, controlled slice of data. A post-merger team may need almost everything, which is a hint that merging could be the better answer. Decide what problem you are solving before you pick a tool.

What happened to the Salesforce to Salesforce (S2S) feature

For years the obvious answer was the built-in Salesforce to Salesforce feature, usually called S2S. It let one org publish leads, contacts, opportunities and other records to a connected org, which then accepted them. It was free and declarative, and it was also limited, hard to monitor and easy to outgrow.

According to Salesforce’s retirement notice, the feature is being retired in three phases (as of October 2026):

ReleaseWhat changes for S2S
Spring ’26S2S can no longer be enabled. Existing connections keep working.
Summer ’26Official support ends. Existing connections still run until retirement.
Spring ’27Full retirement: S2S stops functioning in all orgs.

Salesforce’s Summer ’26 architect highlights describe S2S as a low-friction shortcut for scenarios that genuinely needed a more structured pattern, and warn the change will require substantial planning.

Salesforce’s retirement notice recommends testing and validating the new approach in a sandbox without S2S configured, and notes that the recommended alternatives have some license or cost impact. If you run S2S next to its replacement during the transition, expect duplicate records unless both sides match on the same keys.

If you still run S2S, inventory every connection now: which objects are published and subscribed, which fields, which automation reacts to shared records, and which reports or Apex code reference S2S connection data. That list is your requirements document for the replacement.

Your options for connecting two Salesforce orgs

Salesforce’s own replacement guidance names Partner Cloud, Data Cloud One, MuleSoft Anypoint and MuleSoft for Flow. Add Salesforce Connect, custom code and the option of merging, and you get seven routes:

Salesforce Connect cross-org adapterData 360 with Data Cloud OnePartner portal (Experience Cloud, Partner Cloud)MuleSoft for FlowMuleSoft Anypoint or other iPaaSCustom REST integrationMerge the orgs
Best forReading another org’s records liveOne customer profile and reporting across many orgsExternal partners working your deals and casesAdmin-built, event-driven pushes between orgsComplex, two-way or many-system flowsTwo-way sync with precise rulesCompanies that will run as one
Copies data?No, external objects query the other orgData is unified in the Data 360 home org and shared with companion orgsNo, partners log in to your orgYesYesYesOne-time migration
DirectionMostly read, liveHome org to companion orgsNot applicableUsually one-way per flowOne- or two-wayOne- or two-way, your designNot applicable
Cost levelPaid add-on license in most editionsData 360 license and usage in the home orgPartner user licensesLicensed separatelyPlatform subscriptionBuild cost plus upkeepMigration project, then fewer licenses to manage
Typical effortDays to weeksWeeks to monthsWeeksDays to weeksWeeks to monthsWeeks to monthsMonths
Main limitEvery query is an API call in the other org; external objects don’t behave like standard records everywhereA data platform decision, not a record syncPartners must work in your system, not theirsFlow-level error handlingPlatform cost and skillsYou own monitoring, retries and API changesBig change for users, automation and reports

Salesforce Connect cross-org adapter

Salesforce Connect exposes data that lives outside your org as external objects. Its cross-org adapter uses the Salesforce REST API to read records from a provider org and show them in a subscriber org, without storing a copy. It fits cases like “service agents in org B need to see the contracts that live in org A.”

Salesforce’s documentation lists it as an extra-cost add-on in Enterprise, Performance and Unlimited editions. Because each query hits the provider org’s API, heavy list views and reports can use up its daily API allocation.

Data 360 and Data Cloud One

Data 360 (formerly Data Cloud) is Salesforce’s data platform. With Data Cloud One, one home org hosts the Data 360 instance and shares chosen data spaces with companion orgs, which use that data without running their own Data 360.

According to Trailhead, each companion org needs a free Data Cloud One Companion Org SKU, every home org has a maximum number of free companion connections, and converting a home org into a companion later can take months. Choose this when the goal is a unified customer profile and cross-org reporting, not copying opportunities back and forth.

Partner portals instead of a second org

If the “other org” is really a partner, ask whether they need their own Salesforce at all for this process. A partner portal built on Experience Cloud, or Salesforce’s Partner Cloud for full partner relationship management, lets partner users log in to your org with partner licenses and work deals, leads or cases under your sharing rules.

That means no sync, no ID mapping and no loops. It falls short when partners insist on working in their own CRM; then you are back to an integration.

MuleSoft and other integration platforms

MuleSoft for Flow brings prebuilt connectors into Flow Builder as actions, and Salesforce lists it as an option for communication between two orgs; Trailhead notes it is licensed separately.

MuleSoft Anypoint is the route when the flow needs transformation, routing, error handling and orchestration, or when several orgs and other systems are involved. Other iPaaS products (Workato, Boomi, Celigo and similar) connect two orgs with the same pattern. Our Salesforce MuleSoft integration guide covers that platform in depth.

Custom REST integration with Named Credentials

A custom integration calls the other org’s REST API from Apex, Flow (via HTTP callouts or External Services) or a small middleware service. A Named Credential with an External Credential stores the endpoint and OAuth details, so no password lives in code. The target org gets a dedicated integration user and an OAuth client app.

Changes are detected with Change Data Capture, Platform Events or record-triggered flows, then sent as upserts. For the API mechanics, see our Salesforce API integration guide, and for choosing between real-time, batch and event-driven designs, the Salesforce integration patterns guide.

Which option fits you?

Start with who runs the other org, because an acquired company, a reseller and a sister business unit rarely need the same route. The result is the option teams in that position usually pick first.

How should you connect your Salesforce orgs?

Merge the orgs or integrate them?

After an acquisition this decision matters more than any tool. A sync between two orgs that hold the same customers, products and processes is a permanent cost: two sets of licenses, two admin teams, and every field change made twice.

SignalPoints to mergingPoints to integrating
CustomersMostly the same accountsDifferent markets or segments
Sales and service processWill be unifiedStays different on purpose
Data to shareAlmost everythingA few objects or a reporting layer
Legal and complianceNo barrier to one systemData residency, regulation or a possible divestiture
CustomizationOne org is simple and close to standardBoth are heavily customized with different data models

A common sequence is to integrate a thin slice first (accounts, open opportunities, a consolidated pipeline report), then merge once the processes are aligned. Build that first integration so it can be switched off cleanly, and use the same external ID fields for the later data migration.

How the data flows

For a two-way sync the design that holds up is simple: every object has one system of record, every synced record carries the other org’s ID, and the integration user’s own changes never trigger a send back.

Two orgs, one owner per object, IDs stored on both sides Org A (customer master) Accounts, contacts System of record Opportunities (copy) Org_B_Id__c (external ID) Integration user Its edits are not sent back Org B (acquired company) Accounts (copy) Org_A_Id__c (external ID) Opportunities System of record Integration user Its edits are not sent back Upsert on Org_A_Id__c Upsert on Org_B_Id__c Alternative: Salesforce Connect reads Org A live, no copy Change detection Change Data Capture or a record-triggered flow failed calls go to a retry queue with alerts Transport REST API via Named Credential, OAuth or the same flows on MuleSoft or another iPaaS
Each org owns its own objects and sends upserts to the other, keyed on an external ID that holds the source record ID. Loop protection and error handling sit in the middle, whether you build it yourself or on an integration platform.

Object and ID mapping

Salesforce record IDs are generated by each org, so the same customer has a different ID in each one. Never try to force IDs to match. Store the source ID in a unique external ID field on the target object and upsert on it: the REST API then updates the record if the ID exists and creates it if not, which makes retries safe.

Org AOrg BDirectionMatching keySystem of record
AccountAccountA → BOrg_A_Id__c on B (external ID, unique); optionally a shared business key such as a customer numberOrg A
ContactContactA → BOrg_A_Id__c on B; parent account resolved through the account’s external IDOrg A
OpportunityOpportunityB → AOrg_B_Id__c on A; account linked by Org A’s own ID stored on BOrg B
Record owner (User)Record owner (User)Mapped, not syncedEmail or Federation ID lookup; fallback to a default user or queueEach org
Picklists (Stage, Industry, Type)PicklistsTranslatedA value mapping table kept under change controlOwner of the object
Record typesRecord typesTranslatedBy developer name, never by IDEach org
Products and price booksProducts and price booksUsually A → B, or not syncedProduct codeThe org that owns the catalog
Notes, files, activitiesNotes, files, activitiesUsually not syncedNoneEach org

Two rules prevent most mapping bugs. Resolve lookups through external IDs too (an opportunity in Org B points to its account by the account’s external ID, not by a hard-coded record ID). And translate record types, queues and users by name or key, because their IDs also differ between orgs and between sandboxes.

How to set it up, step by step

These steps cover the most common path: a custom or iPaaS sync between two orgs, often replacing S2S. Every step happens twice, once per org, so plan the work in pairs. Take the exact Setup screens from Salesforce Help, since labels change between releases.

  1. Inventory what existsList current S2S connections, published and subscribed objects and fields, and every flow, trigger, report or Apex class that touches shared records. If there is no S2S yet, list who needs which data and why.
  2. Decide merge or integrate, and the system of recordUse the signals above. For each object, write down which org owns it and which direction it moves. Anything without an owner doesn’t sync.
  3. Prepare sandboxes in both orgsFull or partial copy sandboxes with realistic data. Point every connection at sandboxes first; production endpoints come last.
  4. Create integration usersOne dedicated user in each org, with a permission set that grants API access and only the objects and fields in your mapping. Salesforce includes a limited number of Salesforce Integration user licenses in supported editions.
  5. Set up authenticationIn the receiving org, create the OAuth client app the integration logs in through. In the sending org, create an External Credential and a Named Credential for the other org’s My Domain URL. Prefer a server-to-server OAuth flow over stored passwords.
  6. Add external ID fieldsCreate unique external ID fields (for example Org_A_Id__c) on each synced object in the target org, and a field for the partner org’s ID on the source side if updates flow back.
  7. Build the flowsDetect changes with Change Data Capture, Platform Events or record-triggered flows, then upsert on the external ID through the REST API or your platform’s Salesforce connector. Use composite or bulk requests for volume, and send parents before children.
  8. Add loop protection and error handlingSkip changes made by the integration user, compare values before writing, and log every failure with the record ID and the reason. Alerts go to a named owner.
  9. Backfill and test real scenariosLoad existing records once, then test: new record, update on each side, the same record edited in both orgs, a deleted record, an owner who doesn’t exist in the other org, a new picklist value, and a bulk update of several thousand records.
  10. Run in parallel, then cut overIf you are replacing S2S, run both for a short pilot and watch for duplicates; then switch off S2S connections, remove automation that depends on them and monitor the new flows daily for the first weeks.

Built by Gilzor

Results we’ve shipped

70+products launched
98%delivered on time
85%clients come back
Art Scherbakov, Co-FounderAndrew Laminsky, CTOYuri Rudenya, Head of Mobile Development at GilzorAlena Timofeeva, Product Marketing Lead

Talk to the people who build it. Tell us about your project and get a free estimate of scope, timeline and cost.

See how we’d approach yours

Pitfalls and how to fix them

ProblemWhat happensFix
Sync loopsOrg A updates Org B, Org B’s trigger sends the change back, and both orgs ping-pong the same record and burn API callsIgnore changes made by the integration user; send only fields that actually changed; one system of record per field
DuplicatesRetries or a parallel S2S run create the same record twiceAlways upsert on a unique external ID; clean duplicates before the first backfill
Record ownershipThe owner doesn’t exist in the other org, so the insert fails or every record lands on the integration userMap users by email or Federation ID; route unknown owners to a queue or a default owner
Sharing surprisesSynced records follow the target org’s sharing model, so people see more or less than in the source orgReview org-wide defaults, role hierarchy and sharing rules in the target before go-live
Picklist and record type mismatchesA new value in one org makes the sync fail or write blanksValue mapping table; change picklists in both orgs together; restricted picklists flag errors early
API limitsMass updates, backfills or cross-org adapter queries exhaust an org’s daily API allocationBulk API for backfills, composite requests, scheduled mass updates, and limit monitoring
License costsSalesforce Connect add-ons, partner licenses, Data 360 usage or iPaaS fees appear after the design is chosenPrice each option with your account executive before you build; S2S replacements have license impacts
Hidden S2S dependenciesAfter Spring ’27, flows, reports or code that relied on S2S stop working without anyone noticingSearch metadata for S2S references during the inventory and test in a sandbox with S2S disabled
Data that shouldn’t movePersonal data, deal margins or another company’s customers land in an org with a wider audienceMap only the fields each team needs; check contracts and privacy rules, especially before a deal closes

When a custom integration makes sense

Out-of-the-box options cover reading another org (Salesforce Connect), sharing a data layer (Data 360) and letting partners in (portals). Custom work, on your own code or on MuleSoft, starts to pay off when:

  • Records must move both ways with field-level ownership and conflict rules.
  • Data has to be filtered, transformed or approved on the way, for example only closed-won deals from one region.
  • You run three or more orgs, or the orgs also feed an ERP; see the integration patterns guide for hub and event-driven designs.
  • The integration is a bridge to a merge and must reuse its IDs for the final migration.

A typical build has change capture in each org, a small service or MuleSoft application in the middle, a mapping table for users, picklists and record types, a retry queue and alerts. Expect most of the effort in mapping and testing, not in the API calls.

$2–10kSimple one-way custom integration
$10–40kTypical custom two-way sync with a CRM
15–25%Of the build cost per year to keep it running

Multi-org programs that touch an ERP land higher than these figures. The ranges, and what moves a project within them, come from our API integration cost guide. If the orgs also need to connect to other systems, the Salesforce integration guide covers the wider picture.

Go-live checklist

Fill it in with both org admins in the room. Most org-to-org failures come from a decision one side assumed the other had made.

Salesforce to Salesforce go-live

FAQ

Is Salesforce to Salesforce being retired?
Yes. According to Salesforce’s retirement notice, Salesforce to Salesforce (S2S) can no longer be enabled since the Spring ’26 release, official support ends with Summer ’26, and it is fully retired in the Spring ’27 release, when it stops functioning in all orgs. Orgs that already use it should plan and test a replacement now.
What replaces Salesforce to Salesforce?
Salesforce points to four alternatives: Partner Cloud for sharing with partners who resell your products, Data Cloud One (part of Data 360) for companies with several orgs that need shared customer data, MuleSoft Anypoint for complex integrations, and MuleSoft for Flow for integrations built in Flow Builder, including between two Salesforce orgs. A custom REST integration and Salesforce Connect’s cross-org adapter are also common choices, depending on whether you need to copy records or only read them.
How do I connect two Salesforce orgs?
Pick the method by what the second org needs. To view records live, use Salesforce Connect’s cross-org adapter, which exposes the other org’s data as external objects. To copy and sync records, call the target org’s REST API from Flow, Apex, MuleSoft or another integration platform, authenticate with a Named Credential and an integration user, and upsert on an external ID field so records never duplicate.
Can I use Salesforce Connect to link two orgs?
Yes. The cross-org adapter of Salesforce Connect uses the Salesforce REST API to show data from a provider org as external objects in a subscriber org, without copying it. Salesforce Connect is a paid add-on in Enterprise, Performance and Unlimited editions (it is available in Developer Edition), and every query uses API calls in the provider org, so check licensing and API limits before you design around it.
Should we merge two Salesforce orgs after an acquisition?
Often, yes, if both companies will sell to the same customers with the same process, and the integration would otherwise sync most of the data. Keep separate orgs when the businesses stay separate, when legal, regulatory or data-residency rules require it, or when one company may be sold again. Many teams integrate first for reporting and merge later, once processes are aligned.
Why do Salesforce record IDs not match between orgs?
Every Salesforce record ID is generated by the org that created the record, so the same customer has different IDs in each org. To link them, add a unique external ID field in the target org that stores the source org’s record ID (or a shared business key), and use upsert on that field. Store the target ID back in the source org if you need two-way updates.

Where Gilzor fits

With S2S retiring in Spring ’27, many teams now have to replace a connection they never had to think about. Gilzor is a software development company with engineers in Poland and Cyprus, not a Salesforce reseller. We can help you weigh merging against integrating, map records and IDs between the orgs, and build and support the replacement sync on custom code or MuleSoft; scoping is described on our Salesforce integration services page.

No sales pitch

Get a straight answer for your project

Tell us what you’re building. We’ll reply with options, a rough cost and timeline. If we’re not the right fit, we’ll say so.

Next, a few optional questions so the first call is useful. We use your details only to reply to your request. Privacy Policy

Art Scherbakov
Written byArt Scherbakov

Co-Founder of Gilzor. Works with founders and product companies on how to staff and run engineering: team extension, dedicated teams, and getting stalled projects moving again.

Gilzor · Web Development partner

Need a team for your web product?

95%referred by business partners
70+successful launches
85%repeat business
98%delivered on time

The team behind them

Art Scherbakov
Art ScherbakovCo-Founder
Andrew Laminsky
Andrew LaminskyCTOLinkedIn
Yuri Rudenya
Yuri RudenyaHead of Mobile Development at GilzorLinkedIn
Alena Timofeeva
Alena TimofeevaProduct Marketing LeadLinkedIn
Tell us what you’re buildingOptions, a rough cost and timeline for your project. No commitment.

More insights