---
title: Modify Tag(s) in DeviceHub on multiple Litmus Edge
slug: solutions/modify-tags-in-devicehub-on-multiple-litmus-edge
docTags: 
createdAt: 2025-08-13T12:21:16.394Z
---

To modify Tag(s) with Litmus Excel Add-ins, you should be familiar with how  Tags work in [DeviceHub](docId:55lxgtILWfsyGkxzrdFoD) on Litmus Edge.

# Before You Begin

- You have installed the Litmus Excel Add-ins extension. See [Install Litmus Excel Add-ins](docId\:GZDhBJ1xZZNDDThYOCuuu) for details.
- You have prepared a [Tool file.](docId\:p1A-A8cN_h5o1Cbu64xpm)&#x20;
- Tag(s) have been [added](docId\:bm4sTCOywU_ooq6ncgbXB) to DeviceHub.

# Initial Preparation

Open a new Tag Management Tool File in Excel.

If prompted, *Enable Content&#x20;*&#x74;o allow the code to run.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/jzotppmZSPdRS7VZpFPvg_image.png" size="80" width="600" height="150" position="center" showCaption="false"}

Make sure the the tool is set to *Multiple LE* for the **Connect To** option.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/6vm__9H3f65gUzspz6pYI_image.png" size="70" width="342" height="142" position="center" showCaption="false"}

# Modify Tag(s)

## Import Tag(s)

Import the Tag Settings for tag(s) defined on Litmus Edge using the [Import Tag(s) Wizard](docId\:ruSqrggFFRw5fgW-jv0hw).

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/IRDxsKQIAHC4QIECZOSgo_image.png" size="70" width="471" height="180" position="center" showCaption="false"}

Users can set a filter to reduce the number of Tag(s) shown as selection to the user.

- **LE Device IP**: Select or enter the IPv4 of the Litmus Edge you want to import tag(s) from

:::hint{type="info"}
**Notes**:

You may need to provide the API Key if the Litmus Edge has not been used with the tool.
:::

- **Search Option**: Select what type of filter is to be used
- **Tag Name Mask**: Set the filter to be applied. Will be ignored if **Search Option** is set to *ALL*
- **DeviceHub Devices**: Select if you want to tags only from a specific device.

:::hint{type="warning"}
**Important:&#x20;**&#x49;f more than 50000 tags are defined on the selected Litmus Edge, a user can only search for tags for one single DeviceHub device.
:::

- The wizard will show what filter will be applied.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/XzgCC1pglgmu374gHG62L_image.png" size="80" width="889" height="796" position="center" showCaption="false"}

- Press the **Search** button to pull the filtered List of Tag(s) from Litmus Edge.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/OltQJsAGaFmfIv4qoEeT6_image.png" size="80" width="889" height="796" position="center" showCaption="false"}

- The user will be shown the filtered List of Tag(s) matching their filter.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/sfO7qZYZiksg4YM445Lmv_image.png" size="80" width="888" height="782" position="center" showCaption="false"}

- Select the Tag(s) to import and press the **Import** button.&#x20;

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/xr72ZLYfNB8MSg0p99tUx_image.png" size="80" width="879" height="779" position="center" showCaption="false"}

:::hint{type="info"}
**Notes**:

Users can choose between:

- Pres&#x73;**&#x20;New Search** to set another filter and search again if the list doesn't show the tag(s) the user wanted to import
- Select **All&#x20;**&#x54;ag(s) using the Checkbox in the Header Row.
- Select a **Group** of Tag(s) by selecting their respective Check Box
- Select one **Tag&#x20;**&#x62;y selecting the respective Check Box
- Select **No&#x20;**&#x54;ag and close the Wizard pressing the **Close** button instead.
:::

- The selected tag(s) with their settings are imported into the sheet.&#x20;
  Once finished, the user can either.
  - perform another search using the **New Search** button
  - finsih the import using the **Close** button

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/HYrTOvQhLTUV9_j-KBT4y_image.png" size="80" width="1479" height="774" position="center" showCaption="false"}

