CONNECT Classic Stream Reader module
- Last UpdatedJun 26, 2026
- 5 minute read
This module allows you to read streams in CONNECT Classic and receive optional updates from the Change Broker.
Required configuration settings
The following table lists the configuration settings for the CONNECT Classic Stream Reader module.
|
Name |
Requirements |
Purpose |
Default |
Required? |
|---|---|---|---|---|
|
Credential1 |
A CONNECT Classic OAuth Client Credential Grant Credential |
Provides the credentials necessary to authenticate to CONNECT |
Required |
|
|
Namespace1 |
A namespace ID |
Identifies the namespace where the streams are located |
Required |
|
|
Use Change Broker2 (Recommended) |
When checked, uses change broker for all updates |
After the initial message, the system outputs change broker data only if an update occurs. |
Disabled |
Optional |
|
Target Property |
Length: 1-64 characters |
Specifies the property that stores the results |
data |
Optional |
|
Stream IDs1 |
Length: 1-250 characters |
Stream IDs used to write data into output messages |
Optional3 |
|
|
Stream IDs List (Resource) |
A resource file (JSON-format array of strings) |
A resource file that contains a list of Stream ID objects in JSON-format (see example at end of topic). |
Optional3 |
|
|
Keep Properties |
Checked for enabled or unchecked for disabled |
When checked, keeps all input message properties in the output message; otherwise a new message is created. |
Disabled |
Optional |
|
Base URL |
A valid CONNECT Classic Base URL |
Reserved for special use cases |
Optional |
1Indicates settings that can be set on the Wizard page of the Module Settings dialog.
2For more information about Change Broker, including its requirements and limitations, see the "Learn about Change Broker" section at the end of this topic.
3Optional: At least one stream ID must be provided to the module, either explicitly or in a resource file.
Stream selection
This module allows you to select the streams in CONNECT Classic that you want to monitor. There are three methods used to select streams:
-
Select from a list of streams on the Wizard page of the Module Settings dialog.
-
You can select and/or search from all streams.
-
-
Add streams individually in the module settings.
-
Import a list of streams from a resource file.
You can combine these methods as needed, but at least one stream ID must be provided to the module.
Search queries in the Wizard page (Module Settings dialog)
When using the Wizard page to search for streams, by default, you are searching on all of the stream's fields, not just the stream ID or stream name. The text entered into the search box is used to make an exact match unless you include wildcards. You can use the asterisk character (*) as a wildcard to match any number of characters at the beginning or end of the search text. For example, if you enter *pump* in the search box, the search results will include any streams with pump in any of their fields, such as a stream named Pump 1 Throughput. If you enter *pump, the search results will include any streams with a field that ends with pump, such as a stream named Main Pump.
The wildcard character can also be used to match words with a specific beginning text and ending text by placing the wildcard in the middle of the search text. For example, if you enter p*p, the search results include any references to streams with pump as a field value. The wildcard does not span across multiple words. For more information on queries, using wildcards, and advanced search techniques, see CONNECT data services developer documentation.
Stream resource file format
When using a resource file to provide stream IDs, the file must be in JSON format as shown in the following example. This file must also contain an array of objects, where each object is a key-value pair of "id" and stream ID strings.
Code example: JSON format
[
{
"id": "Stream-001"
},
{
"id": "Stream-002"
},
{
"id": "Stream-003"
}
]
Code example: Module output results
When the flow starts, the module attempts to read all streams specified in the settings at message receipt. For each successfully read stream, the module adds the stream data containing the last recorded value for the stream to the message.
After the initial read, if the Use Change Broker setting is enabled, then, on receipt of subsequent messages, the module polls the Change Broker for updates to any of the streams. Only updates recorded during the interval between incoming messages will be returned and added to the incoming message in the output. If there have been no updates during the message interval, no new data is added to the message.
If the Use Change Broker setting has been disabled, the module continues to read streams and output values upon receipt of each subsequent message. This approach follows the same process as the initial message, but uses updated values.
When the module outputs stream data to the flow, the data for each stream is composed of the properties listed in the following table.
|
Property Name |
Purpose |
|---|---|
|
<target_property> |
An array of stream objects: stream IDs, associated values, and metadata |
|
Id |
The stream ID |
|
Name |
The name property of the stream |
|
Description |
A description of the stream |
|
TypeId |
Identifies the type of the stream.Value property |
|
Timestamp |
The date and time when the stream.Value was recorded |
|
Value |
The most recent value recorded for this stream (may be the same as the previous value) |
|
Properties |
A set of additional stream properties received in the initial response from the StreamStore |
|
Metadata |
A set of stream metadata, received in the initial response from the StreamStore, represented as key-value pairs |
Example output
{
"crosser": {
"success": true
},
"<target_property>": [
{
"Description": "Throughput for Pump 1",
"Id": "stream1",
"Metadata": {
"unit": "liters per minute",
"tag": "Pump 1"
},
"Name": "Pump 1",
"Properties": [
"property1",
"property2"
],
"Timestamp": "2026-02-12T19:48:03.2574986Z",
"TypeId": "PI-Float32",
"Value": 86.308525
},
{
"Description": "Throughput for Pump 2",
"Id": "stream2",
"Metadata": {
"unit": "liters per minute",
"tag": "Pump 2"
},
"Name": "Pump 2",
"Properties": [
"property1",
"property2"
],
"Timestamp": "2026-02-09T22:39:08Z",
"TypeId": "PI-Float32",
"Value": 99.173256
}
]
}
}
Learn about the Change Broker setting
When the Use Change Broker checkbox is selected as a module setting, the module polls the change broker for updates of all the configured stream IDs whenever a new message is received. Any streams that have updated since the last received message, and only those streams that have updated since the last message was received, are added to the output message with updated values. In addition, if a stream has been updated multiple times after the last message was received, each update is added to the output message as a separate entry in the stream array.
After the initial output message, the number of streams and number of updates per stream in subsequent output messages can vary from zero (if no streams have updated since the last message) to many streams and/or many values per stream (if some streams have updated multiple times since the last message).
Polling frequency
When using change broker, poll the module frequently to receive all stream updates. This also helps keep output message size manageable for high-frequency streams.
After 60 minutes of inactivity, the Change Broker removes all stream updates. As a result, we recommend you poll the module more frequently -- every 10 minutes -- and adjust the polling frequency, as needed, to suit the rate of stream updates.
The module generates a warning message if it is polled less than every 60 minutes. If data values are not required every 60 minutes, use the standard polling mechanism by deselecting the "Use Change Broker" option.
More information on change broker
For more information, refer to the following topics:
-
CONNECT data services documentation: Change broker
CONNECT data services developer documentation: Change Broker