> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/rdm/ribbon-menu-bar/file/import/import--json/json-import-strategies-and-file-format.md).

# JSON import strategies and file format

When importing JSON files into Remote Desktop Manager, there are some specifications to follow regarding the content format.

### File content

{% hint style="warning" %}
Some validations on entry settings are not in the business layer but rather in the property dialogs. This means that using the import process can result in invalid entries that trigger errors. Validate the resulting entries carefully.
{% endhint %}

There is no list of all supported fields for all entry types because Remote Desktop Manager uses an open architecture and therefore is not even aware of all the entry type fields that are provided by Devolutions' add-on system. Also, default values for fields are not serialized, meaning that they are simply left out of the serialized structure.

A good method of finding out the field structure is creating an entry of the desired type, right-clicking it and selecting ***Clipboard – Copy***, then pasting the content in a suitable editor. Alternatively, exporting an existing entry in JSON format gives a good idea of the format to adopt.

Implementing support for all fields comes at a cost. The import process is time consuming because of all the dynamic field access that takes place. A massive initial import of entries should be separated in batches of manageable sizes. Perform trials and tune the number of entries to achieve acceptable performance.

All of Devolutions' entries share a basic set of fields; the rest is tied to the specific technology being interfaced with (RDP, SSH, etc.). Some fields are grouped in structures, like the Information Tab. Those fields are accessible only when providing the structure name as a parent object, for example, "MetaInformation\OS" or "MetaInformation\PurchaseDate".

{% hint style="info" %}
The JSON file can contain Devolutions variables, which are resolved upon saving. For instance, the ***$HOST$*** variable can be used in fields such as ***Description***, ***URL***, and ***Name***. It will be replaced by the corresponding value.
{% endhint %}

Below is a non-exhaustive list of some relevant fields.

<table><thead><tr><th width="173.99993896484375">OPTION</th><th>DESCRIPTION</th></tr></thead><tbody><tr><td>Host</td><td>Host name of the device.</td></tr><tr><td>Name</td><td>Name of the entry.</td></tr><tr><td>ConnectionType</td><td>Token representing the connection type. It is best to use the <em><strong>Clipboard</strong></em> – <em><strong>Copy</strong></em> method to obtain the acceptable values. If no connection type is specified, RDP will be used by default.</td></tr><tr><td>Group</td><td>Destination folder. Note that if the import process itself defined a destination folder, the folder listed here would be created below the one from the process.</td></tr><tr><td>Description</td><td>Description of the entry.</td></tr><tr><td>Open (Embedded)</td><td>Boolean value (true or false) that indicates to open the session embedded. The default value is false, meaning that the native client will be used depending on the technology (MSTSC.EXE, for instance).</td></tr><tr><td>Username</td><td>Username used to open a session to the device.</td></tr><tr><td>Domain</td><td>Domain used to open a session to the device.</td></tr><tr><td>Password</td><td>Password used to open a session to the device. Please note that this field is encrypted and stored into another field upon being imported.</td></tr><tr><td>SerialNumber</td><td>Serial number of the device.</td></tr><tr><td>ServiceTag</td><td>Service tag of the device.</td></tr><tr><td>PurchaseDate</td><td>Purchase date in a ISO8601 format (i.e., yyyy-mm-dd).</td></tr></tbody></table>

### JSON file examples

#### For a username and password credentials entry

```
{"Connections":
	[
		{
			"ConnectionType":"Credential",
			"Group":"My credentials folder",
			"Name":"User",
			"Credentials":
			{
				"Password":"MyNewPassword!@#",
				"UserName":"User"
			}
		}
	]
}
```

#### For an RDP entry with linked username and password credentials

```
{
  "Connections": [
    {
      "Url": "serverxyz.domain.loc",
      "UsesHardDrives": false,
      "ConnectionType": "RDPConfigured",
      "CredentialConnectionID": "d2fe9656-d3dd-4511-813e-b9bc4ab341c1",
      "CredentialConnectionSavedPath": "Bob",
      "Description": "Description of this RDP entry",
      "Name": "Server XYZ",
      "OpenEmbedded": true,
      "MetaInformation": {
        "PurchaseDate": "20XX-XX-XX",
        "ResourceText": "Resource",
        "SerialNumber": "AV123-456-7890",
        "ServiceTag": "AV7890"
      },
      "RDP": {}
    },
    {
      "ConnectionType": "Credential",
      "ID": "d2fe9656-d3dd-4511-813e-b9bc4ab341c1",
      "Name": "Bob",
      "Credentials": {
        "Domain": "domain",
        "Password": "ThisIsAPassword!@#",
        "UserName": "bob"
      },
    }
  ]
}
```

#### See also

* [Devolutions Academy - Importing and Exporting Data](https://academy.devolutions.net/student/path/1925039/activity/3139557)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.devolutions.net/rdm/ribbon-menu-bar/file/import/import--json/json-import-strategies-and-file-format.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
