Valence is a middleware engine that lives inside your Salesforce org. Data movement is handled with direct connections between Salesforce and external systems. There are several building block concepts that are important to understand in order to configure Valence.


An Adapter is an Apex class that knows how to talk to some external system or data store. Valence can make the connection to another system, but without an Adapter we wouldn’t know how to exchange information with that system. It’s as if Valence places a telephone call to someone that speaks Latin, and the Adapter translates the Latin into English.

Every Link defines two Adapters that it will use: a source Adapter to get data from, and a target Adapter to send data to. Some Adapters can only be used as a source, some only as a target, and some can be either.


A Filter is an Apex class that processes a data record as it moves through the Valence engine. It is an opportunity to observe and possibly manipulate records as they go by. Any number of Filters can be attached to a Link, and the order in which they fire (and any configuration of them) is controlled by the user setting up the Link.

Here are some example use cases for Filters:

  • Adding a constant value to records going by.
  • Manipulating date/time strings to be friendly to the target system.
  • Filtering out records that should be ignored and not processed.
  • Validating records for custom business logic that would add a warning or an error to a record.
  • Transforming record shape or field values.

Valence includes some Filters out of the box for you to use.