mail@mabbaz.com Abu Dhabi, UAE

BACnet · Commissioning · Acceptance

Building a BACnet Integration Acceptance Test Checklist

Most BACnet integrations are accepted on a demonstration: somebody opens a screen, values appear, everyone agrees it works. That proves the happy path on a quiet afternoon. This is the test set that proves the things you will actually depend on, including the ones that only fail months later.

Muhammad Abbas October 27, 2026 ~13 min read

Acceptance is the last moment you have leverage. After it, every defect becomes a support request against a system somebody has already been paid for, and the ones that matter most, recovery after an outage, behaviour on restart, whether anything is quietly writing to the building, are precisely the ones a demonstration does not cover. The remedy is a test list agreed before the work starts, so that it shapes the build rather than judging it afterwards.

The message up front: a BACnet integration acceptance test has to cover five things a demonstration never does. That nothing is written to the building unless you intended it. That data survives an outage rather than leaving a hole. That restarts at either end recover without intervention. That the metadata, units, identifiers and mapping, is correct rather than merely present. And that the thing fails loudly when it fails. Agree the list at tender stage, attach it to a payment milestone, and require recorded evidence rather than a tick.

1. Before testing: what must already exist

Testing against undocumented systems produces opinions rather than results. Four documents first:

  • The protocol implementation conformance statement for every device type, which is the manufacturer's declaration of what the device supports. It tells you which tests are even applicable.
  • The completed points map, with structural identifiers, units, roles and collection mechanism per point, as set out in BACnet objects, device instances and addressing.
  • The network topology: subnets, routers, trunks, device counts and which broadcast management device serves which subnet.
  • The intended read and write scope, stated explicitly. An integration that is supposed to be read-only should say so in writing before anyone tests whether it is.

2. Prove it is read-only, if it is supposed to be

The most important test and the one almost never performed, because nobody imagines the integration would write anything.

  • Inspect the priority array on a sample of commandable objects before the integration is connected, and again after it has been running. Any new entry is a write you did not expect. The mechanism is explained in the object model article, and an unintended write at a high priority will make the building ignore its own schedules indefinitely.
  • Confirm no objects were put out of service by the integration or during its commissioning. A forgotten out-of-service object reports a simulated value forever.
  • Where writes are intended, confirm the priority level matches what was agreed, that it is documented per point, and that a release is demonstrated: write, observe the plant respond, release, observe control return to the building's own logic.
  • Check the credentials and access the integration uses are scoped to what it needs, which is the subject of securing read-only BACnet data access.
Take a before and after snapshot of the priority arrays

Record the priority array of every commandable object in scope before the integration is connected, and again at acceptance. Diff the two. Anything that changed is something the integration or its commissioning did, intended or not. This is a few minutes of work with a discovery tool, it is the only reliable way to prove a read-only claim, and it produces the one piece of evidence that settles the question years later when somebody asks why a damper has been ignoring its schedule since the analytics project.

3. Data integrity tests

Test Method What it catches
Value fidelityCompare a sample of values at the operator front end against the same values in the destination system, at the same momentScaling errors, wrong object mapped, stale paths
UnitsConfirm the units recorded match those the object reports, per pointAssumed units. The classic is pressure in the wrong magnitude
IdentityConfirm the map keys on structural identifiers, not namesA map that will break at the first commissioning rename
TimestampsCompare device time against the reference across all devices; confirm event and ingestion times are stored separatelyClock drift, per timestamp and clock synchronisation
Status flagsConfirm status, reliability and out-of-service are captured, not discardedA platform that cannot distinguish a good reading from a faulted one
Sampling intervalMeasure actual arrival intervals against the configured rateA collector that cannot keep up, per polling schedules
CoverageCount points configured against points actually arrivingSilent omissions, which are common and never volunteered

4. Resilience tests, which are the point of the exercise

Each of these takes minutes and each proves something no demonstration shows.

  • Collector restart. Stop it, wait, start it. Confirm subscriptions re-establish, current values are read, and no duplicate rows appear. Detail in COV subscription recovery.
  • Network interruption. Disconnect for a defined period, reconnect. Confirm the gap is detected and reported, and that buffered data arrives with device timestamps intact rather than being stamped on arrival. See store-and-forward buffering.
  • Controller restart. Confirm the integration notices and recovers that device without anyone intervening.
  • Out-of-order arrival. Confirm the destination accepts readings that arrive after newer ones, rather than rejecting or misordering them.
  • Duplicate delivery. Force a re-read of buffered data and confirm no duplicates land.
  • Loss detection. Leave one device disconnected and confirm something reports it within a defined period, rather than the interface continuing to display its last value. This is the test that fails most often.