- The **Action** for each imported tag is set to **M** for modify.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/yJlX3_sSuOnxUYmzZrSMs_image.png" size="80" width="718" height="233" position="center" showCaption="false"}

## Mandatory Tag Settings

Users can modify these mandatory settings for a tag(s)

**Tag Name:** The Name of an existing Tag can be changed.

:::hint{type="warning"}
**Important:&#x20;**&#x54;his will change the topic for the Tag and will cause other services like Analytics, Integrations or Flows not be able to read the data
:::

**Tag Definition Properties&#x20;**&#x61;re a mandatory set of Tag Settings, which are required for the request the data from a device.

Based on the driver, the Tag Definition Properties can be added using either the [Tag Address Translator](docId\:D3dr-7i90n3rzRy7t60mk).

Most tags require a set of three values to define the Tag definition.

- **Register Type**: The type of the register used when the tag was setup on the device. This is driver specific.
- **Tag Value Data Type**: The value type of the tag. This is driver specific.
- **Register Address / Path**: The numeric register address of a tag on the device or the path string of the tag. This is driver specific.

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

The Tool will automatically modify potential [Driver Specific settings](docId\:D3dr-7i90n3rzRy7t60mk) with a default configuration for the Driver similar to how the UI on Litmus Edge prepopulates the Tag Wizard.

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

:::hint{type="info"}
**Notes**:

For some drivers, tags can require different tag definition properties, which can lead to certain columns being grayed out as they do not apply.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/Ff7w1s9K01jjiQV3MWutV_image.png" size="80" width="2822" height="163" position="center" showCaption="false"}

To read data for these tags, users provide the respective settings through the [Driver Specifics](docId\:D3dr-7i90n3rzRy7t60mk) column.
:::

### Tag Address Translator

For some Drivers, the tool features a **Tag Address Translator**. Which can be used to provide the address in their typical format and translates it into the Tag Definition Properties used by Litmus.&#x20;

To be able to use the Tag Address Translator, the column **(Optional) Tag Address Translator&#x20;**&#x68;as to be **not** **grayed out**.

Tag Address Translator Not Available:

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/d7c8LFSZy5cbbokTxT44a_image.png" size="50" width="497" height="202" position="center" showCaption="false"}

Tag Address Translator Available:

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/KB9_hgVBt1ZGp8Kh8D6mZ_image.png" size="50" width="474" height="196" position="center" showCaption="false"}

Type in the tag address in their typical driver specific format.

Example: Siemens S7 1500

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/IKViDQFyuPXWcj0mjRfnC_image.png" size="40" width="258" height="172" position="center" showCaption="false"}

The Tag Address Translator will parse the provided address and set the respecitve three Tag Definition Properties and potential Driver Specifics.

Example: Siemens S7 1500&#x20;

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

:::hint{type="info"}
**Notes**:

It is possible that an address could be defined with one of multiple Tag Data Value Types.

Example: A Siemens Tag with and address like DBx.**D**y. could be of Tag Data Value Type:

- dword -> default
- dint
- real

In these cases the Tag Address Translator will by default&#x20;

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/tp30ayHmgh2hhzoRXp3lW_image.png" size="60" width="396" height="163" position="center" showCaption="false"}

request from the user to select the Tag Data Value Type.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/utKAykYVxcycKb9wGmUK5_image.png" size="70" width="715" height="361" position="center" showCaption="false"}

The Form shows the default Tag Data Type. Which you can accept without the need of selecting it using the **Use Default&#x20;**&#x62;utton.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/eot__1AHGoR8bmcHQfaeN_image.png" size="80" width="704" height="352" position="center" showCaption="false"}

Otherwise select the Tag Value Data Type you need from the drop down and press the **Save** button.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/_4cwVewWLxygHU7mivJKw_image.png" size="80" width="714" height="361" position="center" showCaption="false"}

The user can also force the Tag Address Translator to always use the Default Tag Data Value Type.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/10VKo7zS0e4DFRWUBaOUi_image.png" size="60" width="411" height="154" position="center" showCaption="false"}
:::



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

## Not Mandatory Tag Settings

