Glossary · Subscriptions

MonitoredItem

A MonitoredItem is the server-side object that watches one attribute of one node - usually the Value - samples it at its own sampling interval, applies its filter, and puts the surviving notifications in its queue. The subscription that owns it drains those queues on each publishing cycle. Created with CreateMonitoredItems.

What you specify when you create one

The target is a NodeId plus an AttributeId, optionally narrowed by IndexRange and DataEncoding. The behaviour is set by SamplingInterval, Filter (DataChangeFilter, EventFilter or AggregateFilter), QueueSize, DiscardOldest and MonitoringMode. You also supply a ClientHandle, an opaque number the server echoes in every notification - that handle, not the NodeId, is how your callback identifies which item reported.

Read the revised values back

The response returns RevisedSamplingInterval and RevisedQueueSize alongside a per-item StatusCode. Servers clamp both freely: a request for 50 ms on a node whose MinimumSamplingInterval attribute is 250 ms comes back as 250, and a queue of 100 may come back as 10. A client that logs the requested values and never reads the revised ones will report a data rate it is not actually receiving.

Per-item results, not per-call results

CreateMonitoredItems returns Good for the call while individual items fail. An item on a deleted node returns BadNodeIdUnknown in its own result, an unsupported filter returns BadMonitoredItemFilterUnsupported, and exceeding MaxMonitoredItemsPerSubscription returns BadTooManyMonitoredItems - all inside an otherwise successful response. Always iterate the results array.

Example

Create request and what actually came back

CreateMonitoredItems on SubscriptionId 4 (PublishingInterval 1000 ms)
  requested: NodeId ns=3;s="Line3"."Motor"."Speed"  AttributeId Value
             SamplingInterval 50   QueueSize 1   DiscardOldest true
             MonitoringMode Reporting   ClientHandle 17

  response:  StatusCode Good
             RevisedSamplingInterval 250     <- clamped by MinimumSamplingInterval
             RevisedQueueSize 1

Effective result: 4 samples per publishing cycle, queue of 1 -> 3 discarded per cycle,
overflow bit set, StatusCode still reads Good.
The mistake people make: A server always sends the first value as soon as a MonitoredItem is created. Adding ten thousand items at startup therefore produces ten thousand notifications in the first cycles - the startup value storm - which is why collectors offer a skip-first option. Stagger item creation, or expect the burst and size your queues for it.

Defined in: Part 4 - Services, MonitoredItem Service Set (CreateMonitoredItems, ModifyMonitoredItems, SetMonitoringMode, SetTriggering, DeleteMonitoredItems).

Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.

Free download
OPC UA Server Acceptance Test Pack
A 40-check acceptance test you run against a vendor's server before commissioning sign-off. Weighted scoring, three hard gates, and a one-page verdict for the supplier meeting.
Get the free test pack →
Free, no course, no login