BACnet Audit Log Object

The BACnet Audit Log object (Clause 12.64) records auditable operations into a buffer read with ReadRange: required and optional properties with datatypes.

What the Audit Log Object Is

The Audit Log object, defined in Clause 12.64 of ANSI/ASHRAE 135-2024, records auditable operations on a BACnet device into an internal buffer for later retrieval. It combines audit notifications from operation sources and operation targets, merges the two sides of each operation into a single record, and timestamps it. The result is a tamper-evident history of who did what on the network, the audit trail behind BACnet’s revision-22 security model.

Each Audit Log keeps a persistent, optionally fixed-size buffer that overwrites its oldest records when full. The buffer is read back as a list of audit records with the ReadRange service (and the AuditLogQuery service), and Total_Record_Count supplies the sequence number for each record. Unlike other logging objects, the Audit Log does not use the BUFFER_READY event algorithm; when it supports intrinsic reporting it does so for fault conditions only and applies no event algorithm. An Audit Log may optionally forward its records to a parent Audit Log for buffered, bulk collection.

Where You’ll See It

  • Security audit trail. An Audit Log captures configuration writes, commands, and other auditable operations so operators can review what changed and when.
  • Central collection. Field devices forward their audit records to a parent Audit Log on a supervisory device, which buffers them for bulk transfer to the audit system.
  • Compliance retrieval. A head end (the central BMS server) pulls the accumulated records with ReadRange to satisfy an audit or investigate an incident.

Required Properties

Clause 12.64 requires every Audit Log object to provide these properties. Datatypes are the spec’s names: Unsigned32 and Unsigned64 are integers, BOOLEAN a true/false flag, BACnetLIST of BACnetAuditLogRecord the timestamped buffer, and the other BACnet-prefixed types are structured values defined by the standard. Enable is writable.

PropertyDatatypeWhat it holds
Object_IdentifierBACnetObjectIdentifierThe object’s type and instance number, unique within the device
Object_NameCharacterStringThe human-readable point name, unique within the device
Object_TypeBACnetObjectTypeAlways audit-log for this object
Status_FlagsBACnetStatusFlagsFour health flags: in-alarm, fault, overridden, out-of-service
Event_StateBACnetEventStateThe object’s current event state (normal or fault for this object type)
EnableBOOLEANWritable; turns audit logging on and off, itself recorded in the buffer
Buffer_SizeUnsigned32The maximum number of records the buffer holds
Log_BufferBACnetLIST of BACnetAuditLogRecordThe stored timestamped audit records, read with ReadRange
Record_CountUnsigned64The number of records currently in the buffer
Total_Record_CountUnsigned64The running total of records ever collected, used as the sequence number
Property_ListBACnetARRAY[N] of BACnetPropertyIdentifierThe list of properties this instance actually implements

Optional Properties

The properties integrators meet most are the forwarding group (Member_Of, Delete_On_Forward, Issue_Confirmed_Notifications) that sends records to a parent log. The intrinsic-reporting group, present for fault reporting, generally appears or is absent as a set.

PropertyDatatypeGroup
DescriptionCharacterStringGeneral
Member_OfBACnetDeviceObjectReferenceLogging
Delete_On_ForwardBOOLEANLogging
Issue_Confirmed_NotificationsBOOLEANLogging
Event_Detection_EnableBOOLEANIntrinsic reporting
Notification_ClassUnsignedIntrinsic reporting
Event_EnableBACnetEventTransitionBitsIntrinsic reporting
Acked_TransitionsBACnetEventTransitionBitsIntrinsic reporting
Notify_TypeBACnetNotifyTypeIntrinsic reporting
Event_Time_StampsBACnetARRAY[3] of BACnetTimeStampIntrinsic reporting
Event_Message_TextsBACnetARRAY[3] of CharacterStringIntrinsic reporting
Event_Message_Texts_ConfigBACnetARRAY[3] of CharacterStringIntrinsic reporting
ReliabilityBACnetReliabilityFault detection
Reliability_Evaluation_InhibitBOOLEANFault detection
Audit_LevelBACnetAuditLevelAuditing
Auditable_OperationsBACnetAuditOperationFlagsAuditing
TagsBACnetARRAY[N] of BACnetNameValueTagging and profile
Profile_LocationCharacterStringTagging and profile
Profile_NameCharacterStringTagging and profile
  • Audit Reporter: originates the audit notifications an Audit Log collects and stores.
  • Trend Log: the general property-history logger, where the Audit Log records auditable operations instead.
  • Event Log: records event notifications, another retrievable log buffer.

What Chipkin Provides

The Audit Log object is modeled in the CAS BACnet Stack with its buffer and retrieval properties, and the audit service dispatch is implemented; populated-record audit capture is a roadmap item. Talk to us about modeling your device’s points.