Documentation
Supported features for OpenADR 2.0a BOG and OpenADR 3.0 BOG
Overview
The OpenADR VEN provides native Niagara 4 integration with utility demand response programs through two BOG (Building Object Galleon) modules: OpenADR 2.0a BOG and OpenADR 3.0 BOG.
Both modules are pull-based Virtual End Nodes (VENs) that connect to a utility's Virtual Top Node (VTN) to receive Demand Response (DR) events and price signals. They are deployed as .bog files in the Niagara 4 Workbench.
Choose the version that matches your utility's OpenADR standard — 2.0a for legacy systems using XML/SIMPLE profile, or 3.0 for modern REST-based systems using OAuth 2.0 and JSON.
OpenADR 2.0a BOG
2.0aOpenADR 2.0a Simple profile VEN for Niagara 4.10+
General
| Feature | Details |
|---|---|
| OpenADR Standard | 2.0a — Simple profile |
| Architecture | Pull-based (no registration phase) |
| Distribution Format | .bog file for Niagara 4 |
| Platform | Niagara 4.10+ |
Transport & Authentication
| Feature | Details |
|---|---|
| Protocol | HTTP POST (no XMPP) |
| Authentication | NONE, BASIC |
| Content Type | XML (manual parsing, no JAXB) |
| Endpoint | /OpenADR2/Simple/EiEvent |
Event Handling
| Feature | Details |
|---|---|
| Polling | oadrRequestEvent → oadrDistributeEvent → oadrCreatedEvent |
| Event State Machine | PENDING → ACTIVE → COMPLETED / CANCELLED |
| Multi-Event Processing | Handles multiple events in a single response |
| Individual Response Codes | Per-event response codes (200, 450–463) |
| Modification Number Validation | Monotonic ordering check (E1_0392) |
| State Transition Validation | Prevents illogical transitions (E1_0384) |
| Inconsistent Event Detection | Detects disappeared-and-reappeared events (E1_0370) |
Targeting & Filtering
| Feature | Details |
|---|---|
| venID Targeting | ✅ |
| resourceID Targeting | ✅ |
| groupID Targeting | ✅ |
| partyID Targeting | ✅ |
| Market Context Filtering | Optional matching (E1_0285) |
| VTN ID Validation | Optional, returns error 452 on mismatch (E1_0390) |
Timing & Randomization
| Feature | Details |
|---|---|
| Randomization Offsets | x-oadrStartAfter / x-oadrStopAfter |
| Adjacent Event Detection | Back-to-back event awareness (E1_0292) |
Opt-Out
| Feature | Details |
|---|---|
| Async Opt-Out | Supports optOut after initial optIn (E1_0280) |
Licensing & Security
| Feature | Details |
|---|---|
| License Type | RSA-SHA256 signed license per Host ID |
| Trial Period | 2 hours per station restart (no license required) |
| License Duration | Perpetual |
OpenADR 3.0 BOG
3.0OpenADR 3.0 VEN for Niagara 4.13+
General
| Feature | Details |
|---|---|
| OpenADR Standard | 3.0 (IETF RFC) |
| Architecture | Pull-based (REST/JSON) |
| Distribution Format | .bog file for Niagara 4 |
| Platform | Niagara 4.13+ |
Transport & Authentication
| Feature | Details |
|---|---|
| Protocol | REST/JSON HTTP (GET/POST) |
| Authentication | OAuth 2.0 client_credentials grant |
| Token Caching | In-memory token cache with pre-emptive refresh (30s skew) |
| 401 Retry | Retries once on 401 before failing |
| Public VTN Mode | No-auth mode when credentials are blank |
Program & Event Resolution
| Feature | Details |
|---|---|
| Program Discovery | Resolves program by name (or takes first available) |
| Event Fetching | Paged GET with skip/limit (max 50 per page) |
| Target Filtering | Server-side ?targets= CSV filter |
| Event Selection | Selects highest-priority active event |
Interval Timing
| Feature | Details |
|---|---|
| dtstart / duration | ISO-8601 format |
| Contiguous Chaining | Back-to-back intervals when no explicit start |
| Infinity Sentinel | P9999Y duration support |
| "Now" Sentinel | Real-time interval resolution |
Randomization
| Feature | Details |
|---|---|
| randomizeStart | Uniform random offset within [-max, +max] window |
Signal Types
| Feature | Details |
|---|---|
| Primary Numeric | Main numeric payload value |
| Alert Payload | String-based alert signals |
| String Payload | Arbitrary string payloads |
| Sub-Interval Serial Types | PRICE, EXPORT_PRICE, GHG multi-value splitting |
| Payload Summary | TYPE=value;TYPE2=value2 format for all payloads |
Reporting
| Feature | Details |
|---|---|
| 3.1.0 Reports | eventID + clientName + resource payloads |
Error Handling
| Feature | Details |
|---|---|
| OAuth Errors | RFC 6749 error response parsing |
| API Errors | Zalando problem+json format parsing |
Licensing & Security
| Feature | Details |
|---|---|
| License Type | RSA-SHA256 signed license per Host ID |
| License Duration | Perpetual |
Feature Comparison
| Feature | 2.0a BOG | 3.0 BOG |
|---|---|---|
| Standard | 2.0a Simple | 3.0 |
| Transport | HTTP POST (XML) | REST (JSON) |
| Authentication | NONE / BASIC | OAuth 2.0 |
| Architecture | Pull, no registration | Pull, OAuth2 |
| Event Format | XML (manual parse) | JSON (manual parse) |
| Event Polling | oadrRequestEvent | GET with pagination |
| Event State Machine | PENDING→ACTIVE→COMPLETED | Interval-based timing |
| Multi-Event | ✅ | ✅ (priority-based) |
| Target Filtering | venID/resourceID/groupID/partyID | Server-side ?targets= CSV |
| Market Context | ✅ | N/A |
| Randomization | Start/stop offsets | Uniform randomizeStart |
| Opt-Out | Async opt-out | N/A (no opt for 3.0 pull) |
| Reporting | ❌ | ✅ (3.1.0 reports) |
| Signal Types | Simple only | Numeric, alert, string, sub-intervals |
| Error Format | OpenADR response codes | problem+json |
| Min Platform | Niagara 4.10+ | Niagara 4.13+ |
System Requirements
OpenADR 2.0a BOG
- Niagara Version: 4.10 or later
- Java: Bundled with Niagara (JVM 11 compatible)
- Memory: Minimal — runs within Niagara process
- Network: Outbound HTTPS to VTN endpoint
OpenADR 3.0 BOG
- Niagara Version: 4.13 or later
- Java: Bundled with Niagara (JVM 11 compatible)
- Memory: Minimal — runs within Niagara process
- Network: Outbound HTTPS to VTN OAuth2 and API endpoints
Licensing
Each VEN module requires a perpetual license bound to a Host ID. Licenses are RSA-SHA256 signed and validated at runtime by the VEN module.
Free Trial
The OpenADR 2.0a BOG includes a 2-hour demo mode per station restart that requires no license — download and test immediately. The timer resets every time the Niagara station is restarted.
Purchasing
Licenses are purchased per Host ID. Volume discounts are available for enterprise deployments. After purchase, credits are added to your account which can be redeemed for license keys at any time.
Sign up to get started with a free trial.