An Agent is a reusable object which forms the building block of a Data Stream. When a number of Agents are connected together, a Data Stream is formed.
Each Agent is designed to perform a specific function in the stream. For example, they can be used to retrieve data from a database in real-time, display data, filter, sort the data, or save the data somewhere else, depending on the function of that individual Agent.
Agents are needed to connect to specific systems. Since Agents are individual components, new Agents can also be added and integrated into the Data Stream to complete a specific functionality.
Each Agent consists of code, settings, and other properties that are packaged into a file that can be uploaded to Data Stream Designer.
XMPro has a library of Agents that are already written and ready for use. To acquire any of these Agents, please contact your XMPro sales representative or write to us at [email protected]. Alternatively, since Agents can be written by anyone that has some knowledge of programming and has access to the required technologies, you can write your own Agent by following these instructions.

Finding Agents

The search bar can be used to find any specific Agents that you may be looking for. There is a dropdown option where you can specify to search through everything in Data Stream Designer, or only for Agents.


In Data Steam Designer, Agents are divided into different categories, depending on the overall function they perform. There are six different categories available: Action Agents, Context Providers, Listeners, Transformations, AI & Machine Learning, Recommendations, and Functions. These categories are separate from the App and Data Stream Categories.

Action Agents

An Action Agent is an Agent that consumes events in a stream and then performs internal or external (third-party) actions, e.g. sending notifications or performing data warehouse updates. Action Agents output a response after each event has been processed. For example, the Azure SQL Action Agent writes data to an Azure SQL database.

Context Providers

Context providers are Agents that provide context to a stream by consuming reference or static data and making it available. For example, the SQL Server Context Provider provides static data to the Data Stream by reading the data in a database table and sending it to the next Agent.


Listeners are Agents that listen for data or events from sensors and third-party systems. For example, the MQTT Listener listens for data from sensors as it is posted to MQTT.


Transformation Agents alter the shape or form of data. For example, the Join Transformation joins data it receives from two separate data sources.

AI & Machine Learning

AI & Machine Learning Agents allow you to run advanced AI to transform the data. Agents that use AI & Machine Learning include Azure ML, IBM Watson, Jupyter Notebook, and more.


Recommendation Agents are related to Recommendations and let you complete actions such as running recommendations, updating recommendations, and more.


Functions perform specific mathematical or statistical operations on data. For example, the FFT Function performs forward FFT calculations on the data it receives.


Agents can keep track of their different versions. Versions of an Agent can be copied, and changes made to it can be created as a new version without affecting previous versions. See the Version article for more details on versions.

Publish and Unpublish Data Streams

On the Agents page, there will be a number next to the version if the agent has been used in a Data Stream. Click the number to view a list of all Data Streams that are using that Agent version. Here you can directly unpublish or publish a Data Stream.
As an Admin, this is useful if you need to unpublish a Data Stream and you don't have access to it. See the How to Admin Unpublish Override article for more details.


Along with the code that is written for an Agent, defining what actions the Agent should perform in a Data Stream, user settings are specified for the Agent. These settings are values that the user has to provide for the Agent to be able to function properly, such as a username, password, or server URL.
For example, consider the SQL Server Writer Agent. The function this Agent needs to perform in a Data Stream is to take the data it receives and write it to a table in a database. The settings a user needs to define for the Agent to be able to do that may be as follows:
  • Name of the SQL Server instance
  • SQL Server username
  • Whether SQL Server authentication should be used or not
  • SQL Server password
  • Database the data should be written to
  • Whether a new table should be created or not
  • The Table in the database that should be used to write the data to, if the user wishes to use an existing table
  • Name of the table that should be created if the user wants to write the data to a new table
  • If database triggers should be fired if a record is inserted
In addition to the User Settings template, the following properties are also required to be specified at the time of packaging:


Platform used to write the Agent. Options available include NetCore and Java.


A flag indicating if the Agent can be classified as being Virtual or Non-Virtual.

Help URL

URL linking to online resources that would aid a person intending to use the Agent in a stream in understanding the function of the Agent as well as how to configure it successfully.

Entry point

The namespace and class name of the Agent’s DLL file, for example, if an Agent with class name “ActionAgent” is located in the XMPro.JupyterNotebookAgents namespace, the entry endpoint for it would be “XMPro.JupyterNotebookAgents.ActionAgent”.

Input endpoints

The point, visually represented on the Use Case canvas as a green square that allows an Agent to receive data from another Agent.

Output endpoints

The point, visually represented on the Use Case canvas as a green square that allows an Agent to send data further along the stream when connected to a subsequent Agent.

Error endpoint

The point, visually represented on the Use Case canvas as a red square that allows an Agent to send any error data further along a part of the stream, designed to handle data records or events that do not meet certain requirements.

Require input map

A flag indicating if the Agent should receive events in a specific structure. This enables the arrows leading to an Agent to be made configurable and will allow the user to map the inputs of an Agent to incoming attributes.

Actions on the Agent

Adds a new Agent.
Selects multiple Agents.
Deletes the Agent.
Saves any changes made to the Agent up to this point.
Discards any changes made to the Agent up to this point.
Delete Versions
Deletes selected versions of the Agent.

Further Reading