{"id":12670,"date":"2023-07-27T15:01:25","date_gmt":"2023-07-27T13:01:25","guid":{"rendered":"https:\/\/mjr.gmbh\/?p=12670"},"modified":"2024-03-20T14:10:28","modified_gmt":"2024-03-20T13:10:28","slug":"infor-xa-systemlink-with-node-red","status":"publish","type":"post","link":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/","title":{"rendered":"Infor XA SystemLink with Node-RED"},"content":{"rendered":"<section class=\"l-section wpb_row height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_flex valign_top type_default stacking_default\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p><span style=\"font-size: 14pt;\">This article explains how to use Infor<strong> XA SystemLink<\/strong> with <strong>Node-RED<\/strong>.<br \/>\nTo understand this blog, you will need to have skills in SystemLink and <strong>Node-RED <\/strong>as well. This is not a tutorial for Node-RED. You should be familiar with Node-RED. We describe a very simple business case, an inquiry from item revision, but we hope it explains enough to use it as a starting point for own developments. Feel free to contact us for further questions.<\/span><\/p>\n<\/div><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p style=\"text-align: left;\"><span style=\"font-size: 20pt;\">You have any questions?<\/span><\/p>\n<\/div><\/div>[vc_btn title=&#8220;Go to our contact form&#8220; i_icon_fontawesome=&#8220;fas fa-file-signature&#8220; add_icon=&#8220;true&#8220; link=&#8220;url:%2Fen%2Fcontact&#8220; el_class=&#8220;btn-red&#8220;]<div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2><span style=\"font-size: 14pt;\">About <strong>Node-RED<\/strong><\/span><\/h2>\n<p><span style=\"font-size: 14pt;\">Node-RED is a low-code programming tool for bringing together hardware devices, APIs and online services. It brings a browser-based flow editor that makes it easy to wire together flows by using a wide range of nodes in the palette. <\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Node-RED is Open Source and provided by the OpenJS Foundation. The flow-based programming was already invented in the 1970s by J. Paul Morrison. The first Node-RED project was started in 2013 as a side-project by two developers of the IBM\u2019s Emerging Technology Services group.\u00a0<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">More information about Node-RED you can find also at\u00a0<a href=\"https:\/\/nodered.org\/\" target=\"_blank\" rel=\"noopener\">nodered.org<\/a><\/span><\/p>\n<\/div><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p><span style=\"font-size: 14pt;\"><strong>Please note:<\/strong> Node-RED is a very powerful and free tool to connect systems. There are nodes available for many different systems, hardware and software. Node-RED has some limitations, so for your business cases, please be aware of these. For complex use cases and a seamless integration with Infor and external applications, we still recommend Infor OS as the better choice. And please apologize, some of the screenshots contain German content. We are using German browser settings.<\/span><\/p>\n<\/div><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h3><span style=\"font-size: 14pt;\"><strong>Required nodes<\/strong> <\/span><\/h3>\n<p><span style=\"font-size: 14pt;\">You need to add some <strong>additional nodes<\/strong> to your standard Node-RED instance. Here is what you need:<\/span><\/p>\n<ul>\n<li><span style=\"font-size: 14pt;\"><em>jsonpath<\/em> is used to extract content from the json-message<\/span><\/li>\n<li><span style=\"font-size: 14pt;\">We made it fancy, so we are using a dashboard for this demo. Please add the needed nodes to your Node-RED instance.<\/span><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12688\" title=\"XA NodeRed Dashboard\" src=\"https:\/\/mjr.gmbh\/wp-content\/uploads\/XA_NodeRed_Dashboard.png\" alt=\"XA NodeRed Dashboard\" width=\"180\" height=\"271\" srcset=\"https:\/\/www.mjr.gmbh\/wp-content\/uploads\/XA_NodeRed_Dashboard.png 325w, https:\/\/www.mjr.gmbh\/wp-content\/uploads\/XA_NodeRed_Dashboard-199x300.png 199w\" sizes=\"auto, (max-width: 180px) 100vw, 180px\" \/><\/p>\n<\/div><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h3><strong>The flow<\/strong><\/h3>\n<p><a ref=\"magnificPopup\" href=\"https:\/\/mjr.gmbh\/wp-content\/uploads\/XA-Node-Red-flow.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12692 size-full\" title=\"XA Node-RED flow\" src=\"https:\/\/mjr.gmbh\/wp-content\/uploads\/XA-Node-Red-flow.png\" alt=\"XA Node-RED flow\" width=\"1582\" height=\"432\" srcset=\"https:\/\/www.mjr.gmbh\/wp-content\/uploads\/XA-Node-Red-flow.png 1582w, https:\/\/www.mjr.gmbh\/wp-content\/uploads\/XA-Node-Red-flow-300x82.png 300w, https:\/\/www.mjr.gmbh\/wp-content\/uploads\/XA-Node-Red-flow-1024x280.png 1024w\" sizes=\"auto, (max-width: 1582px) 100vw, 1582px\" \/><\/a><\/p>\n<p><span style=\"font-size: 14pt;\">You can start the flow manually through the inject node or through the button on the dashboard. Next step is to build the complete System-Link request. To make it easier to handle, we build five components, which are joined at the end to one single request. I added the delays to simplify debugging (just add a connection to a debug node to the output of the delays). The join node Build SLR creates a string from the five components. <\/span><\/p>\n<p><span style=\"font-size: 14pt;\">The SystemLink header is static:<\/span><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"classic\" data-enlighter-linenumbers=\"false\">msg.payload = \"SystemLinkRequest=&lt;!DOCTYPE System-Link SYSTEM 'SystemLinkRequest.dtd'&gt;&lt;System-Link version='1.0' hostVersion='1.0' formatForDisplay='false' includeNewlines='false' useTimeZone='default' convertForSender='false'&gt;\";<\/code><\/p>\n<p><span style=\"font-size: 14pt;\">The System-Login is hardcoded with credentials (please don\u2019t tell anybody our top secret password):<\/span><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"classic\" data-enlighter-linenumbers=\"false\">msg.payload = \"&lt;Login userId='AMAPICS' password='AMAPICS' maxIdle='900000'\u00a0 properties='com.pjx.cas.domain.EnvironmentId=DZ, com.pjx.cas.domain.SystemName=MJR400.MJRABER.LOCAL,com.pjx.cas.user.LanguageId=en'\/&gt;\";<\/code><\/p>\n<p><span style=\"font-size: 14pt;\">The SystemLink-Request header is static (parameters need to be adjusted for your context):<\/span><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"classic\" data-enlighter-linenumbers=\"false\">msg.payload = \"&lt;Login userId='AMAPICS' password='AMAPICS' maxIdle='900000' properties='com.pjx.cas.domain.EnvironmentId=DZ, com.pjx.cas.domain.SystemName=MJR400.MJRABER.LOCAL,com.pjx.cas.user.LanguageId=en'\/&gt;\";<\/code><\/p>\n<p><span style=\"font-size: 14pt;\">The SystemLink QueryObject is built from flow-variables:<\/span><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"classic\" data-enlighter-linenumbers=\"false\">msg.payload = \"&lt;QueryObject name='queryObject_ItemRevision_Default' domainClass='com.mapics.epdm.ItemRevision' includeMetaData='true'&gt;&lt;Pql&gt;&lt;![CDATA[SELECT unitWeight, weightUm WHERE site = '\" + flow.get(\"site\") + \"' AND item = '\" + flow.get(\"item\") + \"' AND revision = '\" + flow.get(\"revision\") + \"' ]]&gt;&lt;\/Pql&gt;&lt;\/QueryObject&gt;\";<\/code><\/p>\n<p><span style=\"font-size: 14pt;\">The flow variables can be set interactively from the input fields on the dashboard.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">The EndRequest is static:<\/span><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"classic\">msg.payload = \"&lt;\/Request&gt;&lt;\/System-Link&gt;\";<\/code><\/p>\n<p><span style=\"font-size: 14pt;\">This is a very simple setup, to make it easy to understand. In a real world, it should be more sophisticated with dynamic content and encrypted credentials. In the next node <em>Send post to XA<\/em>, we send a <em>http request<\/em> to XA:<\/span><\/p>\n<\/div><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p><span style=\"font-size: 14pt;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12727 size-full\" title=\"XA Node-RED http post\" src=\"https:\/\/mjr.gmbh\/wp-content\/uploads\/XA-Node-Red-http-post1.png\" alt=\"XA Node-RED http post\" width=\"475\" height=\"383\" srcset=\"https:\/\/www.mjr.gmbh\/wp-content\/uploads\/XA-Node-Red-http-post1.png 475w, https:\/\/www.mjr.gmbh\/wp-content\/uploads\/XA-Node-Red-http-post1-300x242.png 300w\" sizes=\"auto, (max-width: 475px) 100vw, 475px\" \/><\/span><\/p>\n<p><span style=\"font-size: 14pt;\">The URL looks like: <\/span><em><span style=\"text-decoration: underline;\">http:\/\/your_ibm_i:36001\/SystemLink\/servlet\/SystemLinkServlet<\/span><\/em><br \/>\n<span style=\"font-size: 14pt;\">(to be adjusted)<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">In the next step (the xml node) we convert the xml to be able to filter the content in the jsonpath node. For this demo we converted text\/string, numeric\/number and Boolean.<br \/>\nHere are the jsonpath expressions and the functions to extract and format the System-Link response:<\/span><\/p>\n<table style=\"height: 156px;\" width=\"878\">\n<tbody>\n<tr>\n<td>$.System-Link.LoginResponse[0].$.actionSucceeded<\/td>\n<td>msg.payload = Boolean(msg.payload);<\/td>\n<\/tr>\n<tr>\n<td>$.System-Link.Response[0].QueryObjectResponse[0].DomainEntity[0].Property[1].Value[0]<\/td>\n<td>msg.payload = String(msg.payload);<\/td>\n<\/tr>\n<tr>\n<td>$.System-Link.Response[0].QueryObjectResponse[0].DomainEntity[0].Property[0].Value[0]<\/td>\n<td>msg.payload = Number(msg.payload);<\/td>\n<\/tr>\n<tr>\n<td>$.System-Link.Response[0].QueryObjectResponse[0].Exception[0].Message[0].Text[0]<\/td>\n<td>msg.payload = String(msg.payload);<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-size: 14pt;\">For this simple example, we only returned four values:<\/span><\/p>\n<ul>\n<li><span style=\"font-size: 14pt;\"><em>actionSucceeded <\/em>as boolean. In a real use case, it would make sense to evaluate hasErrors and hasWarnings from the response.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\"><em>Weight <\/em>and <em>weightUM<\/em> as number\/string returns the value of these fields in the item revision record.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\">In case of <em>exceptions<\/em>, we show these error message as text.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-size: 14pt;\">You can download the full flow here:<\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">[\r\n    {\r\n        \"id\": \"74891ed2e91a2d14\",\r\n        \"type\": \"tab\",\r\n        \"label\": \"XA SystemLink sample\",\r\n        \"disabled\": false,\r\n        \"info\": \"\",\r\n        \"env\": []\r\n    },\r\n    {\r\n        \"id\": \"f246af62619c7dc9\",\r\n        \"type\": \"http request\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Send Post to XA\",\r\n        \"method\": \"POST\",\r\n        \"ret\": \"txt\",\r\n        \"paytoqs\": \"ignore\",\r\n        \"url\": \"http:\/\/mjr400.mjraber.local:36001\/SystemLink\/servlet\/SystemLinkServlet\",\r\n        \"tls\": \"\",\r\n        \"persist\": false,\r\n        \"proxy\": \"\",\r\n        \"insecureHTTPParser\": false,\r\n        \"authType\": \"\",\r\n        \"senderr\": false,\r\n        \"headers\": [],\r\n        \"credentials\": {},\r\n        \"x\": 1200,\r\n        \"y\": 260,\r\n        \"wires\": [\r\n            [\r\n                \"45c5a880bfd8896c\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"d9e5acb45454516e\",\r\n        \"type\": \"ui_button\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"\",\r\n        \"group\": \"62444b9c83bfec34\",\r\n        \"order\": 7,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"passthru\": false,\r\n        \"label\": \"Query\",\r\n        \"tooltip\": \"\",\r\n        \"color\": \"\",\r\n        \"bgcolor\": \"\",\r\n        \"className\": \"\",\r\n        \"icon\": \"\",\r\n        \"payload\": \"\",\r\n        \"payloadType\": \"date\",\r\n        \"topic\": \"topic\",\r\n        \"topicType\": \"msg\",\r\n        \"x\": 170,\r\n        \"y\": 340,\r\n        \"wires\": [\r\n            [\r\n                \"dc7c37aee3718d67\",\r\n                \"94125711f2b033f6\",\r\n                \"bbe7c97d4bb797e7\",\r\n                \"b310623c4cacf39f\",\r\n                \"6895aaf02e254070\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"5768b79b2cd34725\",\r\n        \"type\": \"join\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Build SLR (join)\",\r\n        \"mode\": \"custom\",\r\n        \"build\": \"string\",\r\n        \"property\": \"payload\",\r\n        \"propertyType\": \"msg\",\r\n        \"key\": \"topic\",\r\n        \"joiner\": \"\",\r\n        \"joinerType\": \"str\",\r\n        \"accumulate\": false,\r\n        \"timeout\": \"\",\r\n        \"count\": \"5\",\r\n        \"reduceRight\": false,\r\n        \"reduceExp\": \"\",\r\n        \"reduceInit\": \"\",\r\n        \"reduceInitType\": \"\",\r\n        \"reduceFixup\": \"\",\r\n        \"x\": 1020,\r\n        \"y\": 260,\r\n        \"wires\": [\r\n            [\r\n                \"f246af62619c7dc9\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"9240d2f0255ab0e5\",\r\n        \"type\": \"delay\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Delay 100ms\",\r\n        \"pauseType\": \"delay\",\r\n        \"timeout\": \"100\",\r\n        \"timeoutUnits\": \"milliseconds\",\r\n        \"rate\": \"1\",\r\n        \"nbRateUnits\": \"1\",\r\n        \"rateUnits\": \"second\",\r\n        \"randomFirst\": \"1\",\r\n        \"randomLast\": \"5\",\r\n        \"randomUnits\": \"seconds\",\r\n        \"drop\": false,\r\n        \"allowrate\": false,\r\n        \"outputs\": 1,\r\n        \"x\": 790,\r\n        \"y\": 180,\r\n        \"wires\": [\r\n            [\r\n                \"5768b79b2cd34725\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"3776d52305f30c32\",\r\n        \"type\": \"delay\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Delay 200ms\",\r\n        \"pauseType\": \"delay\",\r\n        \"timeout\": \"200\",\r\n        \"timeoutUnits\": \"milliseconds\",\r\n        \"rate\": \"1\",\r\n        \"nbRateUnits\": \"1\",\r\n        \"rateUnits\": \"second\",\r\n        \"randomFirst\": \"1\",\r\n        \"randomLast\": \"5\",\r\n        \"randomUnits\": \"seconds\",\r\n        \"drop\": false,\r\n        \"allowrate\": false,\r\n        \"outputs\": 1,\r\n        \"x\": 790,\r\n        \"y\": 220,\r\n        \"wires\": [\r\n            [\r\n                \"5768b79b2cd34725\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"9754a115d287269e\",\r\n        \"type\": \"delay\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Delay 300ms\",\r\n        \"pauseType\": \"delay\",\r\n        \"timeout\": \"300\",\r\n        \"timeoutUnits\": \"milliseconds\",\r\n        \"rate\": \"1\",\r\n        \"nbRateUnits\": \"1\",\r\n        \"rateUnits\": \"second\",\r\n        \"randomFirst\": \"1\",\r\n        \"randomLast\": \"5\",\r\n        \"randomUnits\": \"seconds\",\r\n        \"drop\": false,\r\n        \"allowrate\": false,\r\n        \"outputs\": 1,\r\n        \"x\": 790,\r\n        \"y\": 260,\r\n        \"wires\": [\r\n            [\r\n                \"5768b79b2cd34725\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"0d1d9db27eddadda\",\r\n        \"type\": \"delay\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Delay 400ms\",\r\n        \"pauseType\": \"delay\",\r\n        \"timeout\": \"400\",\r\n        \"timeoutUnits\": \"milliseconds\",\r\n        \"rate\": \"1\",\r\n        \"nbRateUnits\": \"1\",\r\n        \"rateUnits\": \"second\",\r\n        \"randomFirst\": \"1\",\r\n        \"randomLast\": \"5\",\r\n        \"randomUnits\": \"seconds\",\r\n        \"drop\": false,\r\n        \"allowrate\": false,\r\n        \"outputs\": 1,\r\n        \"x\": 790,\r\n        \"y\": 300,\r\n        \"wires\": [\r\n            [\r\n                \"5768b79b2cd34725\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"ba832b4865973a3e\",\r\n        \"type\": \"delay\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Delay 500ms\",\r\n        \"pauseType\": \"delay\",\r\n        \"timeout\": \"500\",\r\n        \"timeoutUnits\": \"milliseconds\",\r\n        \"rate\": \"1\",\r\n        \"nbRateUnits\": \"1\",\r\n        \"rateUnits\": \"second\",\r\n        \"randomFirst\": \"1\",\r\n        \"randomLast\": \"5\",\r\n        \"randomUnits\": \"seconds\",\r\n        \"drop\": false,\r\n        \"allowrate\": false,\r\n        \"outputs\": 1,\r\n        \"x\": 790,\r\n        \"y\": 340,\r\n        \"wires\": [\r\n            [\r\n                \"5768b79b2cd34725\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"fb709929bad8b24e\",\r\n        \"type\": \"inject\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Manual start\",\r\n        \"props\": [\r\n            {\r\n                \"p\": \"payload\"\r\n            },\r\n            {\r\n                \"p\": \"topic\",\r\n                \"vt\": \"str\"\r\n            }\r\n        ],\r\n        \"repeat\": \"\",\r\n        \"crontab\": \"\",\r\n        \"once\": false,\r\n        \"onceDelay\": 0.1,\r\n        \"topic\": \"\",\r\n        \"payload\": \"\",\r\n        \"payloadType\": \"date\",\r\n        \"x\": 190,\r\n        \"y\": 180,\r\n        \"wires\": [\r\n            [\r\n                \"6895aaf02e254070\",\r\n                \"b310623c4cacf39f\",\r\n                \"bbe7c97d4bb797e7\",\r\n                \"94125711f2b033f6\",\r\n                \"dc7c37aee3718d67\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"dc7c37aee3718d67\",\r\n        \"type\": \"function\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"SL-Header (static)\",\r\n        \"func\": \"msg.payload = \\\"SystemLinkRequest=&lt;!DOCTYPE System-Link SYSTEM 'SystemLinkRequest.dtd'&gt;&lt;System-Link version='1.0' hostVersion='1.0' formatForDisplay='false' includeNewlines='false' useTimeZone='default' convertForSender='false'&gt;\\\";\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 450,\r\n        \"y\": 180,\r\n        \"wires\": [\r\n            [\r\n                \"9240d2f0255ab0e5\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"94125711f2b033f6\",\r\n        \"type\": \"function\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"SL-Login (credentials hardcoded)\",\r\n        \"func\": \"msg.payload = \\\"&lt;Login userId='AMAPICS' password='AMAPICS' maxIdle='900000' properties='com.pjx.cas.domain.EnvironmentId=DZ,com.pjx.cas.domain.SystemName=MJR400.MJRABER.LOCAL,com.pjx.cas.user.LanguageId=en'\/&gt;\\\";\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 500,\r\n        \"y\": 220,\r\n        \"wires\": [\r\n            [\r\n                \"3776d52305f30c32\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"bbe7c97d4bb797e7\",\r\n        \"type\": \"function\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"SLR-Header (static)\",\r\n        \"func\": \"msg.payload = \\\"&lt;Request sessionHandle='*current' workHandle='*new' broker='EJB' maxIdle='1000'&gt;\\\";\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 450,\r\n        \"y\": 260,\r\n        \"wires\": [\r\n            [\r\n                \"9754a115d287269e\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"b310623c4cacf39f\",\r\n        \"type\": \"function\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"SL-QueryObject (data from flow variable)\",\r\n        \"func\": \"msg.payload = \\\"&lt;QueryObject name='queryObject_ItemRevision_Default' domainClass='com.mapics.epdm.ItemRevision' includeMetaData='true'&gt;&lt;Pql&gt;&lt;![CDATA[SELECT unitWeight, weightUm WHERE site = '\\\" + flow.get(\\\"site\\\") + \\\"' AND item = '\\\" + flow.get(\\\"item\\\") + \\\"' AND revision = '\\\" + flow.get(\\\"revision\\\") + \\\"' ]]&gt;&lt;\/Pql&gt;&lt;\/QueryObject&gt;\\\";\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 520,\r\n        \"y\": 300,\r\n        \"wires\": [\r\n            [\r\n                \"0d1d9db27eddadda\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"6895aaf02e254070\",\r\n        \"type\": \"function\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"SL-EndRequest (static)\",\r\n        \"func\": \"msg.payload = \\\"&lt;\/Request&gt;&lt;\/System-Link&gt;\\\";\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 470,\r\n        \"y\": 340,\r\n        \"wires\": [\r\n            [\r\n                \"ba832b4865973a3e\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"45c5a880bfd8896c\",\r\n        \"type\": \"xml\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"xml to json\",\r\n        \"property\": \"payload\",\r\n        \"attr\": \"\",\r\n        \"chr\": \"\",\r\n        \"x\": 1370,\r\n        \"y\": 260,\r\n        \"wires\": [\r\n            [\r\n                \"11921d2af42f41ad\",\r\n                \"f2c42bfea40312c4\",\r\n                \"a8c694e3ee3b96b5\",\r\n                \"b1e2b0cafb2a8b68\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"11921d2af42f41ad\",\r\n        \"type\": \"jsonpath\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"expression\": \"$.System-Link.LoginResponse[0].$.actionSucceeded\",\r\n        \"split\": false,\r\n        \"name\": \"Action succeeded?\",\r\n        \"x\": 950,\r\n        \"y\": 400,\r\n        \"wires\": [\r\n            [\r\n                \"a1400141bfbeffae\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"f2c42bfea40312c4\",\r\n        \"type\": \"jsonpath\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"expression\": \"$.System-Link.Response[0].QueryObjectResponse[0].DomainEntity[0].Property[0].Value[0]\",\r\n        \"split\": false,\r\n        \"name\": \"Get weight from response\",\r\n        \"x\": 970,\r\n        \"y\": 480,\r\n        \"wires\": [\r\n            [\r\n                \"3125af29bc1407bb\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"8203e1f915ccf108\",\r\n        \"type\": \"ui_text\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"group\": \"62444b9c83bfec34\",\r\n        \"order\": 5,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"name\": \"\",\r\n        \"label\": \"Weight\",\r\n        \"format\": \"{{msg.payload}}\",\r\n        \"layout\": \"row-spread\",\r\n        \"className\": \"\",\r\n        \"style\": false,\r\n        \"font\": \"\",\r\n        \"fontSize\": 16,\r\n        \"color\": \"#000000\",\r\n        \"x\": 1550,\r\n        \"y\": 480,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"3125af29bc1407bb\",\r\n        \"type\": \"function\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"JSON to numeric\",\r\n        \"func\": \"msg.payload = Number(msg.payload);\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 1230,\r\n        \"y\": 480,\r\n        \"wires\": [\r\n            [\r\n                \"8203e1f915ccf108\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"a6dd3d27a6eb5431\",\r\n        \"type\": \"ui_led\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"order\": 4,\r\n        \"group\": \"62444b9c83bfec34\",\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"label\": \"Action succeeded\",\r\n        \"labelPlacement\": \"left\",\r\n        \"labelAlignment\": \"left\",\r\n        \"colorForValue\": [\r\n            {\r\n                \"color\": \"#ff0000\",\r\n                \"value\": \"false\",\r\n                \"valueType\": \"bool\"\r\n            },\r\n            {\r\n                \"color\": \"#008000\",\r\n                \"value\": \"true\",\r\n                \"valueType\": \"bool\"\r\n            }\r\n        ],\r\n        \"allowColorForValueInMessage\": false,\r\n        \"shape\": \"circle\",\r\n        \"showGlow\": true,\r\n        \"name\": \"Action succeeded LED\",\r\n        \"x\": 1500,\r\n        \"y\": 400,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"a1400141bfbeffae\",\r\n        \"type\": \"function\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"JSON to boolean\",\r\n        \"func\": \"msg.payload = Boolean(msg.payload);\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 1230,\r\n        \"y\": 400,\r\n        \"wires\": [\r\n            [\r\n                \"a6dd3d27a6eb5431\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"a8c694e3ee3b96b5\",\r\n        \"type\": \"jsonpath\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"expression\": \"$.System-Link.Response[0].QueryObjectResponse[0].DomainEntity[0].Property[1].Value[0]\",\r\n        \"split\": false,\r\n        \"name\": \"Get UM from response\",\r\n        \"x\": 960,\r\n        \"y\": 440,\r\n        \"wires\": [\r\n            [\r\n                \"a3971fc3e3889ed1\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"9a3c70043e611798\",\r\n        \"type\": \"ui_text\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"group\": \"62444b9c83bfec34\",\r\n        \"order\": 6,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"name\": \"UM\",\r\n        \"label\": \"WeightUM\",\r\n        \"format\": \"{{msg.payload}}\",\r\n        \"layout\": \"row-spread\",\r\n        \"className\": \"\",\r\n        \"style\": false,\r\n        \"font\": \"\",\r\n        \"fontSize\": 16,\r\n        \"color\": \"#000000\",\r\n        \"x\": 1550,\r\n        \"y\": 440,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"a3971fc3e3889ed1\",\r\n        \"type\": \"function\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"JSON to string\",\r\n        \"func\": \"msg.payload = String(msg.payload);\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 1220,\r\n        \"y\": 440,\r\n        \"wires\": [\r\n            [\r\n                \"9a3c70043e611798\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"652d6518bffa2178\",\r\n        \"type\": \"ui_text_input\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Site input\",\r\n        \"label\": \"Site\",\r\n        \"tooltip\": \"\",\r\n        \"group\": \"62444b9c83bfec34\",\r\n        \"order\": 1,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"passthru\": false,\r\n        \"mode\": \"text\",\r\n        \"delay\": 300,\r\n        \"topic\": \"\",\r\n        \"sendOnBlur\": true,\r\n        \"className\": \"\",\r\n        \"topicType\": \"str\",\r\n        \"x\": 420,\r\n        \"y\": 400,\r\n        \"wires\": [\r\n            [\r\n                \"8cfc96a9e659602f\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"3cf35ee240823d98\",\r\n        \"type\": \"ui_text_input\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Item input\",\r\n        \"label\": \"Item\",\r\n        \"tooltip\": \"\",\r\n        \"group\": \"62444b9c83bfec34\",\r\n        \"order\": 2,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"passthru\": true,\r\n        \"mode\": \"text\",\r\n        \"delay\": 300,\r\n        \"topic\": \"item\",\r\n        \"sendOnBlur\": true,\r\n        \"className\": \"\",\r\n        \"topicType\": \"flow\",\r\n        \"x\": 420,\r\n        \"y\": 440,\r\n        \"wires\": [\r\n            [\r\n                \"d596afb58324c7b1\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"a38e6df7a472e505\",\r\n        \"type\": \"ui_text_input\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Revision input\",\r\n        \"label\": \"Revision\",\r\n        \"tooltip\": \"\",\r\n        \"group\": \"62444b9c83bfec34\",\r\n        \"order\": 3,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"passthru\": true,\r\n        \"mode\": \"text\",\r\n        \"delay\": 300,\r\n        \"topic\": \"revision\",\r\n        \"sendOnBlur\": true,\r\n        \"className\": \"\",\r\n        \"topicType\": \"flow\",\r\n        \"x\": 440,\r\n        \"y\": 480,\r\n        \"wires\": [\r\n            [\r\n                \"81a492bb258c09f1\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"8cfc96a9e659602f\",\r\n        \"type\": \"function\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Set flow variable\",\r\n        \"func\": \"flow.set(\\\"site\\\", msg.payload);\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 640,\r\n        \"y\": 400,\r\n        \"wires\": [\r\n            []\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"d596afb58324c7b1\",\r\n        \"type\": \"function\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Set flow variable\",\r\n        \"func\": \"flow.set(\\\"item\\\", msg.payload); \\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 640,\r\n        \"y\": 440,\r\n        \"wires\": [\r\n            []\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"81a492bb258c09f1\",\r\n        \"type\": \"function\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"Set flow variable\",\r\n        \"func\": \"flow.set(\\\"revision\\\", msg.payload); \\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 640,\r\n        \"y\": 480,\r\n        \"wires\": [\r\n            []\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"d6319bb04919d609\",\r\n        \"type\": \"ui_text\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"group\": \"62444b9c83bfec34\",\r\n        \"order\": 8,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"name\": \"\",\r\n        \"label\": \"Exception\",\r\n        \"format\": \"{{msg.payload}}\",\r\n        \"layout\": \"col-center\",\r\n        \"className\": \"\",\r\n        \"style\": true,\r\n        \"font\": \"Arial Narrow,Nimbus Sans L,sans-serif\",\r\n        \"fontSize\": \"14\",\r\n        \"color\": \"#000000\",\r\n        \"x\": 1540,\r\n        \"y\": 520,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"b1e2b0cafb2a8b68\",\r\n        \"type\": \"jsonpath\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"expression\": \"$.System-Link.Response[0].QueryObjectResponse[0].Exception[0].Message[0].Text[0]\",\r\n        \"split\": false,\r\n        \"name\": \"Get exception from response\",\r\n        \"x\": 980,\r\n        \"y\": 520,\r\n        \"wires\": [\r\n            [\r\n                \"5191208a5e62a8b8\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"5191208a5e62a8b8\",\r\n        \"type\": \"function\",\r\n        \"z\": \"74891ed2e91a2d14\",\r\n        \"name\": \"JSON to string\",\r\n        \"func\": \"msg.payload = String(msg.payload);\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 1220,\r\n        \"y\": 520,\r\n        \"wires\": [\r\n            [\r\n                \"d6319bb04919d609\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"62444b9c83bfec34\",\r\n        \"type\": \"ui_group\",\r\n        \"name\": \"Infor XA System-Link Demo\",\r\n        \"tab\": \"52cd21947e7bd0fd\",\r\n        \"order\": 1,\r\n        \"disp\": true,\r\n        \"width\": \"6\",\r\n        \"collapse\": false,\r\n        \"className\": \"\"\r\n    },\r\n    {\r\n        \"id\": \"52cd21947e7bd0fd\",\r\n        \"type\": \"ui_tab\",\r\n        \"name\": \"SL-Request XA\",\r\n        \"icon\": \"dashboard\",\r\n        \"disabled\": false,\r\n        \"hidden\": false\r\n    }\r\n]<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 14pt;\">Please note: this is only a simple example or PoC without any warranty. <\/span><\/p>\n<p><span style=\"font-size: 14pt;\">For example: In a real scenario, you would need to handle multiple responses, and not only the first returned path (\u201c[0]\u201d).<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">I hope this helps to implement your first own prototype and more with Node-RED and XA. If you have any further question about this blog post, do not hesitate to contact us directly through this contact form:<br \/>\n<\/span><\/p>\n<\/div><\/div><div class=\"g-cols wpb_row via_flex valign_top type_default stacking_default\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f11206-o1\" lang=\"de-DE\" dir=\"ltr\" data-wpcf7-id=\"11206\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/en\/wp-json\/wp\/v2\/posts\/12670#wpcf7-f11206-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Kontaktformular\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"11206\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.5\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"de_DE\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f11206-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/fieldset>\n<div class=\"contact-form\">\n\t<div class=\"contact-50\">\n\t\t<p>First name*:<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"vorname\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"vorname\" \/><\/span>\n\t\t<\/p>\n\t\t<p>Name*:<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"nachname\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"nachname\" \/><\/span>\n\t\t<\/p>\n\t\t<p>Company*:<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"firma\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"firma\" \/><\/span>\n\t\t<\/p>\n\t\t<p>E-Mail address*:<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"email\" name=\"email\" \/><\/span>\n\t\t<\/p>\n\t<\/div>\n\t<p>Message:<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"message\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" name=\"message\"><\/textarea><\/span>\n\t<\/p>\n<\/div>\n<p><span class=\"wpcf7-form-control-wrap\" data-name=\"acceptance-standard\"><span class=\"wpcf7-form-control wpcf7-acceptance\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"acceptance-standard\" value=\"1\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\">I agree that my data from the contact form will be collected and processed to answer my request. The data will be deleted after the processing of your request has been completed. Note: You can revoke your consent for the future at any time by sending an e-mail to kontakt@mjr.gmbh. Information on the handling of user data can be found in our <a title=\"Datenschutz\" href=\"\/en\/privacy-policy\/\"  target=\"_blank\">Privacy policy<\/a>.<\/span><\/label><\/span><\/span><\/span>\n<\/p>\n<p><span id=\"wpcf7-69f297117710e-wrapper\" class=\"wpcf7-form-control-wrap honeypot-977-wrap\" style=\"display:none !important; visibility:hidden !important;\"><label for=\"wpcf7-69f297117710e-field\" class=\"hp-message\">Bitte lasse dieses Feld leer.<\/label><input id=\"wpcf7-69f297117710e-field\"  class=\"wpcf7-form-control wpcf7-text\" type=\"text\" name=\"honeypot-977\" value=\"\" size=\"40\" tabindex=\"-1\" autocomplete=\"new-password\" \/><\/span>\n<\/p>\n<p><input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Send message\" \/>\n<\/p><input type=\"text\" name=\"tTRKv\" value=\"\" style=\"display: none !important;\" \/><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/section>\n","protected":false},"excerpt":{"rendered":"This article explains how to use Infor XA SystemLink with Node-RED. To understand this blog, you will need to have skills in SystemLink and Node-RED as well. This is not a tutorial for Node-RED. You should be familiar with Node-RED. We describe a very simple business case, an inquiry from item revision, but we hope...","protected":false},"author":18,"featured_media":12705,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[38,8],"tags":[],"tutorial_kategorie":[],"class_list":["post-12670","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-infor-erp-xa-technology","category-post"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Infor XA SystemLink with Node-RED - MJR GmbH<\/title>\n<meta name=\"description\" content=\"This article explains how to work withthe Node-RED Technology and Infor XA SystemLink. You need skills in SystemLink and Node-RED also.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Infor XA SystemLink with Node-RED - MJR GmbH\" \/>\n<meta property=\"og:description\" content=\"This article explains how to work withthe Node-RED Technology and Infor XA SystemLink. You need skills in SystemLink and Node-RED also.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/\" \/>\n<meta property=\"og:site_name\" content=\"MJR GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/mjr.gmbh\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-27T13:01:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-20T13:10:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/mjr.gmbh\/wp-content\/uploads\/Node-RED.png\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"900\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Julia Eberle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschrieben von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Julia Eberle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/infor-erp-xa\\\/infor-erp-xa-technology\\\/infor-xa-systemlink-with-node-red\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/infor-erp-xa\\\/infor-erp-xa-technology\\\/infor-xa-systemlink-with-node-red\\\/\"},\"author\":{\"name\":\"Julia Eberle\",\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/#\\\/schema\\\/person\\\/23a1877cf73a8116c0bcd4b94f9956f8\"},\"headline\":\"Infor XA SystemLink with Node-RED\",\"datePublished\":\"2023-07-27T13:01:25+00:00\",\"dateModified\":\"2024-03-20T13:10:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/infor-erp-xa\\\/infor-erp-xa-technology\\\/infor-xa-systemlink-with-node-red\\\/\"},\"wordCount\":813,\"publisher\":{\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/infor-erp-xa\\\/infor-erp-xa-technology\\\/infor-xa-systemlink-with-node-red\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mjr.gmbh\\\/wp-content\\\/uploads\\\/Node-RED.png\",\"articleSection\":[\"Infor ERP XA Technology\",\"Posts and articles\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/infor-erp-xa\\\/infor-erp-xa-technology\\\/infor-xa-systemlink-with-node-red\\\/\",\"url\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/infor-erp-xa\\\/infor-erp-xa-technology\\\/infor-xa-systemlink-with-node-red\\\/\",\"name\":\"Infor XA SystemLink with Node-RED - MJR GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/infor-erp-xa\\\/infor-erp-xa-technology\\\/infor-xa-systemlink-with-node-red\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/infor-erp-xa\\\/infor-erp-xa-technology\\\/infor-xa-systemlink-with-node-red\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mjr.gmbh\\\/wp-content\\\/uploads\\\/Node-RED.png\",\"datePublished\":\"2023-07-27T13:01:25+00:00\",\"dateModified\":\"2024-03-20T13:10:28+00:00\",\"description\":\"This article explains how to work withthe Node-RED Technology and Infor XA SystemLink. You need skills in SystemLink and Node-RED also.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/infor-erp-xa\\\/infor-erp-xa-technology\\\/infor-xa-systemlink-with-node-red\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/infor-erp-xa\\\/infor-erp-xa-technology\\\/infor-xa-systemlink-with-node-red\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/infor-erp-xa\\\/infor-erp-xa-technology\\\/infor-xa-systemlink-with-node-red\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mjr.gmbh\\\/wp-content\\\/uploads\\\/Node-RED.png\",\"contentUrl\":\"https:\\\/\\\/www.mjr.gmbh\\\/wp-content\\\/uploads\\\/Node-RED.png\",\"width\":900,\"height\":900,\"caption\":\"infor XA Node-RED\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/infor-erp-xa\\\/infor-erp-xa-technology\\\/infor-xa-systemlink-with-node-red\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Infor XA SystemLink with Node-RED\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/\",\"name\":\"MJR GmbH\",\"description\":\"MJR GmbH - Digitalisierung f\u00fcr den Mittelstand\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/#organization\",\"name\":\"MJR GmbH\",\"url\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"MJR GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/mjr.gmbh\",\"https:\\\/\\\/www.instagram.com\\\/mjrgmbh\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/mjrgmbh\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCodd4EtgS-12wppUPRXK8QA\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/#\\\/schema\\\/person\\\/23a1877cf73a8116c0bcd4b94f9956f8\",\"name\":\"Julia Eberle\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/julia-eberle-40751121b\\\/\"],\"url\":\"https:\\\/\\\/www.mjr.gmbh\\\/en\\\/author\\\/jeberle\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Infor XA SystemLink with Node-RED - MJR GmbH","description":"This article explains how to work withthe Node-RED Technology and Infor XA SystemLink. You need skills in SystemLink and Node-RED also.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/","og_locale":"en_US","og_type":"article","og_title":"Infor XA SystemLink with Node-RED - MJR GmbH","og_description":"This article explains how to work withthe Node-RED Technology and Infor XA SystemLink. You need skills in SystemLink and Node-RED also.","og_url":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/","og_site_name":"MJR GmbH","article_publisher":"https:\/\/www.facebook.com\/mjr.gmbh","article_published_time":"2023-07-27T13:01:25+00:00","article_modified_time":"2024-03-20T13:10:28+00:00","og_image":[{"width":900,"height":900,"url":"https:\/\/mjr.gmbh\/wp-content\/uploads\/Node-RED.png","type":"image\/png"}],"author":"Julia Eberle","twitter_card":"summary_large_image","twitter_misc":{"Geschrieben von":"Julia Eberle","Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/#article","isPartOf":{"@id":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/"},"author":{"name":"Julia Eberle","@id":"https:\/\/www.mjr.gmbh\/en\/#\/schema\/person\/23a1877cf73a8116c0bcd4b94f9956f8"},"headline":"Infor XA SystemLink with Node-RED","datePublished":"2023-07-27T13:01:25+00:00","dateModified":"2024-03-20T13:10:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/"},"wordCount":813,"publisher":{"@id":"https:\/\/www.mjr.gmbh\/en\/#organization"},"image":{"@id":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mjr.gmbh\/wp-content\/uploads\/Node-RED.png","articleSection":["Infor ERP XA Technology","Posts and articles"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/","url":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/","name":"Infor XA SystemLink with Node-RED - MJR GmbH","isPartOf":{"@id":"https:\/\/www.mjr.gmbh\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/#primaryimage"},"image":{"@id":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mjr.gmbh\/wp-content\/uploads\/Node-RED.png","datePublished":"2023-07-27T13:01:25+00:00","dateModified":"2024-03-20T13:10:28+00:00","description":"This article explains how to work withthe Node-RED Technology and Infor XA SystemLink. You need skills in SystemLink and Node-RED also.","breadcrumb":{"@id":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/#primaryimage","url":"https:\/\/www.mjr.gmbh\/wp-content\/uploads\/Node-RED.png","contentUrl":"https:\/\/www.mjr.gmbh\/wp-content\/uploads\/Node-RED.png","width":900,"height":900,"caption":"infor XA Node-RED"},{"@type":"BreadcrumbList","@id":"https:\/\/www.mjr.gmbh\/en\/infor-erp-xa\/infor-erp-xa-technology\/infor-xa-systemlink-with-node-red\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/www.mjr.gmbh\/en\/"},{"@type":"ListItem","position":2,"name":"Infor XA SystemLink with Node-RED"}]},{"@type":"WebSite","@id":"https:\/\/www.mjr.gmbh\/en\/#website","url":"https:\/\/www.mjr.gmbh\/en\/","name":"MJR GmbH","description":"MJR GmbH - Digitalisierung f\u00fcr den Mittelstand","publisher":{"@id":"https:\/\/www.mjr.gmbh\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mjr.gmbh\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.mjr.gmbh\/en\/#organization","name":"MJR GmbH","url":"https:\/\/www.mjr.gmbh\/en\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.mjr.gmbh\/en\/#\/schema\/logo\/image\/","url":"","contentUrl":"","caption":"MJR GmbH"},"image":{"@id":"https:\/\/www.mjr.gmbh\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/mjr.gmbh","https:\/\/www.instagram.com\/mjrgmbh","https:\/\/www.linkedin.com\/company\/mjrgmbh\/","https:\/\/www.youtube.com\/channel\/UCodd4EtgS-12wppUPRXK8QA"]},{"@type":"Person","@id":"https:\/\/www.mjr.gmbh\/en\/#\/schema\/person\/23a1877cf73a8116c0bcd4b94f9956f8","name":"Julia Eberle","sameAs":["https:\/\/www.linkedin.com\/in\/julia-eberle-40751121b\/"],"url":"https:\/\/www.mjr.gmbh\/en\/author\/jeberle\/"}]}},"views":5569,"_links":{"self":[{"href":"https:\/\/www.mjr.gmbh\/en\/wp-json\/wp\/v2\/posts\/12670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mjr.gmbh\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mjr.gmbh\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mjr.gmbh\/en\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mjr.gmbh\/en\/wp-json\/wp\/v2\/comments?post=12670"}],"version-history":[{"count":0,"href":"https:\/\/www.mjr.gmbh\/en\/wp-json\/wp\/v2\/posts\/12670\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mjr.gmbh\/en\/wp-json\/wp\/v2\/media\/12705"}],"wp:attachment":[{"href":"https:\/\/www.mjr.gmbh\/en\/wp-json\/wp\/v2\/media?parent=12670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mjr.gmbh\/en\/wp-json\/wp\/v2\/categories?post=12670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mjr.gmbh\/en\/wp-json\/wp\/v2\/tags?post=12670"},{"taxonomy":"tutorial_kategorie","embeddable":true,"href":"https:\/\/www.mjr.gmbh\/en\/wp-json\/wp\/v2\/tutorial_kategorie?post=12670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}