Skip to main content

Salesforce

Overview

⚠️ Note that the following sections are relevant only for the latest versions of the Salesforce Adapter (6.0 and later).

ℹ️ For details on migrating from 5.0 to 6.0, see the Migrating from 5.0 to 6.0 section.

ℹ️ For details on the legacy versions (3.0 and 4.0), see the Legacy Adapter section.

The Salesforce Adapter exposes a bidirectional interoperability layer bridging the gap between Salesforce Lightning and all interop-enabled apps. It can operate within the io.Connect platform (io.Connect Desktop or io.Connect Browser) or in a web browser depending on where you are using Salesforce.

The Salesforce Adapter enables Salesforce developers to execute outbound interoperability operations (such as invoking Interop methods) from Salesforce and react to inbound interoperability events (e.g., Interop method invocations by any of your interop-enabled apps). This allows sharing information and functionality between Salesforce and your apps running in io.Connect Desktop and io.Connect Browser.

The Salesforce Adapter is shipped separately and can be installed from Salesforce AppExchange or from a custom link provided directly to the client.

The following demonstrates how Salesforce can be integrated with io.Connect Desktop via the Salesforce Adapter:

Implementation Guide

This guide describes the different use cases and the respective strategies for composing complete interoperability solutions when using the Salesforce Adapter.

The decisions described here will determine which components you will use, how they will connect to the io.Connect platform, and what you will need to configure in your Salesforce organization.

The following factors will determine your implementation strategy:

  1. The environment in which Salesforce runs - within the io.Connect platform (io.Connect Desktop or io.Connect Browser), or in a standalone web browser.

  2. The security architecture of your Salesforce organization - Lightning Web Security or Lightning Locker.

  3. The optional modules included in your package build.

The first two factors will determine your implementation strategy. The third will determine which out-of-the-box functionalities you can add to it.

Implementation Scenarios

The following table lists the possible implementation scenarios:

Scenario Description
io.Connect Desktop The Salesforce platform is opened as an io.Connect app in io.Connect Desktop. Use the workspaceUtilityBar and workspaceBaseComponent components.
io.Connect Browser The Salesforce platform is opened as an io.Connect app in a new browser window or tab in io.Connect Browser. Use the workspaceUtilityBar and workspaceBaseComponent components.
Web Browser Salesforce is opened in a standalone web browser, outside the io.Connect platform. Use the webBrowserUtilityBar and webBrowserBaseComponent components.

If your organization is using Lightning Locker instead of Lightning Web Security, see the strategy described in the Lightning Locker Organization section.

The following table lists the functionalities you can add to a scenario, provided that your package build includes the respective module:

Functionality Module Components
Context Synchronization io_context contextSyncUtilityBar, Fdc3ContextMixin
CRM API crm_api CrmPlugin, crmUtilityBar, crmWebBrowserCrmUtilityBar

Composition Rules

The following rules apply to every scenario:

  • A Salesforce app is allowed a single connection to the io.Connect framework. Keep that connection in a Utility Bar component, as it's loaded once per app and stays connected while the user navigates between records, objects, and tabs.

  • Implement each interoperability-related functionality (e.g., registering an Interop method via io.interop.register()) as a separate plugin class inside the selected interop-enabled Utility Bar component. This enables you to develop and test each functionality independently. Plugins aren't available in organizations that use Lightning Locker.

  • Attach your Utility Bar component as a utility item that starts automatically. Otherwise, it will connect to the io.Connect framework and will register its Interop methods only after the user clicks the utility item.

io.Connect Desktop

The Salesforce platform is defined as an io.Connect app and is opened in an io.Connect Window or a Workspace. The platform components connect to the io.Connect framework through the injected @interopio/desktop library, so no Gateway credentials are needed.

To implement this scenario:

  1. Define Salesforce as an io.Connect app, enable auto injection of the @interopio/desktop library, and provide the preload script distributed with the Salesforce Adapter package.

  2. Create a Utility Bar component that extends workspaceUtilityBar and holds your interoperability logic in plugins.

  3. Attach your component to the Lightning app in which you want to use it.

⚠️ Note that this scenario requires Lightning Web Security. In organizations that use Lightning Locker, implement the Lightning Locker Organization scenario instead.

⚠️ Note that a Lightning Out app has no Utility Bar, so you must use the workspaceBaseComponent component when embedding Salesforce components in your own web app.

ℹ️ For more details, see the Usage > io.Connect Platform section.

io.Connect Browser

