Method
In OPC UA, a Method is the NodeClass representing a callable server-side procedure. It is invoked with the Call service against an object NodeId plus a method NodeId, takes input arguments and returns output arguments described by the InputArguments and OutputArguments properties, and reports success per argument as well as overall.
How a Method is described
A Method node carries Executable and UserExecutable flags, the second reflecting the calling user's Role permissions. Its signature lives in two Properties: InputArguments and OutputArguments, each an array of the Argument structure, which gives a name, DataType, ValueRank, ArrayDimensions and a LocalizedText description per argument. A client can therefore build a call dialog with no prior knowledge, which is exactly what UaExpert does.
Calling on an object, not on the method alone
The CallMethodRequest names both the ObjectId that owns the method and the MethodId. The same MethodId reached through two different objects can be legal, and a server that gets a mismatched pair answers BadMethodInvalid. Instance methods are reached by HasComponent from their owning Object; methods declared on an ObjectType are the declarations, and are usually not callable themselves.
Results and error reporting
The response carries an overall StatusCode, an array of InputArgumentResults with one StatusCode per argument, and the output arguments if the call succeeded. Argument-level errors report BadTypeMismatch or BadOutOfRange against the specific argument, which is far more useful for diagnosis than the overall code. Methods are synchronous by contract; a long-running operation should be modelled as a Program per Part 10, or return GoodCompletesAsynchronously and report progress through a state machine.
Example
Calling a method and the argument-level result structure
Method node
ns=4;s=Mixer_01.SetRecipe BrowseName 4:SetRecipe
Executable true
UserExecutable false <- current user may not call it
InputArguments (Property, Argument[])
[0] RecipeId UInt32 "Recipe number 1..99"
[1] Comment String "Operator note, optional"
OutputArguments (Property, Argument[])
[0] Accepted Boolean
Call request
ObjectId = ns=4;s=Mixer_01
MethodId = ns=4;s=Mixer_01.SetRecipe
InputArguments = [ UInt32 7, String "night shift" ]
Response
StatusCode Bad_UserAccessDenied
InputArgumentResults [ Good, Good ]
Defined in: Part 3 - Address Space Model, Method NodeClass; Part 4 - Services for the Call service and the Argument structure.
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.