---
title: Modify Digital Twins model
slug: edgemanager/lem-user-guide/manage-assets/digital-twins/modify-digital-twins-model
docTags: 
createdAt: 2026-10-07T08:38:15.417Z
---

You can customize a Digital Twins model before you deploy it, but customization is optional. Open the model from the *Models* pane to configure its static attributes, dynamic attributes, transformations, parameters, and schema.

# Configure the model

After creating the model and defining a name, you can configure it with static and dynamic attributes and schema to represent your assets or data structures.&#x20;

## Model image

Select a model and click th&#x65;**&#x20;Upload image** icon to choose an image for the model. The image displays in the model tile on the *Models* pane.

![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/5P2JR-CZSllpsgZHNR6Cm_image.png)

## Static attributes

When you create static attributes, you define default attribute values as placeholders. Later, you change the default values in model instances. For example, you might define `Manufacturer` , `Device Description`, `Model` and `Plant` attributes and change the static attribute values later in instances.

Manage the metadata for the model from the *Static Attributes* tab.&#x20;

### Add static attributes

If you need to filter existing attributes, you can use the search field.&#x20;

**To add static attributes:**

1. From the *Static Attributes* tab, click **Add new static attribute**.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/HrNlIzKeM4oF1JXziCc-n_image.png" size="80" width="1363" height="601" position="flex-start" darkWidth="1363" darkHeight="601" showCaption="false"}
2. In the **Attribute Name** field, either select an attribute from the drop-down list or enter a new attribute name.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/uViDBm7SvqvqGMv2jU0Xa_image.png" size="80" width="777" height="517" position="flex-start" darkWidth="777" darkHeight="517" showCaption="false"}
3. In the **Attribute Value** field, enter a value for the attribute.&#x20;

### Import static attributes

Before importing, create a CSV file with the following headers, then add rows with attribute names and values.

**Required Headers**

- ModelName
- Key
- Value

**Optional Headers**

- InstanceName

After creating the file:

1. Navigate to **Static Attributes**, and select **Import Attributes**.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/0PG0p86BgtsmCCbzunhYp_image.png" size="70" width="909" height="363" position="flex-start" darkWidth="909" darkHeight="363" showCaption="false"}
2. In the dialog your browser opens, navigate to and open the CSV file.

### Export static attributes

You can export all attributes to a CSV file, modify them offline, and import them again.

To export a CSV file with existing static attributes:

Navigate to **Static Attributes**, and select **Export Attributes**. Attributes export to a CSV file.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/gNt_0_fes1K8ePB5JImje_image.png" size="80" width="905" height="312" position="flex-start" darkWidth="905" darkHeight="312" showCaption="false"}

## Dynamic attributes

Next, define dynamic attributes that represent real-time data for your asset. Dynamic attributes can be JSON, boolean, array, string, or number data types. A Nested Model data type is also available, which you add with its own icon. Each dynamic attribute can have an associated transformation.

### Add dynamic attributes

**To add a dynamic attribute:**

1. Click the **Add item** icon.

   ![Add Attribute](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/GqsmXS1tbxsjzkNu7N0xz_21.png)
2. In the **Name&#x20;**&#x66;ield, enter a name for the attribute.&#x20;
3. Optionally, enter a value for **Unit&#x20;**&#x61;nd select a **Data Type**. JSON applies if you do not specify a data type.
4. The **Skip Key&#x20;**&#x6F;ption is only available when the data type is JSON or Nested Model. Select **Skip Key** to exclude a specific attribute from the payload. Note that the value persists in the payload, for example, as `value='20'`. For the effect on a Nested Model attribute, see Add a Nested Model attribute.
5. Optionally, define a topic expression consisting of static string values and parameters by surrounding the expression in curly brackets `{}`. For example, `devicehub.alias.{device}.tagname`.
6. Optionally, if you've created data transformation schemas, select one from the **SchemaID&#x20;**&#x66;ield.&#x20;
7. If you need to filter existing attributes, you can use the search field.

   ![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/bpnIJp3AW_EkOCH0gQ4Oz_image.png)

### Add a Nested Model attribute

A Nested Model attribute points at another Digital Twins instance instead of at a message broker topic. In the model, you choose the model that the attribute points at. The output of the instance that you bind is republished inside the parent payload. To splice the nested instance's keys directly into the parent payload instead, select **Skip Key**.

:::hint{type="info"}
**Note**: Nested Model attributes require Litmus Edge 4.3.0 or later.
:::

**To add a Nested Model attribute:**

1. From the *Dynamic Attributes* tab, click the **Add Nested Model** icon next to **Add item**. The *Add Nested Model* dialog appears.

   ![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/MsdAJba0ao5HYGzmVD7RI_22.png)