The Salesforce platform is defined as an io.Connect app and is opened in an io.Connect Window or a Workspace. Due to the security restrictions imposed by Salesforce, the app must be opened in a new browser window or tab, as it's impossible to embed the Salesforce platform in an <iframe>.

To implement this scenario:

  1. Define Salesforce as an io.Connect app in the configuration of your Main app and configure it to open in a new browser window or tab.

  2. Create a Utility Bar component that extends workspaceUtilityBar and holds your interoperability logic in plugins.

  3. Attach your component to the Lightning app in which you want to use it.

⚠️ Note that this scenario requires Lightning Web Security. In organizations that use Lightning Locker, implement the Lightning Locker Organization scenario instead.

⚠️ Note that using the platform components in io.Connect Browser projects is still an experimental feature, so enabling some of the io.Connect Browser functionalities may require additional development.

⚠️ Note that a Lightning Out app has no Utility Bar, so you must use the workspaceBaseComponent component when embedding Salesforce components in your own web app.

ℹ️ For more details, see the Usage > io.Connect Platform section.

Web Browser

Salesforce is opened in a standalone web browser and connects to the io.Connect Gateway over a WebSocket. This is the only scenario that requires connection settings and a user login.

To implement this scenario:

  1. Create a Utility Bar component that extends webBrowserUtilityBar and holds your interoperability logic in plugins, or use the available webBrowserUtilityBar component as it is.

  2. Attach your component to the Lightning app in which you want to use it.

  3. Provide the default connection settings for your organization, its users, or its user profiles, and configure the lifetime of the Gateway token.

  4. Wrap each of your components in the webBrowserBaseComponent component, which reaches the connection of the Utility Bar over the Lightning Message Service bridge.

⚠️ Note that the webBrowserBaseComponent component isn't available in organizations that use Lightning Locker. Apply the InteropConsumerMixin mixin to your components instead, as described in the Lightning Locker Organization section.

ℹ️ For more details, see the Usage > Web Browser section.

Lightning Locker Organization

Lightning Locker prevents you from creating Lightning Web Components that use components from another package or namespace, so a Lightning Message Service bridge is used instead. A broadcaster component owns the connection and relays Interop method invocations to and from your own components.

The consumer side of the bridge can't be imported across namespaces either, so it's distributed in an additional package, which is provided only to clients and for proof of concept projects.

To implement this scenario:

  1. Attach the lmsBroadcaster component to the Lightning app in which you want to use it.

  2. Install the additional package, which provides the InteropConsumerMixin mixin and a reference consumer component.

  3. Apply the InteropConsumerMixin mixin to each of your components, so that they can register and invoke Interop methods through the broadcaster.

⚠️ Note that only the Utility Bar components that use the Lightning Message Service bridge can be used in this scenario - lmsBroadcaster within the io.Connect platform, and webBrowserUtilityBar or its Aura wrapper interopio_Salesforce_Adapter in a web browser. The workspaceUtilityBar component doesn't work in organizations that use Lightning Locker.

⚠️ Note that the workspaceBaseComponent and webBrowserBaseComponent components aren't available either, as they must be referenced in the HTML file of your own component, which Lightning Locker prevents across namespaces.

⚠️ Note that plugins aren't available in this scenario, so you must keep your interoperability logic in your own components.

⚠️ Note that the bridge supports only registering and invoking Interop methods. The rest of the io.Connect APIs and the streaming Interop methods aren't available.

ℹ️ For more details, see the Usage > Lightning Message Service section.

Context Synchronization

The Context Synchronization module keeps the Contact record displayed in Salesforce synchronized with the context data of your other interop-enabled apps. It's an addition to the io.Connect Browser and io.Connect Desktop scenarios.

To add this functionality, either attach the available contextSyncUtilityBar component, or apply the Fdc3ContextMixin mixin to your existing Utility Bar component. Configure the module via the "sfContext" object in your io.Connect Channel definition or in the "customProperties" object of your Salesforce app definition.

ℹ️ For more details, see the Usage > Context Synchronization section.

CRM API

The CRM module provides the T42.CRM.* Interop methods, which enable your interop-enabled apps to create, read, update, and delete Salesforce records. The records and the fields available to these methods are configured via Custom Metadata types.

To add this functionality, add the CrmPlugin plugin to your own Utility Bar component, or attach one of the available Utility Bar components of the module, which use the plugin directly - crmUtilityBar for the io.Connect platform scenarios, or crmWebBrowserCrmUtilityBar for the Web Browser scenario.

Migrating from 5.0 to 6.0

