Stay organized with collections
Save and categorize content based on your preferences.
Add a transformation to a type
This guide describes how to add a transformation to a given type in
Manufacturing Data Engine (MDE).
Choosing a transformation
There are several transformations available in MDE. The
default configuration package provides two transformations that can be
associated to any of the Types available in that
default configuration package:
Group Event Change Transformation: This Transformation monitors any
field in a Tag or a group of Tags and generates an event every time the
monitored values change in any of those Tags. This Transformation can be
associated to a Type of any Archetype.
Windowing Transformation: This Transformation applies a Windowing
function to all Tags of a Type. Windowing refers to the
summarization of multiple records over a period of time in a single
record. The Windowing Transformation can be associated to any Type of
any Archetype. It can summarize the records of Tags from 1 minute to 60
minutes. The result of the Transformation is a raw message containing the
summary values for the value expression during the selected period of time.
The default configuration package provides the Message Classes,
Parsers and Types required to process the raw messages emitted by
these two transformations. The two Types provided to process the raw messages
generated by each Transformation are the following:
group-event-change-records: destination Type for the output
messages of Group Event Change Transformation.
window-transformation-records: destination Type for the output
messages of Windowing Transformation.
To activate a Transformation, the specified Transformation should be
selected in the Type web interface or associated to the Type using the
Configuration API endpoint.
Listing available transformations
To explore the list of available transformations in any MDE
system follow these steps:
REST
There is a dedicated Configuration Manager API endpoint to list the
available transformations:
GET /configuration/v1/transformations
It returns the following JSON with the available Transformations and its
capabilities:
{"transformations":[{"name":"eventChange","displayName":"MDE Event Change","description":"Monitors the value of one or more tag that has a common group key. Fires an event whenever any of the contributing tags changes its value","disabled":false,"sample":{"keyExpression":{"displayName":"Key Expression","description":"A SpEL expression that extracts the group key from the MDE message.proto which groups one or more tags as one unit whose values will be monitored for a change. The key must evaluate to a string","value":"#message['tagName']"},"valueExpression":{"displayName":"Value Expression","description":"A SpEL expression that extracts the value from the MDE message.proto to be monitored for a change. The value must evaluate to a string","value":"#message['data']['numeric'].toString()"}}},{"name":"window","displayName":"MDE Numeric Value Windowing","description":"Create a periodic stats event that provides values such as average, min, and max for an expression that extracts a numeric value from the tag messages","disabled":false,"sample":{"durationMinutes":{"displayName":"Window Duration in Minutes","description":"A positive integer that represents how long the window will summarize events before producing the summary tag, this is in the granularity of minutes and it cannot be higher than 2 hours","value":"1"},"valueExpression":{"displayName":"Value Expression","description":"A SpEL expression that extracts the value from the MDE message.proto to be used as the numeric value of the tags that will be summarized. The value must evaluate to a number, and it's internally out","value":"#message['data']['numeric']"},"id":{"displayName":"Window Unique ID","description":"A unique ID that represents this instance of the window transformation, this should be unique if you are adding multiple instances of the window transformation to the same type","value":"1-min-window"}}}]}
Console
Using the web interface, under the 'Types' section, open the Edit type version
menu for a given type and expand the Transform & connect section of the panel.
Associating a transformation to a Type
Associating any existing Type to an available Transformation, transforms
all Tags of that Type. The result of the transformation is ingested as
new Tags in MDE of the Transformed Types. The
transformed Tagnames have a new name derived from the original Tagname
and the name of the transformation.
These are the steps to associate a Type to a Transformation:
REST
To associate a transformation to a give Type call the PATCH
method in this endpoint of the Configuration Manager API:
Replace the following items in the previous sample call:
TYPE_NAME: the name of the Type to be modified.
VERSION_NUMBER: the version of the Type to be modified.
Replace the following items in the Body for configuring a Window
Transformation:
WINDOW_TRANSFORMATION_ID: a unique identifier of the transformation
that will also be attached to the original tag names after being
processed by the transformation.
WINDOW_TRANSFORMATION_MINUTES: the duration, in minutes, of the window
to apply
VALUE_EXPRESSION_VALUE: the element of the tag proto that will be
monitored as value field. For a numeric default tag is
#message['data']['numeric'].
Replace the following items in the Body for configuring an Event Change
Transformation:
KEY_EXPRESSION_VALUE: the element in the tag proto that is used to
group tags that should be monitored together. To monitor a single tag
should be #message['tagName']
VALUE_EXPRESSION_VALUE: the element in the tag proto that is used as
to monitor the value change. Needs to resolve to a String. In a
numeric default tag is #message['data']['numeric'].toString().
Console
To associate a Transformation to a Type open the 'Edit type version'
web interface section in the 'Type' tab.
Expand the 'Transform & connect' section:
To add a Transformation select the required transformation from the list
and click 'ADD':
Then proceed to provide the required parameters and click 'SAVE':
For the Window Transformation the parameters are:
WINDOW_TRANSFORMATION_ID: a unique identifier of the transformation
that will also be attached to the original tag names after being
processed by the transformation.
WINDOW_TRANSFORMATION_MINUTES: the duration, in minutes, of the window
to apply
VALUE_EXPRESSION_VALUE: the element of the tag proto that will be
monitored as value field. For a numeric default tag is
#message['data']['numeric'].
For the Event Change Transformation the parameters are:
KEY_EXPRESSION_VALUE: the element in the tag proto that is used to
group tags that should be monitored together. To monitor a single tag
should be #message['tagName']
VALUE_EXPRESSION_VALUE: the element in the tag proto that is used as
to monitor the value change. Needs to resolve to a String. In a
numeric default tag is #message['data']['numeric'].toString().
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-25 UTC."],[],[],null,["# Add a transformation to a type\n==============================\n\nThis guide describes how to add a transformation to a given type in\nManufacturing Data Engine (MDE).\n\nChoosing a transformation\n-------------------------\n\nThere are several transformations available in MDE. The\n**default configuration package** provides two transformations that can be\nassociated to any of the Types available in that\ndefault configuration package:\n\n- **Group Event Change** Transformation: This *Transformation* monitors any field in a Tag or a group of Tags and generates an event every time the monitored values change in any of those Tags. This Transformation can be associated to a Type of any *Archetype*.\n- **Windowing** Transformation: This *Transformation* applies a *Windowing* function to all Tags of a Type. *Windowing* refers to the summarization of multiple records over a period of time in a single record. The *Windowing Transformation* can be associated to any Type of any Archetype. It can summarize the records of Tags from 1 minute to 60 minutes. The result of the *Transformation* is a raw message containing the summary values for the value expression during the selected period of time.\n\nThe default configuration package provides the Message Classes,\nParsers and Types required to process the raw messages emitted by\nthese two transformations. The two Types provided to process the raw messages\ngenerated by each *Transformation* are the following:\n\n- **`group-event-change-records`**: destination Type for the output messages of Group Event Change Transformation.\n- **`window-transformation-records`**: destination Type for the output messages of Windowing Transformation.\n\nTo activate a *Transformation* , the specified *Transformation* should be\nselected in the Type web interface or associated to the Type using the\nConfiguration API endpoint.\n\nListing available transformations\n---------------------------------\n\nTo explore the list of available transformations in any MDE\nsystem follow these steps: \n\n### REST\n\nThere is a dedicated *Configuration Manager API* endpoint to list the\navailable transformations:\n\n`GET /configuration/v1/transformations`\n\nIt returns the following JSON with the available *Transformations* and its\ncapabilities: \n\n {\n \"transformations\": [\n {\n \"name\": \"eventChange\",\n \"displayName\": \"MDE Event Change\",\n \"description\": \"Monitors the value of one or more tag that has a common group key. Fires an event whenever any of the contributing tags changes its value\",\n \"disabled\": false,\n \"sample\": {\n \"keyExpression\": {\n \"displayName\": \"Key Expression\",\n \"description\": \"A SpEL expression that extracts the group key from the MDE message.proto which groups one or more tags as one unit whose values will be monitored for a change. The key must evaluate to a string\",\n \"value\": \"#message['tagName']\"\n },\n \"valueExpression\": {\n \"displayName\": \"Value Expression\",\n \"description\": \"A SpEL expression that extracts the value from the MDE message.proto to be monitored for a change. The value must evaluate to a string\",\n \"value\": \"#message['data']['numeric'].toString()\"\n }\n }\n },\n {\n \"name\": \"window\",\n \"displayName\": \"MDE Numeric Value Windowing\",\n \"description\": \"Create a periodic stats event that provides values such as average, min, and max for an expression that extracts a numeric value from the tag messages\",\n \"disabled\": false,\n \"sample\": {\n \"durationMinutes\": {\n \"displayName\": \"Window Duration in Minutes\",\n \"description\": \"A positive integer that represents how long the window will summarize events before producing the summary tag, this is in the granularity of minutes and it cannot be higher than 2 hours\",\n \"value\": \"1\"\n },\n \"valueExpression\": {\n \"displayName\": \"Value Expression\",\n \"description\": \"A SpEL expression that extracts the value from the MDE message.proto to be used as the numeric value of the tags that will be summarized. The value must evaluate to a number, and it's internally out\",\n \"value\": \"#message['data']['numeric']\"\n },\n \"id\": {\n \"displayName\": \"Window Unique ID\",\n \"description\": \"A unique ID that represents this instance of the window transformation, this should be unique if you are adding multiple instances of the window transformation to the same type\",\n \"value\": \"1-min-window\"\n }\n }\n }\n ]\n }\n\n### Console\n\nUsing the web interface, under the **'Types'** section, open the *Edit type version*\nmenu for a given type and expand the *Transform \\& connect* section of the panel.\n\nAssociating a transformation to a Type\n--------------------------------------\n\nAssociating any existing Type to an available *Transformation* , transforms\nall Tags of that Type. The result of the transformation is ingested as\nnew Tags in MDE of the *Transformed Types*. The\ntransformed Tagnames have a new name derived from the original Tagname\nand the name of the transformation.\n\nThese are the steps to associate a Type to a *Transformation*: \n\n### REST\n\nTo associate a transformation to a give Type call the `PATCH`\nmethod in this endpoint of the *Configuration Manager API*:\n\n`PATCH /configuration/v1/types/`\u003cvar translate=\"no\"\u003eTYPE_NAME\u003c/var\u003e`/versions/`\u003cvar translate=\"no\"\u003eVERSION_NUMBER\u003c/var\u003e\n\nThe *Body* of the request should contain the list of *Transformations* to be\nattached to the Type and the value for its *Configuration Parameters*: \n\n {\n \"transformations\": [\n {\n \"window\": {\n \"id\": \"\u003cvar translate=\"no\"\u003eWINDOW_TRANSFORMATION_IDE\u003c/var\u003e\",\n \"durationMinutes\": \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-err\"\u003eWINDOW_TRANSFORMATION_MINUTES\u003c/span\u003e\u003c/var\u003e,\n \"valueExpression\": \"\u003cvar translate=\"no\"\u003eVALUE_EXPRESSION_VALUE\u003c/var\u003e\"\n }\n },\n {\n \"eventChange\": {\n \"keyExpression\": \"\u003cvar translate=\"no\"\u003eKEY_EXPRESSION_VALUE\u003c/var\u003e\",\n \"valueExpression\": \"\u003cvar translate=\"no\"\u003eVALUE_EXPRESSION_VALUE\u003c/var\u003e\"\n }\n }\n ]\n }\n\nReplace the following items in the previous sample call:\n\n- `TYPE_NAME`: the name of the Type to be modified.\n- `VERSION_NUMBER`: the version of the Type to be modified.\n\nReplace the following items in the *Body* for configuring a Window\nTransformation:\n\n- `WINDOW_TRANSFORMATION_ID`: a unique identifier of the transformation that will also be attached to the original tag names after being processed by the transformation.\n- `WINDOW_TRANSFORMATION_MINUTES`: the duration, in minutes, of the window to apply\n- `VALUE_EXPRESSION_VALUE`: the element of the tag proto that will be monitored as value field. For a numeric default tag is `#message['data']['numeric']`.\n\nReplace the following items in the *Body* for configuring an Event Change\nTransformation:\n\n- `KEY_EXPRESSION_VALUE`: the element in the tag proto that is used to group tags that should be monitored together. To monitor a single tag should be `#message['tagName']`\n- `VALUE_EXPRESSION_VALUE`: the element in the tag proto that is used as to monitor the value change. Needs to resolve to a `String`. In a numeric default tag is `#message['data']['numeric'].toString()`.\n\n### Console\n\n1. To associate a *Transformation* to a Type open the **'Edit type version'**\n web interface section in the **'Type'** tab.\n\n2. Expand the **'Transform \\& connect'** section:\n\n3. To add a *Transformation* select the required transformation from the list\n and click **'ADD'**:\n\n4. Then proceed to provide the required parameters and click **'SAVE'**:\n\nFor the **Window Transformation** the parameters are:\n\n- `WINDOW_TRANSFORMATION_ID`: a unique identifier of the transformation that will also be attached to the original tag names after being processed by the transformation.\n- `WINDOW_TRANSFORMATION_MINUTES`: the duration, in minutes, of the window to apply\n- `VALUE_EXPRESSION_VALUE`: the element of the tag proto that will be monitored as value field. For a numeric default tag is `#message['data']['numeric']`.\n\nFor the **Event Change Transformation** the parameters are:\n\n- `KEY_EXPRESSION_VALUE`: the element in the tag proto that is used to group tags that should be monitored together. To monitor a single tag should be `#message['tagName']`\n- `VALUE_EXPRESSION_VALUE`: the element in the tag proto that is used as to monitor the value change. Needs to resolve to a `String`. In a numeric default tag is `#message['data']['numeric'].toString()`."]]