Remove from Group
Use this node to remove the message originator from an entity group — for example, removing a device from the Active devices group when it goes offline, or revoking access by removing a user from a group that governs dashboard visibility.
Configuration
Section titled “Configuration”- Group name pattern — required. Name of the target entity group. Supports templatization — use
${metadataKey}and$[dataKey]to resolve dynamically. - Groups cache expiration time (sec) — how long group lookups are cached.
0= never expire. Caching reduces database calls for high-throughput flows.
Message processing algorithm
Section titled “Message processing algorithm”- Identify the owner of the message originator (tenant or customer).
- Resolve the group name pattern from message data and metadata.
- Search for an entity group matching the resolved name, entity type, and owner.
- If the group is not found, route via
Failure. - If the originator is a member of the group, remove it (the special
Allgroup is never modified). - If the originator is not a member, treat this as success (idempotent).
- Route via
Success.
Output connections
Section titled “Output connections”| Connection | Condition |
|---|---|
Success | Entity removed from the group (or was already not a member). |
Failure | Group not found, unsupported entity type, ownership mismatch, or unexpected error. |
Examples
Section titled “Examples”Example 1 — Remove device from a named group
Section titled “Example 1 — Remove device from a named group”State: device is a member of My device group (tenant-owned).
{ "groupNamePattern": "My device group", "groupCacheExpiration": 300}Result: device removed from My device group. Routes via Success.
Example 2 — Dynamic group name from message data
Section titled “Example 2 — Dynamic group name from message data”Data: { "location": "Warehouse" } | State: group Warehouse devices exists under the tenant.
{ "groupNamePattern": "$[location] devices", "groupCacheExpiration": 300}Result: pattern resolves to Warehouse devices; device removed. Routes via Success.
Example 3 — Device not in the group → Success (idempotent)
Section titled “Example 3 — Device not in the group → Success (idempotent)”Device is not a member of Target Group. Result: removal succeeds with no-op. Routes via Success.
Example 4 — Group does not exist → Failure
Section titled “Example 4 — Group does not exist → Failure”{ "groupNamePattern": "Non-existent group", "groupCacheExpiration": 300}Result: group not found. Routes via Failure.
Example 5 — Ownership hierarchy mismatch → Failure
Section titled “Example 5 — Ownership hierarchy mismatch → Failure”State: group Customer Group is owned by a customer, but the device belongs to the tenant. Result: lookup finds no matching group at the tenant level. Routes via Failure.
JSON schema
Section titled “JSON schema”{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "TbRemoveFromGroupConfiguration", "type": "object", "required": ["groupNamePattern", "groupCacheExpiration"], "additionalProperties": false, "properties": { "groupNamePattern": { "type": "string" }, "groupCacheExpiration": { "type": "integer" } }}