External Systems

When we say “external system”, we’re referring to something other than Salesforce that can participate in a data exchange. This might be a database in the cloud or on-premise. It might be a service you use, like Stripe or Quickbooks. Or maybe it’s a messaging hub, like Kafka.

Data is exchanged with these external systems via HTTPS.

Interactions with external systems are handled by Adapters, and since these are Apex classes there is tremendous flexibility in how to converse with these external systems. SOAP or REST, XML or JSON…all are viable.

If you can reach it via HTTPS, you can talk to it with Valence.

Authentication

Valence uses the native Salesforce Named Credential feature to handle:

  1. Defining URLs to reach external systems to interact with
  2. Configuring authentication details and storing identity secrets

Named Credentials are a fantastic feature that allows a Salesforce admin to define an endpoint (URL) and authentication information to access that endpoint.

Valence leverages Named Credentials extensively to allow admins to easily define external systems they’d like to use Valence to exchange data with.

For a deeper dive on authentication, look at Adapter Authentication.

API Design

The more modern the API exposed by the external system, the simpler and easier a Valence Adapter will be to write. Features such as self-describing schemas, filtering based on timestamps, pagination, etc all contribute to a smooth build.

If you are responsible for designing and building the external API that Valence will talk to, take a look at our guide on How to Design a Complementary Valence API.

Systems Without APIs

Valence communicates with external systems using HTTPS, but sometimes you have a system that doesn’t have an HTTPS API. Usually this is some kind of database (MySQL, SQL Server, Postgres, etc) being hosted somewhere, either in the cloud or on-premise.

For these scenarios, we recommend combining Valence with a great tool called SlashDB that wraps these sorts of database with an API layer. It’s straightforward to set up, and there’s already a prebuilt Valence adapter that works with SlashDB, so you can be up and running in no time.