5. Load and scale

  • Read success rate per trunk over a representative period, including a busy one. Intermittent failures concentrated on one trunk indicate a load problem rather than device faults.
  • Headroom check. Confirm the configured regime leaves capacity for growth, with the figure stated rather than asserted.
  • Subscription count per device against its documented limit, including subscriptions held by other clients.
  • Behaviour under sustained load, over at least a full daily cycle including any overnight batch activity, rather than a ten-minute sample.

6. What the evidence should look like

A signed checklist with ticks is not evidence. What to require:

  • Recorded values, not confirmations. For comparison tests, the two values and the timestamp. For timing tests, the measured interval.
  • Before and after states for anything that could have changed the building, particularly the priority array snapshots.
  • The test date, the person, and the system versions. Evidence without a version is evidence about an unknown system.
  • Exceptions listed explicitly, with what was not tested and why. An acceptance pack with no exceptions is usually an acceptance pack where the hard tests were skipped.
  • The documents from section 1 as issued, so that what was tested and what was delivered can be compared later.

Attach the pack to a payment milestone or a retention release. Documentation without a commercial hook arrives late, incomplete, or not at all, which is the same lesson as in BMS service contracts.

7. The tests worth repeating later

Acceptance proves a moment. A few of these are worth re-running periodically, because the things they catch develop over time:

  • Priority array inspection, annually. Writes accumulate from projects nobody told you about.
  • Clock offset across devices, annually and after any network change.
  • Coverage count, quarterly. Points stop arriving quietly.
  • Loss detection, after any change to monitoring or networking, because this is the capability most easily broken by an unrelated change.
  • Read success rate, continuously, as described in BMS ingestion monitoring.
Scope and limits

This list covers the integration and data layer, which is my own domain. It is not a controls commissioning plan: verifying that the plant and its sequences work correctly is a separate and larger exercise belonging to a commissioning authority, and the distinction between loop checks, functional tests and sequence verification is set out in the Guideline 36 article. No pass thresholds, tolerances or durations are given here because they depend on your systems and what the data is for; set them with the supplier before work starts, which is also the point at which they are negotiable. Nothing here should be read as establishing compliance with any standard or contractual obligation.

The idea to walk away with

A demonstration proves that data can flow. An acceptance test proves that it keeps flowing, that it means what you think it means, that nothing is quietly writing to the building, and that you will be told when it stops. Those are different claims, and only the second set is worth paying for.

Agree the list before the work starts. Its real value is not in catching defects at the end; it is in telling the integrator at the beginning which behaviours will be checked, which changes how the thing gets built.

Final thoughts

If you have an integration already in service that was never tested this way, the two tests worth running retrospectively are the priority array inspection and the loss detection check. Between them they catch the two failure modes with the longest tail: a write nobody knows about, and a monitoring system that cannot report its own blindness.

Both take under an hour on a sample, and both occasionally find something that has been quietly true for years.

Disclosure

Alongside advisory work I also build a CMMS and CAFM platform, so I have a commercial interest in this category. Nothing above is a recommendation for it, and no vendor named here has paid for inclusion or had any editorial input. Weigh the analysis accordingly.

Accepting a BACnet integration?

Independent help defining the acceptance test set before tender, witnessing the resilience tests, and reviewing the evidence pack against what was specified. 22+ years across CMMS, CAFM, EAM and ERP implementations. No controls vendor margins.

Book a conversation

Related reading: BACnet objects and addressing, COV subscription recovery, Securing read-only BACnet access, Timestamps and clock synchronisation, Store-and-forward buffering, BMS service contracts.

Muhammad Abbas

CMMS / CAFM Manager & Independent Advisor · 22+ years across enterprise CMMS, EAM, CAFM and ERP implementations in utilities, oil and gas, manufacturing, government and facility operations.

Work with me
MAbbaz.com
© MAbbaz.com