This example demonstrates how a query can be executed against a SQL Server database, and data returned to the Workflow.
1) Select the Database datasource type:
2) Select the type of database you wish to import from. Currently, the only supported type is Microsoft SQL Server database:
3) Select the server to execute the query against, and enter the server's login details. A successful connection must be established before you can progress, and the Test Connection button can be used to manually check this:
4) Select the database to be used as the default context for the query:
5) Opt to either import data from a table (a shortcut for a simply query on a single table), or write your own query:
6a) If Table was selected in Step 5, select the SQL table to import from:
Note: the offered tables will be limited to those that the user specified in Step 3 has access to.
6b) If Query was selected in Step 5, write the query where prompted. This can include using Fields and Variables, which will have their values substituted into the executed query:
7) Set the timeout threshold for the query. If the query takes longer than this to complete, then an error is displayed to the agent:
8a) If Table was selected in Step 5, then the returned rows can be filtered by any column's value on this step. Any chosen filters will also need to provide a sample value to ensure the data types are compatible:
8b) If Query was selected in Step 5 and any Fields or Variables were used in the query, sample values should be provided. This allows testing whether rows are returned, data types are compatible, and allows for mapping the discovered columns in the following step:
i) The Table Field's reference column needs to be specified; this is a unique identifier that is stored as the value of the Table Field when a row is selected in it. If the Multiple Select option is enabled in the Options tab, then multiple rows in the Table can be selected simultaneously, with the Table Field's value being set as a comma-separated list of the reference column values:
Note: if the reference column doesn't enforce unique values, then selecting a row will also select all other rows with the same reference value.
ii) The data to be used in the Table Field is then defined, both for display and for subsequent mapping. The Reference Column is always listed first, but can be hidden by unticking the Visible column for it. Any column in the returned data can be mapped to the Table, and have its name and column width formatted. It's also possible to set whether the column is searchable, or hide columns if their values are needed for mapping but they shouldn't be displayed in the Table itself:
The List Box Field's value and display text columns need to be specified; the value of the selected row(s) are used as the Field's value, and the Display Text is what's shown to the agent in the List Box:
Note: if the value column doesn't enforce unique values, then selecting a row will also visually select all other rows with the same value.
Agent Assist - Rebuttals Only
The Agent Assist - Rebuttals Field's objection and rebuttal columns need to be specified, and the prompt can optionally be provided:
Note: the objection & rebuttal values must be unique.
Note: the prompt values can be left blank - a default prompt will be used instead if so.
All Controls
9) Mapping the returned value for each column to a Field or Variable is configured in this step, as is whether the value should always overwrite any pre-existing data within the mapped Field or Variable, or only if the mapped Field or Variable is empty at the time:
Note: the List Box and Agent Assist - Rebuttals can only map the utilised columns, and will always overwrite existing data within the target Field or Variable.
Note: if Multiple Selection is enabled for a Table or List Box, then no data will be mapped even if only a single row is currently selected.
Note: if any of the returned values are null then they won't be mapped, even if overwrite is enabled; to overwrite a Field with blank data, an empty string must be used.
10) When an External Data Source completes its query or the agent selects an item from a Table, List Box, or Agent Assist - Rebuttals, the Field can be configured to
trigger certain other Fields to perform an action. In this example, when our External Data Source has completed its query, it will trigger a Table to source or refresh its content:

Update Links are a deceptively powerful tool, allowing the chaining of multiple Fields together into automated sequences of actions. For example; when an agent selects a row in a Table, this can map a series of values to other fields like a Text Box, as well as triggering a second Table to refresh its data set based on the selection in the first Table. The second Table will then display a related set of data based upon the selection in the original Table. This could then be taken further, with the second Table being set to trigger a
JavaScript - Button when a row was selected, causing some specific behaviour to then occur in-Workflow based on the current selections.