External Systems

Valence reaches out using HTTP to exchange data with external systems. External systems can also call into Valence using the Apex REST API.

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.

Ideally, someone has already written an Adapter for the specific external system you are interested in connecting to. Search the AppExchange and Github for Valence extensions, or reach out to ask us if we’re aware of specific Adapters. Eventually we will expose an Adapter indexing service and a way to search and install them.

Authentication

Valence uses the native Salesforce Named Credential feature to handle:

  1. Defining external systems that can be interacted 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.

Out of the box, Named Credential supports two authentication methods:

  • Standard username + password header authentication.
  • OAuth using the “authorization code” grant type.

You can still use a custom authentication mechanism or use one of the other OAuth grant types, it just requires some additional effort at the Adapter level to bake that in.

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.