# OpcAutomatism Members

> Reference: Defines the behavior of global automatisms implemented in the OPC UA Framework Advanced.

<dl class="api-definition">
<dt>Type</dt>
<dd><a href="./">OpcAutomatism</a></dd>
<dt>Namespace</dt>
<dd><a href="../namespaces/opc.uafx">Opc.UaFx</a></dd>
<dt>Assembly</dt>
<dd>Opc.UaFx.Advanced.dll</dd>
<dt>Package</dt>
<dd>Opc.UaFx.Advanced v2.59.0</dd>
<dt>Also in</dt>
<dd>Opc.UaFx.Client</dd>
</dl>

## Properties

### AlwaysParseStringIdentifiers

<span class="api-meta">static</span>

Gets or sets a value indicating whether a new instance of the [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/), which is created using a [string](https://learn.microsoft.com/dotnet/api/system.string) as the [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#value), have to automatically parse the [string](https://learn.microsoft.com/dotnet/api/system.string) passed to the constructor.

<div class="api-signature" data-lang="csharp">

```csharp
public static bool AlwaysParseStringIdentifiers { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Shared Property AlwaysParseStringIdentifiers As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the [string](https://learn.microsoft.com/dotnet/api/system.string) passed as the [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#value) is to be parsed automatically to determine any namespace information encoded in the [string](https://learn.microsoft.com/dotnet/api/system.string); otherwise the value false. The default value is false (since version 2.9.0.0).

**Remarks**

The logic behind this option is legacy and is obsolete. Beginning with version 2.9.0.0 the old automatism (parsing the node identifier value within the constructor) is only enabled if this property is set to the value true. It is recommended to port user code to take aware that the [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) uses any [string](https://learn.microsoft.com/dotnet/api/system.string) passed as its [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#value) and will not longer automatically inline parse the value for more flexibility. Is such a logic required then the node identifier is to be parsed by user code to have more transparency.

### AssignDefaultNamespaceOfManager

<span class="api-meta">static</span>

Gets or sets a value indicating whether the [OpcNodeManager](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcnodemanager/) base shall ensure that instances created through [CreateNodes](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcnodemanager/members#createnodes) do not reference a namespace equals to the [Default](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/members#default) namespace. In cases there the default namespace is referenced by the [Id](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#id) and the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) property of an object implementing the [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) interface they are automatically adjusted to use the [DefaultNamespace](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcnodemanager/members#defaultnamespace) of their [OpcNodeManager](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcnodemanager/) instead.

<div class="api-signature" data-lang="csharp">

```csharp
public static bool AssignDefaultNamespaceOfManager { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Shared Property AssignDefaultNamespaceOfManager As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the [Namespace](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#namespace) of the [Id](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#id) property and the [Namespace](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/members#namespace) of the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) property of all [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) instances is to be verified and adjusted to use the [DefaultNamespace](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcnodemanager/members#defaultnamespace) of their [OpcNodeManager](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcnodemanager/); otherwise the value false. The default value is true.

**Remarks**

Changing this property to the value false may improve the startup performance, but also requires manual ensurance of valid [OpcNamespace](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/) references in [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) and [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) instances assigned to the properties of an object implementing the [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) interface.

### RaiseModelChangeEvents

<span class="api-meta">static · since v2.50</span>

Gets or sets a value indicating whether model changes (see [OpcModelChangeActions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcmodelchangeactions/) for the change actions supported) are to be tracked and reported for nodes in non-foundation namespaces.

<div class="api-signature" data-lang="csharp">

```csharp
public static bool RaiseModelChangeEvents { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Shared Property RaiseModelChangeEvents As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if model changes are to be tracked and reported according the different [OpcModelChangeActions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcmodelchangeactions/) supported; otherwise the value false (the default value) to disable tracking and reporting of model changes.

**Remarks**

If the value of this property is equals `true` the application will generate [OpcGeneralModelChange](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcgeneralmodelchange/) events for every [OpcModelChangeActions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcmodelchangeactions/) performed in the address space. This behaviour can be controlled in detail per node using the methods [SuspendModelChangeEvents](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#suspendmodelchangeevents) and [ResumeModelChangeEvents](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#resumemodelchangeevents).

### UseAsyncMethodCalls

<span class="api-meta">static · since v2.24</span>

Gets or sets a value indicating whether all [OpcServer](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcserver/) objects shall process every method call asynchronously using one worker thread per method call.

<div class="api-signature" data-lang="csharp">

```csharp
public static bool UseAsyncMethodCalls { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Shared Property UseAsyncMethodCalls As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if every method call is to be processed parallel to each other; otherwise the value false to process method calls in their sequence. The default value is false.

**Remarks**

This behavior can be controlled by each node manager on its own. Just override the [UseAsyncMethodCalls](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcnodemanager/members#useasyncmethodcalls) property and provide the value true in the node managers which shall process method calls in parallel.

Every [OpcMethodNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcmethodnode/) defined with a delegate to a method its return value provides a [Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task) is already processed in parallel.

### UseDynamic

<span class="api-meta">static · since v2.8</span>

Gets or sets a value indicating whether the SDK shall use generic types to define and represent OPC UA custom types. To do so OPC UA client applications will determine the necessary type information from the server directly after a connection to the server has been established. OPC UA server applications will support the dynamic definition of type information during the run-time.

<div class="api-signature" data-lang="csharp">

```csharp
public static bool UseDynamic { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Shared Property UseDynamic As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the SDK shall use generic types constructed from the type information offered by a server and support dynamic type definition in a server; otherwise the value false. The default value is false.

### UseDynamicTypeRegistration

<span class="api-meta">static · since v2.8</span>

Gets or sets a value indicating whether [OpcTypes](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opctypes/) shall automatically registered by the SDK during the first startup of an OPC UA application start up. Such a startup means in case of a client application that a client will register application defined types on its own before connecting to a server. In case of a server application the server will register application defined types on its own during its startup.

<div class="api-signature" data-lang="csharp">

```csharp
public static bool UseDynamicTypeRegistration { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Shared Property UseDynamicTypeRegistration As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if application defined types shall automatically registered by the SDK whenever a client application connects to a server or a server starts up for the first time. The default value is true.

### UseNodeNameAsDefaultDescription

<span class="api-meta">static · since v2.50</span>

Gets or sets a value indicating whether the [OpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/) shall initialize the [Description](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#description) attribute with the [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/members#value) of the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#name) attribute.

<div class="api-signature" data-lang="csharp">

```csharp
public static bool UseNodeNameAsDefaultDescription { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Shared Property UseNodeNameAsDefaultDescription As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true to initialize the [Description](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#description) with the [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/members#value) of the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#name); otherwise the value false. The default value is false.

### UseNodeNameAsDefaultSymbolicName

<span class="api-meta">static · since v2.50</span>

Gets or sets a value indicating whether the [OpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/) shall initialize the [SymbolicName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#symbolicname) property with the [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/members#value) of the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#name) attribute.

<div class="api-signature" data-lang="csharp">

```csharp
public static bool UseNodeNameAsDefaultSymbolicName { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Shared Property UseNodeNameAsDefaultSymbolicName As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true to initialize the [SymbolicName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#symbolicname) with the [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/members#value) of the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#name); otherwise the value false. The default value is false.

### UseNonGenericNodeInstances

<span class="api-meta">static · since v2.50</span>

Gets or sets a value indicating whether the [OpcNodeManager](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcnodemanager/) shall import [OpcNodeSet](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeset/)s by either creating generic base instances for every node in the nodeset defined or creating the best available implementation of the type definition a node in the nodeset points to.

<div class="api-signature" data-lang="csharp">

```csharp
public static bool UseNonGenericNodeInstances { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Shared Property UseNonGenericNodeInstances As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the best available implementation of the type definition a node in the nodeset points to is to be created for the node during the import of the [OpcNodeSet](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeset/)s; otherwise the value false to create generic base instances for every node instead. The default value is false.

**Remarks**

The 'best available implementation of a type definition' means, that e.g. 'MyFiniteStateMachine' is referenced in the [OpcNodeSet](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeset/) however there exists no (creatable) implementation of that type definition. Therefore the creation will fall back to the base type definition. In this case this would be 'FiniteStateMachine' and will look up an implementation for that type definition.

### UseNullInsteadOfEmptyArrays

<span class="api-meta">static · since v2.42</span>

Gets or sets a value indicating whether a null reference (Nothing in Visual Basic) is supported in the getters of several array / list / collection properties. A null reference (Nothing in Visual Basic) is encoded using an array size equals -1; an empty array / list / collection is encoded using an array size equals zero.

<div class="api-signature" data-lang="csharp">

```csharp
public static bool UseNullInsteadOfEmptyArrays { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Shared Property UseNullInsteadOfEmptyArrays As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value `true` if several array / list / collection properties support a `null` reference (`Nothing` in Visual Basic); otherwise the value `false`. The default value is `false`.

**Remarks**

The array / list / collection properties affected are: [ArrayDimensions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcargument/members#arraydimensions) (<abbr title="OPC Foundation stack type, not documented here: Opc.Ua.Argument.ArrayDimensions">ArrayDimensions</abbr>), [ArrayDimensions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcargumentinfo/members#arraydimensions) (<abbr title="OPC Foundation stack type, not documented here: Opc.Ua.Argument.ArrayDimensions">ArrayDimensions</abbr>), [Elements](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontentfilter/members#elements) (<abbr title="OPC Foundation stack type, not documented here: Opc.Ua.ContentFilter.Elements">Elements</abbr>) and [NodePath](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcsimpleattributeoperand/members#nodepath) (<abbr title="OPC Foundation stack type, not documented here: Opc.Ua.SimpleAttributeOperand.BrowsePath">BrowsePath</abbr>).
