---
title: "JMF Connector"
slug: "jmf-connector"
updated: 2025-02-25T08:26:19Z
published: 2025-02-25T08:26:19Z
canonical: "learn.servitly.com/jmf-connector"
---
> ## Documentation Index
> Fetch the complete documentation index at: https://learn.servitly.com/llms.txt
> Use this file to discover all available pages before exploring further.
# JMF Connector
Receive data from connected printers by using the JMF protocol.

## Plugin Configuration
To enable this plugin, you need to:
1. Go to the *Integrations / Plugins* page.
2. Select the *IoT Connectors* category.
3. Locate the *JMF Connector* card.
4. Click on the card switch to activate the plugin.
5. Configure the plugin properties and save.
Here is the list of all the properties that can be used in the plugin configuration.
| | PROPERTIES |
| --- | --- |
| *Username* | The username used for the basic HTTP authentication. Type: STRING **\|** Mandatory |
| *Password* | The password used for the basic HTTP authentication. Type: PASSWORD **\|** Mandatory |
| *JMF Root Tag Names* | The list of JMF document known root tag names. Type: STRING_ARRAY **\|** Mandatory |
| *Thing Definition Mapping Path Prefixes* | The set of mapping path prefix by thing definition. Type: KEY_VALUE **\|** Mandatory |
## JMF Data Mapping
In order to receive and store JMF data, thing-definition, metrics and things must be correctly defined and mapped, according to the JMF messages structure.
Here is an example of JMF message:
```xml
```
## Thing Definitions
Thing definitions must be defined according to how a press is structured, so there will be a main thing-definition which is the press, and a set of sub-thing-definition which are the components of the press.
Sub thing-definition may have more than 2 levels.
### Metric Mapping
Once you have defined the thing-definition hierarchy (e.g. PCs, PLCs, Printer Bars, Printer Heads), you can now define metrics under each thing-definition.
Within a metric, you must use this mapping:
- **Path**: fixed to "data".
- **Name**: the XML tag name as is, for instance *PS_Head_Temp1*
By default, the JMF connector reads the `Value` attribute, optionally you can specify the name of the alternative attribute to read by using the XPath syntax `PS_Head_Temp1/@temp`
The timestamp used to save the new metric value is (in this order):
- read from the `Time` attribute on the XML element. `<PS_Head_Temp1 Time="2024-11-13T08:59:04" Index="1" Value="42.000" Units="unit"/>`
- read from the `Timestamp/@Value` XML element.
- the time the message is received by the connector.
### Thing Mapping
Each thing must be mapped by using:
- **Asset Id**: the machine identifier, for instance "GT-DP-22-0085".
- **Path**: only for the sub-things, the prefix defined in the "*Thing Mapping Path Prefixes*" plugin property for a specific thing-definition concatenated with the index attribute value. For instances, considering that the "Printer Head" has the Thing Mapping Path Prefix equals to "PH_" here are some path samples:
```xml
→ PH_6
→ PH_23
```
## JMF Connector Endpoint
JMF files must be sent to these endpoints.
#### POST Request
```http
POST https://api.servitly.com/data/jmf-direct
Authorization: Basic 1234567890abcd==
Content-Type: text/plain
....
```
#### Multipart Request
```http
POST https://api.servitly.com/data/jmf
Authorization: Basic 1234567890abcd==
Content-Type: multipart/mixed
--edt7Tfrdusa7r3lNQc79vXuhIIMlatb7PQg7Vp
Content-Disposition: form-data; name="file";
Content-Type: text/xml
Content-Transfer-Encoding: 8bit
... File Data ...
```
The endpoint uses the Basic authorization based on the username and password specified in the plugin.
Received JMF files are processed asynchronously and when finished are moved to temporary storage for up to 48 hours, after which they are deleted.