Based on your **Sheet Mode** setting,&#x20;

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/1PAx9Vs9cyrCLt2iuVVZM_image.png" size="40" width="211" height="126" position="center" showCaption="false"}

Modify any of the&#x20;

[Not Mandatory Tag Settings in Fast Mode](docId\:D3dr-7i90n3rzRy7t60mk)&#x20;

or

[Not Mandatory Tag Settings in Extended Mode](docId\:D3dr-7i90n3rzRy7t60mk) &#x20;

as needed.

### Not Mandatory Tag Settings in Fast Mode

Each Tag has a number of not mandatory Settings which can be used to meeat specific needs.

- **Polling Interval in Seconds:** The time between the Litmus Edge requesting data from the device. For millisecond values, provide the value as decimal.
- **Driver Specifics**: Many drivers require very unique Tag definition Properties specific to their make and model. This column combines all of these as a single JSON Object with a default configuration.
  It is recommended to use the [Driver Specific Wizard](docId:48vYrEM4NexAxpXE5CI7x) when setting your specific values for these Driver Specific settings.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/ce73YyUH2cxykno-C_AXW_image.png" size="60" width="412" height="408" position="center" showCaption="false"}

### Not Mandatory Tag Settings in Extended Mode

Each Tag has a number of not mandatory Settings which can be used to meet specific needs.

- **Tag Description:** A short description of the tag.
- **Polling Interval in Seconds:** The time between the Litmus Edge requesting data from the device. For millisecond values, provide the value as decimal.
- **Count**: The number of consecutive registers including the one defined for this tag. If the value is larger 1, the returned data will be an array.
- **Publish on COV only**: Only publish a new value to the message broker if the value changes.
- **Tag Formula**: Enter a formula for the tag to process the generated data. See [Tag Formula Variables](docId\:Io7xgyrdVv_vmpnFXOACi) to learn more.
- **Meta Data**: Provide a JSON Object which holds all the Meta Data you want to add to the Tag. See [Organize Device and Tag Data by Using Metadata](docId\:MU-6j6Zhi0CvCHDad0w8n) to learn more.&#x20;
  It is recommended to use the [Meta Data Wizard](docId\:GeidkenK7D4POixGWTPwm).

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/PjbanmIN9eJsaALvQHbLg_image.png" size="60" width="337" height="378" position="center" showCaption="false"}

- **Driver Specifics**: Many drivers require very unique Tag definition Properties specific to their make and model. This column combines all of these as a single JSON Object with a default configuration.
  It is recommended to use the [Driver Specific Wizard](docId:48vYrEM4NexAxpXE5CI7x) when setting your specific values for these Driver Specific settings.

::Image[]{src="https://images.archbee.com/SSUUxKZUk9bFTEPNn_6Zo/ce73YyUH2cxykno-C_AXW_image.png?format=webp" size="60" width="412" height="408" position="center" showCaption="false"}

:::hint{type="info"}
**Notes**:

You can repeat modifying [mandatory](docId\:D3dr-7i90n3rzRy7t60mk) and [not mandatory](docId\:D3dr-7i90n3rzRy7t60mk) tag settings

for every tag you need to modify before [Executing Actions](docId\:D3dr-7i90n3rzRy7t60mk).
:::

## Executing Actions

When all [mandatory](docId\:D3dr-7i90n3rzRy7t60mk) and sheet mode dependend [not mandatory](docId\:D3dr-7i90n3rzRy7t60mk) settings for all tag(s) are set they are ready to be modified.

It is **Recommended&#x20;**&#x62;ut not mandatory to verify the configuration first without executing the Action by pressing the **Verify Only** button.&#x20;

::Image[]{src="https://images.archbee.com/SSUUxKZUk9bFTEPNn_6Zo/tBi_pUOEf-rXkVQeawJ2W_image.png?format=webp" size="80" width="359" height="165" position="center" showCaption="false"}

This will check that all required Tag Settings are provided and logically correct. And provide any finding to the user.
Example: Below the user did not set a Register Address / Path.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/-8aes-8-Dy8dS-Lmg_91s_image.png" size="80" width="975" height="595" position="center" showCaption="false"}