The Salesforce Adapter 6.0 replaces the single monolithic package with a core SDK and a set of optional modules - Web Browser, CRM, Lightning Message Service, and Context Synchronization. A package build can now contain only the modules your organization actually uses, which reduces the installed footprint and allows a module to be updated without republishing everything else.

The interop-enabled components have been renamed after the mode in which they are used - with a workspace prefix for components running within the io.Connect platform, and with a webBrowser prefix for components running in a web browser.

The 6.0 release also removes items that have been deprecated since earlier versions, such as the Aura events of the legacy Glue42 package.

The following sections describe the breaking changes in 6.0 and the steps for migrating an existing 5.0 installation to 6.0.

Removed Components

The following components have been removed and replaced with identical components with new names:

Removed Component Replacement
interopConnectedComponentBase webBrowserBaseComponent
interopConnectedComponentStandalone workspaceBaseComponent
interopConnectedLightBase workspaceLightComponent
interopSalesforceAdapter webBrowserUtilityBar (crmWebBrowserCrmUtilityBar for the CRM variant)
lmsStandalone lmsBroadcaster

Update both the HTML tag and the JavaScript import path in every component that uses a renamed component.

Removed Aura Events

The following duplicate Aura events of the legacy Glue42 package have been removed:

Removed Event Replacement
GlueConnectionStatus ConnectionStatusResponse
GlueCustomInteropEvent HandleInteropEvent
glueInvoke TriggerInteropEvent
ResendGlueConnectionStatus ConnectionStatusRequest

Other Breaking Changes

  • The Mapping__c and Mapping_Field__c custom objects have been removed. The T42.CRM.SyncRecord method is now configured via Custom Metadata types.
  • The ApexExportsMixin mixin must be imported from crmMixins instead of from workspaceUtilityBar.
  • The workspaceUtilityBar component no longer exposes the <c-constants> component to Aura.

Migration Guide

The renamed components replace their 5.0 counterparts instead of aliasing them, so a 5.0 installation can't be upgraded in place. Salesforce won't allow uninstalling the 5.0 package while a Lightning page, a Lightning app, or a FlexiPage still references any of its components.

To make the migration process easier, you can request a 6.0 package to be produced for you under a namespace different from the one used by your existing 5.0 installation. This will enable both versions to run side by side, so that interoperability remains available to your users while you rework your pages:

  1. Install the 6.0 package under the new namespace, alongside the existing 5.0 package.

  2. Move your pages and components to the new namespace one at a time, replacing the removed components with their 6.0 equivalents and validating each page before moving to the next one.

  3. Uninstall the 5.0 package once no references to the old namespace remain.

  4. Assign the new permission set groups to your users - "User of 'interop.io Salesforce Adapter'" or "Administrator of 'interop.io Salesforce Adapter'". Skip this step if your build doesn't include the Web Browser or the CRM module.

Changelog

The Salesforce Adapter uses semantic versioning. Backward compatibility is guaranteed within a major version and breaking changes are introduced only by incrementing the major version.

It's highly recommended to test each version change in a sandbox environment before applying it to production.

⚠️ Note that some Salesforce installers require uninstalling the currently installed package before installing a new minor version. This is an installation constraint and doesn't indicate a breaking change.

⚠️ Note that a package build can contain only some of the available modules, so you must compare the entries below against the components that are actually installed in your organization.

6.0

6.100.0

Release date: 09.07.2026

Included Libraries

Library Version
@interopio/browser 4.5.0
@interopio/core 6.11.0
@interopio/desktop 6.21.0
@interopio/fdc3 2.10.1
@interopio/search-api 3.4.1
@interopio/workspaces-api 4.5.0

New Features

  • Added the io_context module, which keeps the Contact record displayed in Salesforce synchronized with the context data of the other interop-enabled apps. Supports a Salesforce-native record layout and an FDC3 context layout. See Context Synchronization.
  • Added a Software Bill of Materials (SBOM) file (sbom-ioSFA.spdx.json) to the Salesforce Adapter static resource.

Improvements & Bug Fixes

  • Updated dependencies to address vulnerabilities.

6.23.0.2

Release date: 07.05.2026

Included Libraries

Library Version
@interopio/browser 4.4.0
@interopio/core 6.10.5
@interopio/desktop 6.20.2
@interopio/search-api 3.4.0
@interopio/workspaces-api 4.4.0

Improvements & Bug Fixes

  • Updated dependencies to address vulnerabilities.

6.0.1

Release date: 04.05.2026

Included Libraries

Library Version
@interopio/browser 4.4.0
@interopio/core 6.10.4
@interopio/desktop 6.20.1
@interopio/search-api 3.4.0
@interopio/workspaces-api 4.4.0