2. From the **Nested Model** drop-down, select the model to reference.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/elikmXBngCx7dwAbvI7JR_23.png" size="100" isUploading="false" position="center" width="599" height="286" darkWidth="599" darkHeight="286" showCaption="false" indent="1"}

3. Click **OK**. A new row appears. **Data Type** is set to Nested Model, and the name defaults to `nested_model_<model name>`, for example `nested_model_Model2`.

   ![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/x6GKfMBgnA6PfKdg5qoIn_applynestedmodel.png)
4. Optionally, enter a new name in the **Name** field.
5. Optionally, select **Skip Key**.
6. Click the **Apply changes** icon at the end of the row.
7. Click **Save Model**.

### Import and export dynamic attributes

To import dynamic attributes, download the sample CSV file and populate it with your dynamic attributes. After creating the file, click the model tile, navigate to **Dynamic Attributes**, and click the **Import Attributes** icon.&#x20;

To export a CSV file of existing dynamic attributes, click **Export Attributes**.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/TNYO0UcV_QISp2Z2kIOH-_image.png" size="80" width="1369" height="359" position="flex-start" darkWidth="1369" darkHeight="359" showCaption="false"}

## Transformations

Use transformations to convert the raw JSON data published on topics in the message broker to a desired format. Transformations apply to specific dynamic attributes and the resulting transformation is included in the full Digital Twins and Publish Attributes payloads. Transformations clean your data and make it easier for northbound systems to consume. For example, create a transformation that eliminates duplicate timestamps and register IDs in your payload.

Transformations parse and transform the payload and specify a payload structure as the model inherits data. See [Use Digital Twins to Contextualize Data](docId\:VDRP68HIwEA7iyLgo3eW7) for information on formatting transformations.

With transformations, you can:

- Create a JSON transformation that filters specific key-value pairs  . For example, this transformation only includes the following attributes in the payload.

  ```json
  }
    “value“: “$value“,
    “timestamp“: “$timestamp“:
  }
  ```
-  Create a JSONata transformation to perform&#x20;  dynamic filtering.  &#x20;[JSONata](https://docs.jsonata.org/overview.html) is a query language that allows logical conditions and computed outputs.  &#x20;For example, use JSONata to create an alert when a temperature tag exceeds a high or low threshold value.

  ```json
  {
    "asset": deviceName,
    "area": metadata.area,
    "line": metadata.line,
    "quality": success,
    "metric": "metric",
    "timestamp": $fromMillis(1510067557121, '[M01]/[D01]/[Y0001] [h#1]:[m01][P]'),
    "value": value
  }
  ```
- Use a playground to test out your transformations before adding them to a model.

You can also use the following system variables in transformations:

- `{EDGE_DT_SYSTEM_TIME}` device system time when the payload is published
- `{EDGE_DT_MODEL_VERSION}` version of the model the instance was created from
- `{EDGE_DT_MODEL_NAME}` name of model the instance was created from
- `{EDGE_DT_MODEL_ID}`unique identifier of the model.
- `{EDGE_DT_INSTANCE_ID}`unique identifier of the instance.



### Configure transformations

**To add a transformation schema:**

1. Select the **Transformation&#x20;**&#x74;ab and click **Add a Schema**.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/6lKJuD52nj1CenMVeu0uG_image.png" size="80" width="1416" height="383" position="flex-start" darkWidth="1416" darkHeight="383" showCaption="false"}
2. Enter a name for the schema.&#x20;
3. Select from **JSON&#x20;**&#x6F;r **JSONata&#x20;**&#x66;rom *Schema Type* drop-down menu.
4. In the code window, copy and paste the JSON-based or JSONata schema.&#x20;
5. (Optional) You can use the *System Variables&#x20;*&#x69;n the code drawer.
6. Experiment in a playground.
7. Click **Add**.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/H2kgVlG9Be7fgHSNzExg4_image.png" size="80" width="1324" height="787" position="flex-start" darkWidth="1324" darkHeight="787" showCaption="false"}
8. To edit or delete a schema, click the **Action menu** for the schema and select an option.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/2mGSZpYeUvxw4Lm_kTakG_image.png" size="80" width="1417" height="573" position="flex-start" darkWidth="1417" darkHeight="573" showCaption="false"}
9. Apply the transformation to specific dynamic attributes.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/hmBoKyHjVYyjgVOvi0U0D_image.png" size="40" width="531" height="331" position="flex-start" darkWidth="531" darkHeight="331" showCaption="false" indent="3"}

## Configure parameters