:::hint{type="warning"}
**Important:&#x20;**&#x54;he tool can not verify if all provided tag settings are factually correct. For example it can not verify that the register address provided for the tag is the correct register address on the PLC.
:::

The Tag(s) can be modified on Litmus Edge by pressing the **Verify + Execute** button.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/efpAqozXDBbZ4xUGmOpbX_image.png" size="60" width="359" height="165" position="center" showCaption="false"}

The tool will group all the tag(s) based on the Litmus Edge(s) defined in column **Target Litmus Edge IP.**
For each Litmus Edge this will check that all required Tag Settings are provided and logically correct.&#x20;
And provide any finding to the user.
If no issues have been identified, the tool will verify that the user wants to execute **ALL** the actions from the **Action** Column:

1. **A**: Add Tag(s)
2. **M**: Modify Tag(s)
3. **D**: Delete Tag(s)
4. **I**: Ignore Tag(s) -> do nothing

To perform all actions, press the **Yes** button.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/WyrMFhqrLwgR5mJccaHy-_image.png" size="80" width="758" height="391" position="center" showCaption="false"}

The Tool will perform ALL Actions one Litmus Edge at a time. When finished, a result Summary is shown. Close the Result Summary by pressing the **X** close button.

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

Once all Litmus Edge have been processed, the tool will ask if the user wants to re-compare the Tag(s) against Litmus Edge.
To re-compare, press the **Yes&#x20;**&#x62;utton.
To not re-compare, press the **No** button.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/nPOweMk6ZZF6DUbiSkpi3_image.png" size="70" width="403" height="154" position="center" showCaption="false"}

If the User selected to press the **Yes&#x20;**&#x62;utton from aboves messagebox, the tool will pull all the tag settings from Litmus Edge again including the RegisterID and also change the **Action&#x20;**&#x74;o **M** for each Tag with a RegisterID or **A&#x20;**&#x66;or devices with no RegisterID.&#x20;

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

# Troubleshooting

The Tool will perform several checks throughout the proces of defining the tag settings.  If they do not pass successfully, the user will be notified.&#x20;
The checks include:

- Tag Name uniqueness on a Device level.&#x20;
  - The tool checks if a **Tag Name** already exist for a specific device in the Tool.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/GFAE9is6PvnsqU9oTDuxe_image.png" size="80" width="703" height="469" position="center" showCaption="false"}

- [Allowed and not allowed Ascii Characters](docId\:FNwHcidRnnPizCZkUWiYz) for Tag Names and Descriptions
  - The user is shown a message box as notification.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/Nms_-RPqieuIcEG9jEhLz_image.png" size="80" width="491" height="381" position="center" showCaption="false"}

- The character(s) are highlighted in red and also shown in a note.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/qe6hYYnVMLYG5lM2xYDsw_image.png" size="80" width="428" height="223" position="center" showCaption="false"}

- See [Allowed and not allowed Ascii Characters for Names and Descriptions](docId\:FNwHcidRnnPizCZkUWiYz) for a full list for both Names and Descriptions.
- Correct JSON formating for **Meta Data**, and **Driver Specifics**.
  - Example for an invalid JSON formatting of the Driver Specifics

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/Rl3Thx9snaKrJaKh3g2xY_image.png" size="70" width="441" height="348" position="center" showCaption="false"}

- Valid entry for **Register Address / Path,&#x20;**&#x20;if value has to be a number, to be a number and withhin allowed range
  - Example for an invalid entry for the Register Address / Path

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/ecpxxEcWb9qpdLRQtCkmz_image.png" size="60" width="389" height="356" position="center" showCaption="false"}

- Is the column **Driver Specifics&#x20;**&#x65;mpty.&#x20;
  If they are, and the driver requires driver specifics the default JSON Object will be automaticly added.
- For some drivers the tool also verifies if there exist mandatory JSON Key-Value pairs in column **Driver Specifics** with a value being:
  - empty
  - **null**
  - empty array "**\[]**"
  - empty JSON Object "**\{}**"
- For drivers which use queries to read data from databases the tool also verifies the query defined in the column **Driver Specifics** is setup to perform SQL Injection.



