Publishers and Subscribers may be configurable through vendor-specific engineering tools or with the PubSubConfiguration Object and parameters described in this document. This allows a standard OPC UA Client based configuration tool to configure an OPC UA Server that is a Publisher and/or Subscriber.
The latest configuration shall be persisted by the OPC UA Server and shall be available after a restart of the OPC UA Server. PubSub components are not persisted, if the component has the optional NotPersisted property set with a value of true. The PubSub configuration properties are defined in 6.2.2.
Add, modify and remove operations for all PubSub configuration elements including DataSets and security key exchange configuration can be executed in one atomic write operation through the PubSubConfiguration Object. It allows also read access to the complete PubSub configuration. Both read and write access are handled through FileType functionality. The related functionality is defined in 9.1.3.7.
Modifications of the PubSub configuration can happen through different mechanisms like FileType access or sequences of Method calls defined in other information models. The PubSub application should ensure that all mechanisms coordinate access to the configuration. The coordination should not immediately fail parallel access. It should delay access in the range of timeout settings for Method calls.
The online PubSub configuration was updated in OPC UA 1.05 to the atomic update capability through the PubSubConfiguration Object. This option replaced the deprecated individual PubSub configuration Methods.
Configuration changes with the deprecated Methods must be applied in a batch to avoid inconsistencies between different configuration parameters. The mechanism to apply changes in a batch operation is to allow changes through parameter write only when the related Object has the Status Disabled and to apply the new configuration settings when the Status is changed to Operational. Therefore write operations to configuration parameters should be rejected with Bad_InvalidState if the Status is not Disabled.