This Service Set defines Services to add and delete AddressSpace Nodes and References between them. All added Nodes continue to exist in the AddressSpace even if the Client that created them disconnects from the Server.
Calls to NodeManagement Services may result in changes to the AddressSpace in addition to the requested change. The actual behaviour is Server specific.
This Service is used to add one or more Nodes into the AddressSpace hierarchy. Using this Service, each Node is added as the TargetNode of a HierarchicalReference to ensure that the AddressSpace is fully connected and that the Node is added as a child within the AddressSpace hierarchy (see OPC 10000-3).
When a Server creates an instance of a TypeDefinitionNode it shall create the same hierarchy of Nodes beneath the new Object or Variable depending on the ModellingRule of each InstanceDeclaration. All Nodes with a ModellingRule of Mandatory shall be created or an existing Node shall be referenced that conforms to the InstanceDeclaration. The creation of Nodes with other ModellingRules is Server specific.
Table 22 defines the parameters for the Service.
Table 22 – AddNodes Service Parameters
Name |
Type |
Description |
Request |
|
|
requestHeader |
RequestHeader |
Common request parameters (see 7.33 for RequestHeader definition). |
nodesToAdd [] |
AddNodesItem |
List of Nodes to add. All Nodes are added as a Reference to an existing Node using a hierarchical ReferenceType. This structure is defined in-line with the following indented items. |
parentNodeId |
Expanded NodeId |
ExpandedNodeId of the parent Node for the Reference. The ExpandedNodeId type is defined in 7.16. |
referenceTypeId |
NodeId |
NodeId of the hierarchical ReferenceType to use for the Reference from the parent Node to the new Node. |
requestedNewNodeId |
Expanded NodeId |
Client requested expanded NodeId of the Node to add. The serverIndex in the expanded NodeId shall be 0. If the Server cannot use this NodeId, it rejects this Node and returns the appropriate error code. If the Client does not want to request a NodeId, then it sets the value of this parameter to the null expanded NodeId. If the Node to add is a ReferenceType Node, its NodeId should be a numeric id. See OPC 10000-3 for a description of ReferenceType NodeIds. |
browseName |
QualifiedName |
The browse name of the Node to add. |
nodeClass |
NodeClass |
|
nodeAttributes |
Extensible Parameter NodeAttributes |
The Attributes that are specific to the NodeClass. The NodeAttributes parameter type is an extensible parameter type specified in 7.24. A Client is allowed to omit values for some or all Attributes. If an Attribute value is null, the Server shall use the default values from the TypeDefinitionNode. If a TypeDefinitionNode was not provided the Server shall choose a suitable default value. The Server may still add an optional Attribute to the Node with an appropriate default value even if the Client does not specify a value. |
typeDefinition |
Expanded NodeId |
NodeId of the TypeDefinitionNode for the Node to add. This parameter shall be null for all NodeClasses other than Object and Variable in which case it shall be provided. |
|
|
|
Response |
|
|
responseHeader |
Response Header |
Common response parameters (see 7.34 for ResponseHeader definition). |
results [] |
AddNodesResult |
List of results for the Nodes to add. The size and order of the list matches the size and order of the nodesToAdd request parameter. This structure is defined in-line with the following indented items. |
statusCode |
StatusCode |
StatusCode for the Node to add (see 7.39 for StatusCode definition). |
addedNodeId |
NodeId |
Server assigned NodeId of the added Node. Null NodeId if the operation failed. |
diagnosticInfos [] |
DiagnosticInfo |
List of diagnostic information for the Nodes to add (see 7.12 for DiagnosticInfo definition). The size and order of the list matches the size and order of the nodesToAdd request parameter. This list is empty if diagnostics information was not requested in the request header or if no diagnostic information was encountered in processing of the request. |
Table 23 defines the Service results specific to this Service. Common StatusCodes are defined in Table 182.
Table 23 – AddNodes Service Result Codes
Symbolic Id |
Description |
Bad_NothingToDo |
See Table 182 for the description of this result code. |
Bad_TooManyOperations |
See Table 182 for the description of this result code. |
Table 24 defines values for the operation level statusCode parameter that are specific to this Service. Common StatusCodes are defined in Table 183.
Table 24 – AddNodes Operation Level Result Codes
Symbolic Id |
Description |
Bad_ParentNodeIdInvalid |
The parent node id does not to refer to a valid node. |
Bad_ReferenceTypeIdInvalid |
See Table 183 for the description of this result code. |
Bad_ReferenceNotAllowed |
The reference could not be created because it violates constraints imposed by the data model. |
Bad_NodeIdRejected |
The requested node id was rejected either because it was invalid or because the Server does not allow node ids to be specified by the Client. |
Bad_NodeIdExists |
The requested node id is already used by another node. |
Bad_NodeClassInvalid |
See Table 183 for the description of this result code. |
Bad_BrowseNameInvalid |
See Table 183 for the description of this result code. |
Bad_BrowseNameDuplicated |
The browse name is not unique among nodes that share the same relationship with the parent. |
Bad_NodeAttributesInvalid |
The node Attributes are not valid for the node class. |
Bad_TypeDefinitionInvalid |
See Table 183 for the description of this result code. |
Bad_UserAccessDenied |
See Table 182 for the description of this result code. |
This Service is used to add one or more References to one or more Nodes. The NodeClass is an input parameter that is used to validate that the Reference to be added matches the NodeClass of the TargetNode. This parameter is not validated if the Reference refers to a TargetNode in a remote Server.
In certain cases, adding new References to the AddressSpace shall require that the Server add new Server ids to the Server’s ServerArray Variable. For this reason, remote Servers are identified by their URI and not by their ServerArray index. This allows the Server to add the remote Server URIs to its ServerArray.
Table 25 defines the parameters for the Service.
Table 25 – AddReferences Service Parameters
Name |
Type |
Description |
Request |
|
|
requestHeader |
Request Header |
Common request parameters (see 7.33 for RequestHeader definition). |
referencesToAdd [] |
AddReferences Item |
List of Reference instances to add to the SourceNode. The targetNodeClass of each Reference in the list shall match the NodeClass of the TargetNode. This structure is defined in-line with the following indented items. |
sourceNodeId |
NodeId |
NodeId of the Node to which the Reference is to be added. The source Node shall always exist in the Server to add the Reference. The isForward parameter can be set to FALSE if the target Node is on the local Server and the source Node on the remote Server. |
referenceTypeId |
NodeId |
NodeId of the ReferenceType that defines the Reference. |
isForward |
Boolean |
If the value is TRUE, the Server creates a forward Reference. If the value is FALSE, the Server creates an inverse Reference. |
targetServerUri |
String |
URI of the remote Server. If this parameter is not null or empty, it overrides the serverIndex in the targetNodeId. |
targetNodeId |
Expanded NodeId |
Expanded NodeId of the TargetNode. The ExpandedNodeId type is defined in 7.16. |
targetNodeClass |
NodeClass |
NodeClass of the TargetNode. The Client shall specify this since the TargetNode might not be accessible directly by the Server. |
|
|
|
Response |
|
|
responseHeader |
Response Header |
Common response parameters (see 7.34 for ResponseHeader definition). |
results [] |
StatusCode |
List of StatusCodes for the References to add (see 7.39 for StatusCode definition). The size and order of the list matches the size and order of the referencesToAdd request parameter. |
diagnosticInfos [] |
Diagnostic Info |
List of diagnostic information for the References to add (see 7.12 for DiagnosticInfo definition). The size and order of the list matches the size and order of the referencesToAdd request parameter. This list is empty if diagnostics information was not requested in the request header or if no diagnostic information was encountered in processing of the request. |
Table 26 defines the Service results specific to this Service. Common StatusCodes are defined in Table 182.
Table 26 – AddReferences Service Result Codes
Symbolic Id |
Description |
Bad_NothingToDo |
See Table 182 for the description of this result code. |
Bad_TooManyOperations |
See Table 182 for the description of this result code. |
Table 27 defines values for the results parameter that are specific to this Service. Common StatusCodes are defined in Table 183.
Table 27 – AddReferences Operation Level Result Codes
Symbolic Id |
Description |
Bad_SourceNodeIdInvalid |
See Table 183 for the description of this result code. |
Bad_ReferenceTypeIdInvalid |
See Table 183 for the description of this result code. |
Bad_ServerUriInvalid |
See Table 182 for the description of this result code. |
Bad_TargetNodeIdInvalid |
See Table 183 for the description of this result code. |
Bad_NodeClassInvalid |
See Table 183 for the description of this result code. |
Bad_ReferenceNotAllowed |
The reference could not be created because it violates constraints imposed by the data model on this Server. |
Bad_ReferenceLocalOnly |
The reference type is not valid for a reference to a remote Server. |
Bad_UserAccessDenied |
See Table 182 for the description of this result code. |
Bad_DuplicateReferenceNotAllowed |
The reference type between the nodes is already defined. |
Bad_InvalidSelfReference |
The Server does not allow this type of self reference on this node. |
This Service is used to delete one or more Nodes from the AddressSpace.
When any of the Nodes deleted by an invocation of this Service is the TargetNode of a Reference, then those References are left unresolved based on the deleteTargetReferences parameter.
Servers may delete additional Nodes and References like child Nodes that exist based on a TypeDefinition. The behaviour is Server specific.
When any of the Nodes deleted by an invocation of this Service is being monitored, then a Notification containing the status code Bad_NodeIdUnknown is sent to the monitoring Client indicating that the Node has been deleted.
Table 28 defines the parameters for the Service.
Table 28 – DeleteNodes Service Parameters
Name |
Type |
Description |
Request |
|
|
requestHeader |
Request Header |
Common request parameters (see 7.33 for RequestHeader definition). |
nodesToDelete [] |
DeleteNodes Item |
List of Nodes to delete. This structure is defined in-line with the following indented items. |
nodeId |
NodeId |
|
deleteTargetReferences |
Boolean |
A Boolean parameter with the following values: TRUEdelete References in TargetNodes that Reference the Node to delete. FALSEdelete only the References for which the Node to delete is the source. The Server cannot guarantee that it is able to delete all References from TargetNodes if this parameter is TRUE. |
|
|
|
Response |
|
|
responseHeader |
Response Header |
Common response parameters (see 7.34 for ResponseHeader definition). |
results [] |
StatusCode |
List of StatusCodes for the Nodes to delete (see 7.39 for StatusCode definition). The size and order of the list matches the size and order of the list of the nodesToDelete request parameter. |
diagnosticInfos [] |
Diagnostic Info |
List of diagnostic information for the Nodes to delete (see 7.12 for DiagnosticInfo definition). The size and order of the list matches the size and order of the nodesToDelete request parameter. This list is empty if diagnostics information was not requested in the request header or if no diagnostic information was encountered in processing of the request. |
Table 29 defines the Service results specific to this Service. Common StatusCodes are defined in Table 182.
Table 29 – DeleteNodes Service Result Codes
Symbolic Id |
Description |
Bad_NothingToDo |
See Table 182 for the description of this result code. |
Bad_TooManyOperations |
See Table 182 for the description of this result code. |
Table 30 defines values for the results parameter that are specific to this Service. Common StatusCodes are defined in Table 183.
Table 30 – DeleteNodes Operation Level Result Codes
Symbolic Id |
Description |
Bad_NodeIdInvalid |
See Table 183 for the description of this result code. |
Bad_NodeIdUnknown |
See Table 183 for the description of this result code. |
Bad_UserAccessDenied |
See Table 182 for the description of this result code. |
Bad_NoDeleteRights |
See Table 183 for the description of this result code. |
Uncertain_ReferenceNotDeleted |
The Server was not able to delete all target references. |
This Service is used to delete one or more References of a Node.
When any of the References deleted by an invocation of this Service are contained in a View, then the ViewVersion Property is updated if this Property is supported.
Table 31 defines the parameters for the Service.
Table 31 – DeleteReferences Service Parameters
Name |
Type |
Description |
Request |
|
|
requestHeader |
RequestHeader |
Common request parameters (see 7.33 for RequestHeader definition). |
referencesToDelete [] |
DeleteReferences Item |
List of References to delete. This structure is defined in-line with the following indented items. |
sourceNodeId |
NodeId |
|
referenceTypeId |
NodeId |
NodeId of the ReferenceType that defines the Reference to delete. |
isForward |
Boolean |
If the value is TRUE, the Server deletes a forward Reference. If the value is FALSE, the Server deletes an inverse Reference. |
targetNodeId |
ExpandedNodeId |
NodeId of the TargetNode of the Reference. If the Server index indicates that the TargetNode is a remote Node, then the nodeId shall contain the absolute namespace URI. If the TargetNode is a local Node the nodeId shall contain the namespace index. |
deleteBidirectional |
Boolean |
A Boolean parameter with the following values: TRUEdelete the specified Reference and the opposite Reference from the TargetNode. If the TargetNode is located in a remote Server, the Server is permitted to delete the specified Reference only. FALSEdelete only the specified Reference. |
|
|
|
Response |
|
|
responseHeader |
ResponseHeader |
Common response parameters (see 7.34 for ResponseHeader definition). |
results [] |
StatusCode |
List of StatusCodes for the References to delete (see 7.39 for StatusCode definition). The size and order of the list matches the size and order of the referencesToDelete request parameter. |
diagnosticInfos [] |
DiagnosticInfo |
List of diagnostic information for the References to delete (see 7.12 for DiagnosticInfo definition). The size and order of the list matches the size and order of the referencesToDelete request parameter. This list is empty if diagnostics information was not requested in the request header or if no diagnostic information was encountered in processing of the request. |
Table 32 defines the Service results specific to this Service. Common StatusCodes are defined in Table 182.
Table 32 – DeleteReferences Service Result Codes
Symbolic Id |
Description |
Bad_NothingToDo |
See Table 182 for the description of this result code. |
Bad_TooManyOperations |
See Table 182 for the description of this result code. |
Table 33 defines values for the results parameter that are specific to this Service. Common StatusCodes are defined in Table 183.
Table 33 – DeleteReferences Operation Level Result Codes
Symbolic Id |
Description |
Bad_SourceNodeIdInvalid |
See Table 183 for the description of this result code. |
Bad_ReferenceTypeIdInvalid |
See Table 183 for the description of this result code. |
Bad_ServerIndexInvalid |
The Server index is not valid. |
Bad_TargetNodeIdInvalid |
See Table 183 for the description of this result code. |
Bad_UserAccessDenied |
See Table 182 for the description of this result code. |
Bad_NoDeleteRights |
See Table 183 for the description of this result code. |