Improvements & Bug Fixes

  • Updated dependencies to address vulnerabilities.

6.0.0

Release date: 31.12.2025

Breaking Changes

ℹ️ For details on migrating from 5.0 to 6.0, see the Migrating from 5.0 to 6.0 section.

  • Split the single package into a core SDK and optional modules.
  • Renamed the interop-enabled components after the mode in which they are used.
  • Removed the Mapping__c and Mapping_Field__c custom objects in favor of Custom Metadata types.
  • Removed the Aura events of the legacy Glue42 package.
  • Replaced the permission set groups. System Administrators must assign the new ones to the users after the upgrade.

New Features

  • Added feature gating to the build process, so that a package build can contain only the modules required by the client.

Improvements & Bug Fixes

  • The T42.CRM.SyncRecord method now skips Salesforce objects that aren't configured in the Custom Metadata types instead of rejecting them.
  • Added backward compatibility with the legacy Glue42 Enterprise platform 3.23 and later.
  • The preload scripts are now included in the main package.
  • Fixed an issue with Cyrillic characters in the password field.

5.0

5.17.1

Release date: 03.08.2026

Improvements & Bug Fixes

  • Removed the loading of source map files, which aren't included in the package.
  • Updated dependencies to address vulnerabilities.

5.17.0

Release date: 27.07.2026

Included Libraries

Library Version
@interopio/browser 4.5.0
@interopio/core 6.11.0
@interopio/desktop 6.18.0
@interopio/search-api 3.5.0
@interopio/workspaces-api 4.5.0

New Features

  • Added the preload script for the platform components to the main package.

5.14.0

Release date: 13.10.2025

New Features

  • Added Custom Metadata configuration for using the T42.CRM.SyncRecord method with custom Salesforce objects.

5.13.2

Release date: 11.09.2025

New Features

  • Added the lmsStandalone component, which enables interoperability in organizations that use Lightning Locker instead of Lightning Web Security. It can be placed either in the Utility Bar or on a Lightning page.
  • Added support for using the T42.CRM.SyncRecord method with custom Salesforce objects.

⚠️ Note that the Lightning Message Service bridge was experimental in this version and was distributed as a separate package. As of version 6.0, it's part of the core SDK.

5.12.2

Release date: 17.07.2025

New Features

  • Added plugin support to all platform components.

5.11.0

Release date: 02.07.2025

Included Libraries

Library Version
@interopio/browser 4.0.2
@interopio/core 6.6.0
@interopio/desktop 6.14.0
@interopio/search-api 3.0.0
@interopio/workspaces-api 4.0.2

Improvements & Bug Fixes

  • Added support for io.Connect Browser 4.0 and io.Connect Desktop 9.9.

5.10.1

Release date: 26.03.2025

New Features

  • Added the workspaceUtilityBar component - the recommended Utility Bar component for using Salesforce within the io.Connect platform.
  • Added an optional CRM package providing the T42.CRM.* Interop methods.

Improvements & Bug Fixes

  • The library static resources are now loaded lazily.

5.9.3

Release date: 26.03.2025

Included Libraries

Library Version
@interopio/browser 3.5.1
@interopio/core 6.5.0
@interopio/desktop 6.10.0
@interopio/search-api 2.5.1
@interopio/workspaces-api 3.5.3

New Features

  • Added Lightning Web Component support and Lightning Web Security compatibility.
  • Added the interopSalesforceAdapter Utility Bar component for using Salesforce in a web browser. The Aura Utility Bar component now wraps it.
  • Added the interopConnectedComponentBase component for interop-enabling custom components that work together with a Utility Bar component.
  • Added the interopConnectedComponentStandalone and interopConnectedLightBase components for interop-enabling custom components that run within the io.Connect platform without a Utility Bar component.
  • The platform components now provide direct access to the io.Connect APIs and accept custom configuration for the IODesktop() factory function.

Improvements & Bug Fixes

  • The platform components now use a preload script instead of requiring Salesforce Debug Mode.
  • Reduced the internal error logging of the platform components to one entry per instance.

4.0

4.6

Release date: 10.12.2023

New Features

  • Passed the Salesforce security review as "interop.io Salesforce Adapter".
  • Added a Utility Bar component with support for inbound and outbound Aura events.

Improvements & Bug Fixes

  • Removed one of the configuration steps required after installation.
  • Rebranded the Utility Bar component.

3.0

3.26

Release date: 03.08.2023

New Features

  • Passed the Salesforce security review as "Glue42".
  • Added a Utility Bar component with support for inbound and outbound Aura events.