Glossary · Alarms

Acknowledge / Confirm

Acknowledge and Confirm are the two Methods on AcknowledgeableConditionType that move an alarm through its operator-response lifecycle: Acknowledge records that a human has seen it, Confirm records that the underlying cause has been dealt with. Both take an EventId and a comment, and Confirm support is optional.

Two independent state machines

ActiveState tracks the process: the limit is exceeded or it is not, and only the machine changes it. AckedState and ConfirmedState track the human: they change only when a client calls a method. The four combinations are all meaningful, and the two that matter operationally are active and unacknowledged, which needs an operator now, and inactive but unacknowledged, which is a fault that came and went and still needs signing off.

The EventId argument is not optional detail

Both methods take the EventId of the specific state-change event being acknowledged, not the ConditionId. That is deliberate: it prevents an operator from acknowledging a state they never saw, because a newer event on the same condition will make the stale EventId invalid. Cache the EventId of the notification you displayed and pass exactly that one back.

Confirm is optional, Acknowledge is not

AcknowledgeableConditionType makes Acknowledge available on any acknowledgeable condition, while Confirm and ConfirmedState are optional and many servers omit them. Browse for the Confirm method before you build a two-stage workflow in your HMI, and fall back to acknowledge-only rather than showing a button that returns an error. Comment and AddComment are separate from both, and a comment does not acknowledge anything.

Retain, and when an alarm leaves the list

The Retain flag is what keeps a condition on the alarm list, and it typically stays true while the condition is active or unacknowledged. An alarm therefore does not disappear when the process recovers; it disappears when the process has recovered and the operator has acknowledged, and confirmed where confirmation is modelled. Audit events record who acknowledged what, if auditing is enabled on the server.

Example

The four states an operator actually sees, and the method call

ActiveState  AckedState        meaning
-----------  ----------------  --------------------------------------------
Active       Unacknowledged    live alarm, operator action required
Active       Acknowledged      seen, still faulted
Inactive     Unacknowledged    transient fault, still needs sign-off
Inactive     Acknowledged      done - server normally clears Retain

Call:
  ObjectId  = the condition instance NodeId
  MethodId  = Acknowledge          (on AcknowledgeableConditionType)
  InputArgs = [ EventId    ByteString   0x9F2C...   <- from the event you showed
                Comment    LocalizedText "shift 2: chip jam cleared" ]

Stale EventId, superseded by a newer state change -> BadInvalidState
Confirm method absent on this server              -> browse first, hide the button
The mistake people make: Passing the ConditionId instead of the EventId, or passing an EventId that has since been superseded by a newer state change. Both come back rejected, and the usual symptom is an acknowledge button that works on quiet alarms and fails on flapping ones. Always send the EventId of the event you displayed.

Defined in: Part 9 - Alarms and Conditions.

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