Parameters are variables that you can insert into topic expressions. Parameters help you save time when defining instances that have many attributes.

For example, define a `device` parameter and add it as a topic expression for a dynamic variable with the following syntax: `devicehub.alias.{device}.tagname`. Then modify the value for the `device` parameter for each instance on the **Instance Parameters** configuration page. &#x20;

:::hint{type="info"}
**Note:** Parameter names and values are case sensitive and cannot contain whitespaces. Allowed characters:

- A-Z in lowercase and uppercase
- 0-9
- Hyphen (`-`) and underscore (`_`) characters.
:::

To create a parameter:

1. Navigate to the **Parameters** tab and click **Add Item**.
2. Enter a parameter name and a placeholder value.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/vz7aOACClOwFX7YSF3_WV_image.png" size="80" width="1716" height="500" position="flex-start" darkWidth="1716" darkHeight="500" showCaption="false"}
3. Click **Save Row**. The new parameter saves.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/Mb1bOMo5UAyDrd89phXo1_image.png" size="80" width="1715" height="478" position="flex-start" darkWidth="1715" darkHeight="478" showCaption="false"}
4. Add the parameter to a topic expression. In this example, `devicehub.alias.{device}.Temperature` is added to the Temperature attribute.

   ![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/CJg3VJFUo_we7yju6S1b-_image.png)
5. Select an instance of the model and click **Open Parameters**.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/fc5rKU5pvYhvA81LBw4s3_image.png" size="80" width="1512" height="553" position="flex-start" darkWidth="1512" darkHeight="553" showCaption="false"}
6. In the **Instance Parameters** dialog, edit the value for the device.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/ciQXOhO6bjFyjKp4x-jSc_image.png" size="80" width="1249" height="744" position="flex-start" darkWidth="1249" darkHeight="744" showCaption="false"}
7. Navigate to the **Instance Dynamic Attributes** page to see the topic defined for the dynamic attribute, based on your topic expression and parameter values.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/1nfhKjBSrS16ovkUceek4_image.png" size="80" width="1792" height="302" position="flex-start" darkWidth="1792" darkHeight="302" showCaption="false"}

:::hint{type="info"}
**Note:** If a dynamic attribute has a topic expression defined, the topic for instances cannot be edited. To change the dynamic attribute topic, you must edit the model or parameter values.
:::

## Schema

Nested Model attributes appear in the list of dynamic attributes, and you add them to the schema the same way as other attributes.

![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/UhhYC4WfsFY4-Uh4bwQhH_schema.png)

To create a category for the schema

1. Click the **Action menu** icon for `root` and select **Add Node**.

   ![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/cixUP6qbVFMimJi6G7nLp_addnode.png)
2. To add attributes to the schema, do one of the following:
   - Drag and drop attributes from the left-hand list to the canvas under the appropriate category.&#x20;
   - Click the **Action menu** for a category and select **Add item to Node**. Then, select the attribute to add.
3. When you have configured the schema, click **Save Model**.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/31uNHcIQd4kUcCSpSCB7b_image.png" size="80" width="1418" height="590" position="flex-start" darkWidth="1418" darkHeight="590" showCaption="false"}

### Export schemas

To export an existing schema to a CSV file, click the **Export Schema&#x20;**&#x69;con.&#x20;

### Sync attributes

To sync the existing schema

1. Click the **Sync Attributes&#x20;**&#x69;con.&#x20;
   All attributes are appended to the current hierarchy. If they exist, the *static\_attributes&#x20;*&#x61;nd *dynamic\_attributes&#x20;*&#x6E;odes are recreated.&#x20;
2. To confirm that you want to proceed, click **Yes**.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/F_Jg9HwHL1ZhWA6OFJpg8_image.png" size="80" width="1418" height="550" position="flex-start" darkWidth="1418" darkHeight="550" showCaption="false"}

### Clear schema

To clear the schema builder tree, click **Clear Schema**. Changes apply when you save the model.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/ek_7X8MOUaQz84sUSJODU_image.png" size="80" width="1418" height="550" position="flex-start" darkWidth="1418" darkHeight="550" showCaption="false"}

## Apply model updates to instances

When you update your model, you can apply the changes to model instances.

To apply model updates:&#x20;

1. Click **Upgrade Instances**.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/w7qQIdsrHtyK2pXC_-mvW_image.png" size="80" width="1415" height="678" position="flex-start" darkWidth="1415" darkHeight="678" showCaption="false"}
2. Select the instances to upgrade and click **Upgrade**.

   ::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/FX9n4ks-5B46lAE4UBYw4_image.png" size="50" width="584" height="311" position="flex-start" darkWidth="584" darkHeight="311" showCaption="false"}

