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

In this article
- The legacy Salesforce to Salesforce (S2S) feature is on its way out. According to Salesforce, it can no longer be enabled since Spring ’26, official support ends with Summer ’26, and it stops working in all orgs in Spring ’27. Don’t build anything new on it.
- To read another org’s records without copying them, use Salesforce Connect’s cross-org adapter (a paid add-on in most editions). To share a unified customer view across orgs, use Data 360 with Data Cloud One. To work with external partners, give them a partner portal on Experience Cloud or Partner Cloud instead of a second org.
- To sync records both ways with business rules, use MuleSoft (Anypoint or MuleSoft for Flow), another iPaaS (integration platform as a service), or a custom REST integration secured with Named Credentials, keyed on external ID fields.
- After an acquisition, the first question is not how to connect the orgs but whether to merge them. The quiz below helps you pick a route.
Jump to
- When you need a Salesforce to Salesforce integration
- What happened to the Salesforce to Salesforce (S2S) feature
- Your options for connecting two Salesforce orgs
- Merge the orgs or integrate them?
- How the data flows
- Object and ID mapping
- How to set it up, step by step
- Pitfalls and how to fix them
- When a custom integration makes sense
- Go-live checklist
- Where Gilzor fits
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):
| Release | What changes for S2S |
|---|---|
| Spring ’26 | S2S can no longer be enabled. Existing connections keep working. |
| Summer ’26 | Official support ends. Existing connections still run until retirement. |
| Spring ’27 | Full 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 adapter | Data 360 with Data Cloud One | Partner portal (Experience Cloud, Partner Cloud) | MuleSoft for Flow | MuleSoft Anypoint or other iPaaS | Custom REST integration | Merge the orgs | |
|---|---|---|---|---|---|---|---|
| Best for | Reading another org’s records live | One customer profile and reporting across many orgs | External partners working your deals and cases | Admin-built, event-driven pushes between orgs | Complex, two-way or many-system flows | Two-way sync with precise rules | Companies that will run as one |
| Copies data? | No, external objects query the other org | Data is unified in the Data 360 home org and shared with companion orgs | No, partners log in to your org | Yes | Yes | Yes | One-time migration |
| Direction | Mostly read, live | Home org to companion orgs | Not applicable | Usually one-way per flow | One- or two-way | One- or two-way, your design | Not applicable |
| Cost level | Paid add-on license in most editions | Data 360 license and usage in the home org | Partner user licenses | Licensed separately | Platform subscription | Build cost plus upkeep | Migration project, then fewer licenses to manage |
| Typical effort | Days to weeks | Weeks to months | Weeks | Days to weeks | Weeks to months | Weeks to months | Months |
| Main limit | Every query is an API call in the other org; external objects don’t behave like standard records everywhere | A data platform decision, not a record sync | Partners must work in your system, not theirs | Flow-level error handling | Platform cost and skills | You own monitoring, retries and API changes | Big 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.
| Signal | Points to merging | Points to integrating |
|---|---|---|
| Customers | Mostly the same accounts | Different markets or segments |
| Sales and service process | Will be unified | Stays different on purpose |
| Data to share | Almost everything | A few objects or a reporting layer |
| Legal and compliance | No barrier to one system | Data residency, regulation or a possible divestiture |
| Customization | One org is simple and close to standard | Both 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.
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 A | Org B | Direction | Matching key | System of record |
|---|---|---|---|---|
| Account | Account | A → B | Org_A_Id__c on B (external ID, unique); optionally a shared business key such as a customer number | Org A |
| Contact | Contact | A → B | Org_A_Id__c on B; parent account resolved through the account’s external ID | Org A |
| Opportunity | Opportunity | B → A | Org_B_Id__c on A; account linked by Org A’s own ID stored on B | Org B |
| Record owner (User) | Record owner (User) | Mapped, not synced | Email or Federation ID lookup; fallback to a default user or queue | Each org |
| Picklists (Stage, Industry, Type) | Picklists | Translated | A value mapping table kept under change control | Owner of the object |
| Record types | Record types | Translated | By developer name, never by ID | Each org |
| Products and price books | Products and price books | Usually A → B, or not synced | Product code | The org that owns the catalog |
| Notes, files, activities | Notes, files, activities | Usually not synced | None | Each 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.
- 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.
- 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.
- Prepare sandboxes in both orgsFull or partial copy sandboxes with realistic data. Point every connection at sandboxes first; production endpoints come last.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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




Talk to the people who build it. Tell us about your project and get a free estimate of scope, timeline and cost.
Pitfalls and how to fix them
| Problem | What happens | Fix |
|---|---|---|
| Sync loops | Org A updates Org B, Org B’s trigger sends the change back, and both orgs ping-pong the same record and burn API calls | Ignore changes made by the integration user; send only fields that actually changed; one system of record per field |
| Duplicates | Retries or a parallel S2S run create the same record twice | Always upsert on a unique external ID; clean duplicates before the first backfill |
| Record ownership | The owner doesn’t exist in the other org, so the insert fails or every record lands on the integration user | Map users by email or Federation ID; route unknown owners to a queue or a default owner |
| Sharing surprises | Synced records follow the target org’s sharing model, so people see more or less than in the source org | Review org-wide defaults, role hierarchy and sharing rules in the target before go-live |
| Picklist and record type mismatches | A new value in one org makes the sync fail or write blanks | Value mapping table; change picklists in both orgs together; restricted picklists flag errors early |
| API limits | Mass updates, backfills or cross-org adapter queries exhaust an org’s daily API allocation | Bulk API for backfills, composite requests, scheduled mass updates, and limit monitoring |
| License costs | Salesforce Connect add-ons, partner licenses, Data 360 usage or iPaaS fees appear after the design is chosen | Price each option with your account executive before you build; S2S replacements have license impacts |
| Hidden S2S dependencies | After Spring ’27, flows, reports or code that relied on S2S stop working without anyone noticing | Search metadata for S2S references during the inventory and test in a sandbox with S2S disabled |
| Data that shouldn’t move | Personal data, deal margins or another company’s customers land in an org with a wider audience | Map 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.
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?
What replaces Salesforce to Salesforce?
How do I connect two Salesforce orgs?
Can I use Salesforce Connect to link two orgs?
Should we merge two Salesforce orgs after an acquisition?
Why do Salesforce record IDs not match between orgs?
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.

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?
Services
Web DevelopmentCustom websites and web apps — front-end, back-end, launch and support.→By company type
Selected projects






The team behind them





