# Your First Service Commissioning File

Make yourself familiar with the structure of the service commissioning file below.

* To learn how to connect your first machine using this service commissioning file, see [Connecting your First Machine](https://docs.cybus.io/1-9-0/getting-started/connecting-your-first-machine).

{% file src="<https://2317229820-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLPAf7nVSLAm6jvBxu1bg%2Fuploads%2Fgit-blob-ef6baaf397a05111df6d2440bd42ca33af5684b7%2Fconnect-your-first-machine.yaml?alt=media>" %}

{% code title="connect-your-first-machine.yaml" lineNumbers="true" %}

```yaml
description: >

    OPC UA Template Commissioning File
    Cybus Learn - How to connect and integrate an OPC UA server
    https://learn.cybus.io/lessons/how-to-connect-and-integrate-an-opcua-server/

metadata:
    name: Example OPC UA Template
    version: 1.0.0
    provider: cybus
    homepage: https://www.cybus.io

parameters:
    opcuaHost:
        type: string
        description: OPC UA Host Address
        default: opcua.demo-this.com

    opcuaPort:
        type: integer
        description: OPC UA Host Port
        default: 51210

resources:
    opcuaConnection:
        type: Cybus::Connection
        properties:
            protocol: Opcua
            connection:
                host: !ref opcuaHost
                port: !ref opcuaPort

    RandomDataExample:
        type: Cybus::Endpoint
        properties:
            protocol: Opcua
            connection: !ref opcuaConnection
            subscribe:
                nodeId: ns=2;i=11021

    mapping:
        type: Cybus::Mapping
        properties:
            mappings:
                - subscribe:
                      endpoint: !ref RandomDataExample
                  publish:
                      topic: !sub 'example/opcua/dataexample'
```

{% endcode %}

## Structure of connect-your-first-machine.yaml

The service commissioning file contains the following elements.

#### `description`

This section contains a short description of the template.

#### `metadata`

This section contains the name, version number, provider and homepage of the provider of the service commissioning file.

#### `parameters`

This section defines the parameters for the configuration of the OPC UA connection. The following parameters are available:

* `opcuaHost`: The address of the OPC UA host (default value: [opcua.demo-this.com](http://opcua.demo-this.com/)).
* `opcuaPort`: The port of the OPC UA host (default value: 51210).

#### `resources`

This section defines the resources that are used in this example. The following resources are available:

* `opcuaConnection`: Defines the connection to the OPC UA server.
  * `type`: Defines the type of the resource. In this case, `Cybus::Connection`.
  * `properties`: Defines the properties of the connection.
    * `protocol`: The protocol used. In this case, `Opcua`.
    * `connection`: The connection details, where the parameters `host` and `port` refer to the previously defined parameters `opcuaHost` and `opcuaPort`.
* `RandomDataExample`: Defines an endpoint that subscribes to data from a specific node of the OPC UA server.
  * `type`: Defines the type of the resource. In this case, `Cybus::Endpoint`.
  * `properties`: Defines the properties of the endpoint.
    * `protocol`: The used protocol. In this case, `Opcua`.
    * `connection`: Refers to the previously defined OPC UA connection.
    * `subscribe`: Defines the node (`nodeId`) from which data is subscribed (in this case `ns=2;i=11021`).
* `mapping`: Defines a mapping that forwards the subscribed data to a specific publication target.
  * `type`: Defines the type of the resource. In this case, `Cybus::Mapping`.
    * `properties`: The properties of the mapping.
      * `mappings`: A list of mappings.
        * `subscribe`: Defines the end point from which data is subscribed (`RandomDataExample`).
        * `publish`: Defines the publication target (`topic`), whereby a topic (`example/opcua/dataexample`) is specified.
