diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/CalculateDeltaNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/CalculateDeltaNode.java
index 71038e934f..1a2ba6d646 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/CalculateDeltaNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/CalculateDeltaNode.java
@@ -47,11 +47,9 @@ import static org.thingsboard.common.util.DonAsynchron.withCallback;
@RuleNode(type = ComponentType.ENRICHMENT,
name = "calculate delta", relationTypes = {"Success", "Failure", "Other"},
configClazz = CalculateDeltaNodeConfiguration.class,
- nodeDescription = "Calculates and adds 'delta' value into message based on the incoming and previous value",
- nodeDetails = "Calculates delta and period based on the previous timeseries reading and current data. " +
- "Delta calculation is done in scope of the message originator, e.g. device, asset or customer.
" +
- "If there is input key, the output relation will be Success unless delta is negative and corresponding configuration parameter is set.
" +
- "If there is no input value key in the incoming message, the output relation will be Other.",
+ nodeDescription = "Calculates delta and amount of time passed between previous timeseries key reading " +
+ "and current value for this key from the incoming message",
+ nodeDetails = "Useful for metering use cases, when you need to calculate consumption based on pulse counter reading.",
uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbEnrichmentNodeCalculateDeltaConfig")
public class CalculateDeltaNode implements TbNode {
diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbFetchDeviceCredentialsNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbFetchDeviceCredentialsNode.java
index e044dcbae6..130b50872f 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbFetchDeviceCredentialsNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbFetchDeviceCredentialsNode.java
@@ -39,8 +39,8 @@ import java.util.concurrent.ExecutionException;
configClazz = TbFetchDeviceCredentialsNodeConfiguration.class,
nodeDescription = "Adds device credentials to the message or message metadata",
nodeDetails = "if message originator type is Device and device credentials was successfully fetched, " +
- "rule node enriches message or message metadata with credentialsType and credentials properties " +
- "and send message via Success chain. Otherwise message will be forwarded via Failure chain.",
+ "rule node enriches message or message metadata with credentialsType and credentials properties. " +
+ "Useful when you need to fetch device credentials and use them for further message processing. For example, use device credentials to interact with external systems.",
uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbEnrichmentNodeFetchDeviceCredentialsConfig")
public class TbFetchDeviceCredentialsNode extends TbAbstractNodeWithFetchTo {
diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetAttributesNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetAttributesNode.java
index 42b0633cb2..2c0eed086c 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetAttributesNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetAttributesNode.java
@@ -36,13 +36,10 @@ import org.thingsboard.server.common.msg.TbMsg;
@RuleNode(type = ComponentType.ENRICHMENT,
name = "originator attributes",
configClazz = TbGetAttributesNodeConfiguration.class,
- nodeDescription = "Adds originator attributes and/or latest timeseries data for the message originator to the message or message metadata",
- nodeDetails = "If attributes enrichment configured, CLIENT/SHARED/SERVER attributes are added into message or message metadata " +
- "with specific prefix: cs/shared/ss. Latest telemetry value adds without prefix.
" +
- "See the following examples of accessing those attributes in other nodes:
" +
- "metadata.cs_serialNumber - to access client side attribute 'serialNumber' that was fetched to message metadata.
" +
- "metadata.shared_limit - to access shared side attribute 'limit' that was fetched to message metadata.
" +
- "msg.temperature - to access latest telemetry 'temperature' that was fetched to message.
",
+ nodeDescription = "Adds attributes and/or latest timeseries data for the message originator to the message or message metadata",
+ nodeDetails = "Useful when you need to retrieve some attributes or the latest telemetry readings from the message originator " +
+ "that are not included in the incoming message to use them for further message processing. " +
+ "For example to filter messages based on the threshold value stored in the attributes.",
uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbEnrichmentNodeOriginatorAttributesConfig")
public class TbGetAttributesNode extends TbAbstractGetAttributesNode {
diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetCustomerAttributeNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetCustomerAttributeNode.java
index 1deae1f5fb..74865da5b9 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetCustomerAttributeNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetCustomerAttributeNode.java
@@ -36,11 +36,9 @@ import org.thingsboard.server.common.data.util.TbPair;
name = "customer attributes",
configClazz = TbGetEntityDataNodeConfiguration.class,
nodeDescription = "Adds message originator customer attributes or latest telemetry into message or message metadata",
- nodeDetails = "Enriches incoming message or message metadata with the customer's attributes or latest telemetry values.
" +
- "The customer is selected based on the originator of the message. " +
- "Supported originator types:
" +
- "Customer, User, Asset, Device.
" +
- "Useful when you store some parameters on the customer level and would like to use them for message processing.",
+ nodeDetails = "Useful in multi-customer solutions where each customer has a different configuration or threshold set " +
+ "that is stored as customer attributes or telemetry data and used for dynamic message filtering, transformation, " +
+ "or actions such as alarm creation if the threshold is exceeded.",
uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbEnrichmentNodeCustomerAttributesConfig")
public class TbGetCustomerAttributeNode extends TbAbstractGetEntityDataNode {
diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetCustomerDetailsNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetCustomerDetailsNode.java
index a86aed66d5..723b98a98d 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetCustomerDetailsNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetCustomerDetailsNode.java
@@ -44,13 +44,9 @@ import java.util.NoSuchElementException;
@RuleNode(type = ComponentType.ENRICHMENT,
name = "customer details",
configClazz = TbGetCustomerDetailsNodeConfiguration.class,
- nodeDescription = "Adds originator customer details into message or message metadata",
- nodeDetails = "Enriches incoming message or message metadata with the corresponding customer details. " +
- "Selected details adds to the message with predefined prefix: customer_. Examples: customer_title, customer_address, etc.
" +
- "The customer is selected based on the originator of the message. Supported originator types:
" +
- "Device, Asset, Entity view, User, Edge.
" +
- "If message originator is not assigned to customer, or originator is not supported - " +
- "message will be forwarded via Failure chain, otherwise, Success chain will be used.",
+ nodeDescription = "Adds message originator customer details into message or message metadata",
+ nodeDetails = "Useful in multi-customer solutions where we need dynamically use customer contact information " +
+ "such as email, phone, address, etc., for notifications via email, SMS, and other notification providers.",
uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbEnrichmentNodeEntityDetailsConfig")
public class TbGetCustomerDetailsNode extends TbAbstractGetEntityDetailsNode {
diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetDeviceAttrNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetDeviceAttrNode.java
index 3a55c5d7ca..f776aeaa8c 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetDeviceAttrNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetDeviceAttrNode.java
@@ -34,15 +34,10 @@ import org.thingsboard.server.common.msg.TbMsg;
@RuleNode(type = ComponentType.ENRICHMENT,
name = "related device attributes",
configClazz = TbGetDeviceAttrNodeConfiguration.class,
- nodeDescription = "Add originators related device attributes and latest telemetry values into message or message metadata",
+ nodeDescription = "Add originators related device attributes and/or latest telemetry values into message or message metadata",
nodeDetails = "Related device lookup based on the configured relation query. " +
- "If multiple related devices are found, only first device is used for message enrichment, other entities are discarded.
" +
- "If Attributes enrichment configured, CLIENT/SHARED/SERVER attributes are added into message or message metadata " +
- "with specific prefix: cs/shared/ss. Latest telemetry value adds into message or message metadata without prefix.
" +
- "See the following examples of accessing those attributes in other nodes:
" +
- "metadata.cs_serialNumber - to access client side attribute 'serialNumber' that was fetched to message metadata.
" +
- "metadata.shared_limit - to access shared side attribute 'limit' that was fetched to message metadata.
" +
- "msg.temperature - to access latest telemetry 'temperature' that was fetched to message.
",
+ "If multiple related devices are found, only first device is used for message enrichment, other entities are discarded. " +
+ "Useful when you need to retrieve attributes and/or latest telemetry values from device that has a relation to the message originator and use them for further message processing.",
uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbEnrichmentNodeDeviceAttributesConfig")
public class TbGetDeviceAttrNode extends TbAbstractGetAttributesNode {
diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetOriginatorFieldsNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetOriginatorFieldsNode.java
index b0a282af1f..bd775ed4dc 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetOriginatorFieldsNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetOriginatorFieldsNode.java
@@ -39,10 +39,7 @@ import java.util.concurrent.ExecutionException;
configClazz = TbGetOriginatorFieldsConfiguration.class,
nodeDescription = "Adds message originator fields values into message or message metadata",
nodeDetails = "Fetches fields values specified in the mapping. If specified field is not part of originator fields it will be ignored. " +
- "Supported originator types:
" +
- "Tenant, Customer, User, Asset, Device, Alarm, Rule chain, Entity view.
" +
- "If message originator is not supported - message will be forwarded via Failure chain, " +
- "otherwise, Success chain will be used.",
+ "Useful when you need to retrieve originator fields and use them for further message processing.",
uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbEnrichmentNodeOriginatorFieldsConfig")
public class TbGetOriginatorFieldsNode extends TbAbstractGetMappedDataNode {
diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetRelatedAttributeNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetRelatedAttributeNode.java
index 109c47dcac..60d684098f 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetRelatedAttributeNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetRelatedAttributeNode.java
@@ -36,16 +36,10 @@ import java.util.Arrays;
type = ComponentType.ENRICHMENT,
name = "related entity data",
configClazz = TbGetRelatedDataNodeConfiguration.class,
- nodeDescription = "Adds originators related entity data into message or message metadata",
+ nodeDescription = "Adds originators related entity attributes or latest telemetry or fields into message or message metadata",
nodeDetails = "Related entity lookup based on the configured relation query. " +
- "If multiple related entities are found, only first entity is used for message enrichment, other entities are discarded.
" +
- "Data to fetch configuration:
" +
- "Attributes - rule node fetches server scope attributes configured in mapping and adds them into message or message metadata. " +
- "Access example in other nodes: metadata.serialNumber, msg.serialNumber.
" +
- "Latest telemetry - rule node fetches latest telemetry configured in mapping and adds them into message or message metadata. " +
- "Access example in other nodes: metadata.temperature, msg.temperature.
" +
- "Fields - rule node fetches fields configured in mapping and adds them into message or message metadata. " +
- "Access example in other nodes: metadata.entityName, msg.entityName.",
+ "If multiple related entities are found, only first entity is used for message enrichment, other entities are discarded. " +
+ "Useful when you need to retrieve data from an entity that has a relation to the message originator and use them for further message processing.",
uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbEnrichmentNodeRelatedAttributesConfig")
public class TbGetRelatedAttributeNode extends TbAbstractGetEntityDataNode {
diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNode.java
index 97f08ce8fd..569c76c2a2 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNode.java
@@ -55,16 +55,9 @@ import static org.thingsboard.rule.engine.metadata.TbGetTelemetryNodeConfigurati
name = "originator telemetry",
configClazz = TbGetTelemetryNodeConfiguration.class,
nodeDescription = "Adds message originator telemetry for selected time range into message metadata",
- nodeDetails = "The node allows you to configure fetch interval and fetch strategy. Fetch strategy section allows you to select fetch mode: First/Last/All
" +
- "If selected fetch mode First rule node will retrieve the closest telemetry to the fetch interval's start.
" +
- "If selected fetch mode Last rule node will retrieve the closest telemetry to the fetch interval's end.
" +
- "If selected fetch mode All rule node will retrieve telemetry from the fetch interval with configurable query parameters.
" +
- "Query parameters:
" +
- "Data aggregation function: Min/Max/Average/Sum/Count/None. " +
- "If selected aggregation function None rule node allows you to configure additional query parameters:
" +
- "Order by timestamp: Ascending/Descending
" +
- "Limit: Min value - 2, max value - 1000.
" +
- "Other data aggregation functions useful when you need to get the aggregated telemetry data as a single value for the configured fetch interval.",
+ nodeDetails = "Useful when you need to get telemetry data set from the message originator for a specific time range " +
+ "instead of fetching just the latest telemetry or if you need to get the closest telemetry to the fetch interval start or end. " +
+ "Also, this node can be used for telemetry aggregation within configured fetch interval.",
uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbEnrichmentNodeGetTelemetryFromDatabase")
public class TbGetTelemetryNode implements TbNode {
diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTenantAttributeNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTenantAttributeNode.java
index df1ae1b371..9fc8efe777 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTenantAttributeNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTenantAttributeNode.java
@@ -35,8 +35,8 @@ import org.thingsboard.server.common.data.util.TbPair;
name = "tenant attributes",
configClazz = TbGetEntityDataNodeConfiguration.class,
nodeDescription = "Adds message originator tenant attributes or latest telemetry into message or message metadata",
- nodeDetails = "Enriches incoming message or message metadata with the tenant's attributes or latest telemetry values. " +
- "Useful when you store some parameters on the tenant level and would like to use them for message processing.",
+ nodeDetails = "Useful when you need to retrieve some common configuration or threshold set " +
+ "that is stored as tenant attributes or telemetry data and use it for further message processing.",
uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbEnrichmentNodeTenantAttributesConfig")
public class TbGetTenantAttributeNode extends TbAbstractGetEntityDataNode {
diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTenantDetailsNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTenantDetailsNode.java
index e6433b541e..fafa7bf38d 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTenantDetailsNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTenantDetailsNode.java
@@ -33,9 +33,9 @@ import org.thingsboard.server.common.msg.TbMsg;
@RuleNode(type = ComponentType.ENRICHMENT,
name = "tenant details",
configClazz = TbGetTenantDetailsNodeConfiguration.class,
- nodeDescription = "Adds originator tenant details into message or message metadata",
- nodeDetails = "Enriches incoming message or message metadata with the corresponding tenant details. " +
- "Selected details adds to the message with predefined prefix: tenant_, Examples: tenant_title or tenant_address, etc.",
+ nodeDescription = "Adds message originator tenant details into message or message metadata",
+ nodeDetails = "Useful when we need to retrieve contact information from your tenant " +
+ "such as email, phone, address, etc., for notifications via email, SMS, and other notification providers.",
uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbEnrichmentNodeEntityDetailsConfig")
public class TbGetTenantDetailsNode extends TbAbstractGetEntityDetailsNode {