Skip to content
Version 6.1.0
Contact Us

Notification Forwarder

A Notification Forwarder object re-sends event notifications that this device receives to a further set of recipients. It does not create events of its own. It lets a device that can only send to a few destinations reach many, and it lets you change a large set of destinations in one place.

  • Fan out alarms from field devices to several workstations
  • Let controllers with short recipient lists reach many destinations
  • Forward only the notifications this device generates
  • Filter forwarded events by process identifier
  • Keep one shared destination list for a whole site
Property What it holds
Recipient_List Fixed destinations, each with valid days, a time window and the transitions to send.
Subscribed_Recipients Recipients that subscribed to receive forwarded notifications. Clients add and remove their own entries.
Process_Identifier_Filter Selects which incoming notifications the object forwards, by the process identifier they carry.
Port_Filter Limits forwarding to notifications that arrived on chosen network ports.
Local_Forwarding_Only When true, the object forwards only notifications generated in this device.

The object is not commandable and the standard applies no event algorithm to it. Setting Out_Of_Service to true stops it from forwarding. Reliability reports a fault only if the forwarder has no recipient it can reach, because none is configured or every one is unreachable.

Enable it with the STACK_OPTION_OBJECT_TYPE_NOTIFICATION_FORWARDER build option. It is on in the full target; in the embedded target, define STACK_OPTION_OBJECT_TYPE_NOTIFICATION_FORWARDER yourself (see Configuring a build). CASBACnetStackDLL.h has no function for this type, so create it with BACnetStack_AddObject. The stack serves only the object identifier, object type, property list and status flags itself; your callbacks serve every other property, matched to its datatype.

Notification Class, Event Enrollment

The properties ASHRAE 135-2024 clause 12.51 defines for this object type.

How to read the table:

  • Conformance is what the standard asks of every object of this type: R is required, W is required and writable by a client, O is optional. A digit after the letter marks a condition in the standard that decides when the property is present or writable, such as support for intrinsic reporting.
  • Present by default: yes means the stack presents the property as soon as you add the object; no means it is optional and you turn it on with BACnetStack_SetPropertyEnabled. This is the stack’s starting setup, so it can differ from the conformance code.
  • Writable is whether a client can write the property by default. Change it with BACnetStack_SetPropertyWritable.
  • not in profile means the stack does not offer this property for this object type.
  • Value when your callback does not answer: “Held by the stack” means the stack stores and serves the value itself and does not ask your callbacks. Otherwise it is the value the stack answers when your callback declines or is not registered.
Property Datatype Conformance Present by default Writable Value when your callback does not answer
Object_Identifier BACnetObjectIdentifier R yes no Held by the stack.
Object_Name CharacterString R yes no "Object <type>,<instance>", such as "Object 0,1" for Analog Input 1.
Object_Type BACnetObjectType R yes no Held by the stack.
Description CharacterString O no no ""
Status_Flags BACnetStatusFlags R yes no Built by the stack from your callbacks.
Reliability BACnetReliability R yes no 0
Out_Of_Service Boolean R yes no false
Recipient_List BACnetLIST of BACnetDestination R yes no No default: the read fails.
Subscribed_Recipients BACnetLIST of BACnetEventNotificationSubscription W yes yes No default: the read fails.
Process_Identifier_Filter BACnetProcessIdSelection R yes no No default: the read fails.
Port_Filter BACnetARRAY[N] of BACnetPortPermission O1,3 no yes No default: the read fails.
Local_Forwarding_Only Boolean R yes no false
Reliability_Evaluation_Inhibit Boolean O no no false
Property_List BACnetARRAY[N] of BACnetPropertyIdentifier R yes no Held by the stack.
Audit_Level BACnetAuditLevel O2 not in profile not in profile No default: the read fails.
Auditable_Operations BACnetAuditOperationFlags O2 not in profile not in profile No default: the read fails.
Tags BACnetARRAY[N] of BACnetNameValue O no no No default: the read fails.
Profile_Location CharacterString O no no ""
Profile_Name CharacterString O no no ""