Overview¶
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.
Links¶
Building Links is the main mechanism by which you set up Valence to move data between systems. A Link represents a connection between an object in Salesforce and a table/object somewhere else. For example, you might have the “Company” table in your ERP connected to the Account object in Salesforce. That would be a single Link. If you connected the “Person” table from this fictitious ERP to the Contact object in Salesforce that would be a second Link.
Links can share access credentials (a NamedCredential), Adapters, and Filters. Each Link has its own mappings, schedule, settings, configurations and analytics.
There are two flavors of Links:
- Pull - Valence fires at scheduled intervals and asks the source system for data, then sends that data to the target system.
- Push - Event-driven rather than scheduled, the source system notifies Valence of new or changed data and Valence processes that data and delivers it to the target system.
Salesforce can be the source or target system (or should you choose, both) for both Pull and Push Links.
Adapters¶
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.
Filters¶
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.