{
  "productInfo" : {
    "company" : "HighByte",
    "product" : "IntelligenceHub",
    "version" : "4.4.0",
    "build" : "2026.3.27.401",
    "stage" : "Release"
  },
  "project" : {
    "version" : 13,
    "connections" : [ {
      "name" : "MsiMessages",
      "uri" : "jdbc.sqlite://sQLite",
      "tags" : [ "PAS_X_MSI" ],
      "writes" : {
        "flattenModeledValues" : false
      },
      "writeThrottle" : {
        "enabled" : false,
        "maxBatchSizePerTarget" : 1000,
        "batchDelay" : {
          "duration" : 20,
          "units" : "Milliseconds"
        }
      },
      "subscriptions" : { },
      "storeForward" : {
        "enabled" : false,
        "maxEntries" : 100,
        "waitOnFailureInterval" : {
          "duration" : 1,
          "units" : "Seconds"
        }
      },
      "settings" : {
        "database" : "..\\appData\\MsiMessages.db",
        "strategy" : {
          "type" : "default"
        }
      }
    }, {
      "name" : "MsiRESTClient",
      "uri" : "rest.client://MSIRestClient",
      "tags" : [ "PAS_X_MSI" ],
      "writes" : {
        "flattenModeledValues" : false
      },
      "writeThrottle" : {
        "enabled" : false,
        "maxBatchSizePerTarget" : 1000,
        "batchDelay" : {
          "duration" : 20,
          "units" : "Milliseconds"
        }
      },
      "subscriptions" : { },
      "storeForward" : {
        "enabled" : false,
        "maxEntries" : 100,
        "waitOnFailureInterval" : {
          "duration" : 1,
          "units" : "Seconds"
        }
      },
      "settings" : {
        "authentication" : {
          "type" : "OAuth 2.0",
          "options" : {
            "grantType" : "password",
            "clientAuthenticationType" : "header",
            "loginURL" : "http://localhost:9000/getAccessToken",
            "username" : "user",
            "password" : {
              "type" : "Encrypted",
              "value" : {
                "keyId" : "1DBpr8WYeMjdvyrWGGn6TA==",
                "iv" : "zWpfJMI7yoXyhk8jeKOXiw==",
                "ciphertext" : "vBOOdidnRtfb9vxBXTVeUA=="
              }
            }
          }
        },
        "baseURL" : "http://localhost:9000"
      }
    } ],
    "inputs" : [ {
      "name" : "ClosedOrderParameterMessages",
      "connection" : "MsiMessages",
      "type" : "jdbc.sqlite",
      "qualifier" : {
        "query" : "select * from Messages where Status = 'Closed'",
        "type" : "Tag"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "EmptyParameters"
      }
    }, {
      "name" : "DeleteAllMessages",
      "connection" : "MsiMessages",
      "type" : "jdbc.sqlite",
      "qualifier" : {
        "query" : "delete from Messages",
        "type" : "Tag"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "EmptyParameters"
      }
    }, {
      "name" : "DeleteOrderParameterMessages",
      "connection" : "MsiMessages",
      "type" : "jdbc.sqlite",
      "qualifier" : {
        "query" : "delete from Messages where _id = {{this._id}}",
        "type" : "Tag"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "inline",
        "model" : {
          "name" : "params",
          "tags" : [ ],
          "attributes" : [ {
            "attributeType" : "Internal",
            "name" : "_id",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "defaultValue" : "{{this._id}}",
            "internalType" : "String"
          } ]
        }
      }
    }, {
      "name" : "DropMessagesTable",
      "connection" : "MsiMessages",
      "type" : "jdbc.sqlite",
      "qualifier" : {
        "query" : "drop table Messages",
        "type" : "Tag"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "EmptyParameters"
      }
    }, {
      "name" : "ErrorOrderParameterMessages",
      "connection" : "MsiMessages",
      "type" : "jdbc.sqlite",
      "qualifier" : {
        "query" : "select * from Messages where status = 'Error'",
        "type" : "Tag"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "EmptyParameters"
      }
    }, {
      "name" : "InProcessOrderParameterMessages",
      "connection" : "MsiMessages",
      "type" : "jdbc.sqlite",
      "qualifier" : {
        "query" : "select * from Messages where Status = 'Inprocess' ORDER BY _timestamp ",
        "type" : "Tag"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "EmptyParameters"
      }
    }, {
      "name" : "OpenOrderParameterMessage",
      "connection" : "MsiMessages",
      "type" : "jdbc.sqlite",
      "qualifier" : {
        "query" : "select * from Messages where Status = 'Open' ORDER BY _timestamp LIMIT {{this.Limit}}",
        "type" : "Tag"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "inline",
        "model" : {
          "name" : "params",
          "tags" : [ ],
          "attributes" : [ {
            "attributeType" : "Internal",
            "name" : "Limit",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "defaultValue" : 1,
            "internalType" : "String"
          } ]
        }
      }
    }, {
      "name" : "SelectAllMessages",
      "connection" : "MsiMessages",
      "type" : "jdbc.sqlite",
      "qualifier" : {
        "query" : "select * from Messages",
        "type" : "Tag"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "EmptyParameters"
      }
    }, {
      "name" : "UpdateAllMessagesToOpen",
      "connection" : "MsiMessages",
      "type" : "jdbc.sqlite",
      "qualifier" : {
        "query" : "Update Messages set status = 'Open'",
        "type" : "Tag"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "EmptyParameters"
      }
    } ],
    "outputs" : [ {
      "name" : "PostMessage",
      "connection" : "MsiRESTClient",
      "type" : "rest.client",
      "qualifier" : {
        "method" : "POST",
        "bodyType" : "raw",
        "breakupArrays" : false,
        "endpointURL" : "/PostMessage",
        "template" : "${value[1..value?length - 2]}",
        "header" : [ {
          "name" : "Content-Type",
          "value" : "application/xml"
        } ],
        "type" : "Tag"
      }
    } ],
    "modeling" : {
      "models" : [ {
        "name" : "MsiMessageContainer_MsiOrderParameterMessage",
        "tags" : [ "PAS_X_MSI" ],
        "attributes" : [ {
          "attributeType" : "Object",
          "name" : "MsiMessageContainer",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "attributes" : [ {
            "attributeType" : "Internal",
            "name" : "messageInstanceId",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Internal",
            "name" : "direction",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Internal",
            "name" : "systemId",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Internal",
            "name" : "messageType",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Internal",
            "name" : "messageContext",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Modeled",
            "name" : "message",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "model" : "MsiOrderParameterMessage"
          } ]
        } ]
      }, {
        "name" : "MsiOrderParameterMessage",
        "tags" : [ "PAS_X_MSI" ],
        "attributes" : [ {
          "attributeType" : "Object",
          "name" : "MsiOrderParameterMessage",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "attributes" : [ {
            "attributeType" : "Internal",
            "name" : "messageInstanceId",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Internal",
            "name" : "direction",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Internal",
            "name" : "messageId",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Internal",
            "name" : "supplierId",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Internal",
            "name" : "deviceTypeId",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Internal",
            "name" : "supplierVersion",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Real64"
          }, {
            "attributeType" : "Internal",
            "name" : "functionalId",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Internal",
            "name" : "orderContext",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Internal",
            "name" : "creationTime",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Internal",
            "name" : "parameter",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Modeled",
            "name" : "BatchNo",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "model" : "ParameterString"
          }, {
            "attributeType" : "Modeled",
            "name" : "DeviceNo",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "model" : "ParameterString"
          }, {
            "attributeType" : "Modeled",
            "name" : "Weight",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "model" : "ParameterFloat"
          } ]
        } ]
      }, {
        "name" : "ParameterBoolean",
        "tags" : [ "PAS_X_MSI" ],
        "attributes" : [ {
          "attributeType" : "Internal",
          "name" : "name",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "dataType",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "defaultValue" : "Boolean",
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "value",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Boolean"
        }, {
          "attributeType" : "Internal",
          "name" : "isQualifier",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "defaultValue" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "acquisitionTime",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "defaultValue" : "2026-01-01 00:00:00,000",
          "internalType" : "Any"
        } ]
      }, {
        "name" : "ParameterDateTime",
        "tags" : [ "PAS_X_MSI" ],
        "attributes" : [ {
          "attributeType" : "Internal",
          "name" : "name",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "dataType",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "value",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "DateTime"
        }, {
          "attributeType" : "Internal",
          "name" : "isQualifier",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Boolean"
        }, {
          "attributeType" : "Internal",
          "name" : "acquisitionTime",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        } ]
      }, {
        "name" : "ParameterDouble",
        "tags" : [ "PAS_X_MSI" ],
        "attributes" : [ {
          "attributeType" : "Internal",
          "name" : "name",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "dataType",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "defaultValue" : "Double",
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "value",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Real32"
        }, {
          "attributeType" : "Internal",
          "name" : "isQualifier",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "defaultValue" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "acquisitionTime",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "defaultValue" : "2026-01-01 00:00:00,000",
          "internalType" : "Any"
        } ]
      }, {
        "name" : "ParameterFloat",
        "tags" : [ "PAS_X_MSI" ],
        "attributes" : [ {
          "attributeType" : "Internal",
          "name" : "name",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "dataType",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "value",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Real32"
        }, {
          "attributeType" : "Internal",
          "name" : "isQualifier",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "acquisitionTime",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        } ]
      }, {
        "name" : "ParameterLong",
        "tags" : [ "PAS_X_MSI" ],
        "attributes" : [ {
          "attributeType" : "Internal",
          "name" : "name",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "dataType",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "defaultValue" : "Long",
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "value",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Int64"
        }, {
          "attributeType" : "Internal",
          "name" : "isQualifier",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "defaultValue" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "acquisitionTime",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "defaultValue" : "2026-01-01 00:00:00,000",
          "internalType" : "Any"
        } ]
      }, {
        "name" : "ParameterString",
        "tags" : [ "PAS_X_MSI" ],
        "attributes" : [ {
          "attributeType" : "Internal",
          "name" : "name",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "dataType",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "value",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "String"
        }, {
          "attributeType" : "Internal",
          "name" : "isQualifier",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        }, {
          "attributeType" : "Internal",
          "name" : "acquisitionTime",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : "Any"
        } ]
      }, {
        "name" : "TransferResult",
        "tags" : [ "PAS_X_MSI" ],
        "attributes" : [ {
          "attributeType" : "Object",
          "name" : "TransferResult",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "attributes" : [ {
            "attributeType" : "Internal",
            "name" : "MsgInstanceId",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Any"
          }, {
            "attributeType" : "Internal",
            "name" : "SystemId",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "String"
          }, {
            "attributeType" : "Internal",
            "name" : "Success",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "internalType" : "Boolean"
          }, {
            "attributeType" : "Internal",
            "name" : "Error",
            "nullable" : true,
            "required" : false,
            "array" : false,
            "internalType" : "String"
          } ]
        } ]
      } ],
      "instances" : [ ]
    },
    "conditions" : [ ],
    "functions" : [ ],
    "tags" : [ {
      "name" : "PAS_X_MSI"
    } ],
    "pipelines" : [ {
      "name" : "DeleteClosedOrderParameterMessages",
      "description" : "Deletes messages whose current state is 'Closed'.",
      "tags" : [ "PAS_X_MSI" ],
      "inputStages" : [ "Read" ],
      "stages" : [ {
        "name" : "Read",
        "display" : {
          "position" : {
            "x" : 240,
            "y" : 0
          }
        },
        "description" : "ReadClosedMessages",
        "config" : {
          "type" : ".ReadConfig",
          "failureOutputs" : [ ],
          "reference" : {
            "type" : "Input",
            "name" : "ClosedOrderParameterMessages",
            "path" : "",
            "params" : { },
            "connectionName" : "MsiMessages"
          }
        },
        "outputs" : [ "ForEach" ]
      }, {
        "name" : "ForEach",
        "display" : {
          "position" : {
            "x" : 690,
            "y" : -105
          },
          "size" : {
            "width" : 1000,
            "height" : 300
          },
          "metadata" : { }
        },
        "description" : "",
        "config" : {
          "type" : ".ForEachLoopConfig",
          "failureOutputs" : [ ],
          "loopOutputs" : [ "DeleteMessages" ],
          "stageTimeout" : {
            "duration" : 30,
            "units" : "Seconds"
          }
        },
        "outputs" : [ ]
      }, {
        "name" : "DeleteMessages",
        "display" : {
          "position" : {
            "x" : 200,
            "y" : 105
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Delete by _id.  Merge read used to keep original message to run a single object.",
        "config" : {
          "type" : ".MergeReadConfig",
          "failureOutputs" : [ ],
          "keyReferences" : [ {
            "location" : "inline",
            "key" : "Delete",
            "reference" : {
              "type" : "Input",
              "name" : "DeleteOrderParameterMessages",
              "path" : "",
              "params" : {
                "_id" : "{{event.value._id}}"
              },
              "connectionName" : "MsiMessages"
            }
          } ],
          "inputValueLocation" : "inline",
          "inputValueKey" : "eventIn"
        },
        "outputs" : [ "Return" ]
      }, {
        "name" : "Return",
        "display" : {
          "position" : {
            "x" : 650,
            "y" : 105
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "",
        "config" : {
          "type" : ".ReturnConfig"
        },
        "outputs" : [ ]
      } ],
      "trackActivity" : true,
      "triggers" : [ {
        "name" : "CronTrigger",
        "display" : {
          "position" : {
            "x" : -450,
            "y" : 0
          }
        },
        "description" : "",
        "config" : {
          "type" : ".TriggerCron",
          "enabled" : true,
          "logging" : "off",
          "schedule" : "*/30 * * * *",
          "timezone" : "utc"
        }
      } ],
      "errorHandler" : {
        "type" : "default"
      }
    }, {
      "name" : "ProcessMSIRequestAndPublishResult",
      "description" : "Query open messages, process them and send them to Pas-X.",
      "tags" : [ "PAS_X_MSI" ],
      "inputStages" : [ "OpenMessages" ],
      "stages" : [ {
        "name" : "OpenMessages",
        "display" : {
          "position" : {
            "x" : 240,
            "y" : 0
          }
        },
        "description" : "Get open orders from SQLite.   Limit parameter provides number of rows to return.",
        "config" : {
          "type" : ".ReadConfig",
          "failureOutputs" : [ ],
          "reference" : {
            "type" : "Input",
            "name" : "OpenOrderParameterMessage",
            "path" : "",
            "params" : {
              "Limit" : null
            },
            "connectionName" : "MsiMessages"
          }
        },
        "outputs" : [ "ForEach" ]
      }, {
        "name" : "ForEach",
        "display" : {
          "position" : {
            "x" : 690,
            "y" : -185
          },
          "size" : {
            "width" : 5950,
            "height" : 460
          },
          "metadata" : { }
        },
        "description" : "",
        "config" : {
          "type" : ".ForEachLoopConfig",
          "failureOutputs" : [ ],
          "loopOutputs" : [ "Filter" ],
          "stageTimeout" : {
            "duration" : 30,
            "units" : "Seconds"
          }
        },
        "outputs" : [ ]
      }, {
        "name" : "PostMessage",
        "display" : {
          "position" : {
            "x" : 3350,
            "y" : 117
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Post to MSI",
        "config" : {
          "type" : ".WriteConfig",
          "failureOutputs" : [ "ErrorStatus" ],
          "references" : [ "{{Connection.MsiRESTClient.PostMessage}}" ],
          "writeReturn" : "completion"
        },
        "outputs" : [ "ClosedStatus" ]
      }, {
        "name" : "WithUpdatedParameters",
        "display" : {
          "position" : {
            "x" : 2450,
            "y" : 117
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Map array of parameters into the parameters key.",
        "config" : {
          "type" : ".ModelConfig",
          "model" : "MsiMessageContainer_MsiOrderParameterMessage",
          "objectName" : "",
          "initExpression" : "",
          "attributes" : [ {
            "name" : "MsiMessageContainer",
            "expression" : {
              "type" : "JavaScript",
              "expression" : "return event.metadata.message.MsiMessageContainer;"
            },
            "attributes" : [ {
              "name" : "messageInstanceId",
              "expression" : {
                "type" : "PipelineStageReference",
                "stageReference" : ""
              }
            }, {
              "name" : "direction",
              "expression" : {
                "type" : "PipelineStageReference",
                "stageReference" : ""
              }
            }, {
              "name" : "systemId",
              "expression" : {
                "type" : "PipelineStageReference",
                "stageReference" : ""
              }
            }, {
              "name" : "messageType",
              "expression" : {
                "type" : "PipelineStageReference",
                "stageReference" : ""
              }
            }, {
              "name" : "messageContext",
              "expression" : {
                "type" : "PipelineStageReference",
                "stageReference" : ""
              }
            }, {
              "name" : "message",
              "expression" : {
                "type" : "JavaScript",
                "expression" : "return event.metadata.message.MsiMessageContainer.message;"
              },
              "attributes" : [ {
                "name" : "MsiOrderParameterMessage",
                "expression" : {
                  "type" : "JavaScript",
                  "expression" : "return event.metadata.message.MsiMessageContainer.message.MsiOrderParameterMessage;"
                },
                "attributes" : [ {
                  "name" : "messageInstanceId",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "direction",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "messageId",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "supplierId",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "deviceTypeId",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "supplierVersion",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "functionalId",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "orderContext",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "creationTime",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "parameter",
                  "expression" : {
                    "type" : "JavaScript",
                    "expression" : "return event.value;"
                  }
                }, {
                  "name" : "BatchNo",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  },
                  "attributes" : [ {
                    "name" : "name",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "dataType",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "value",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "isQualifier",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "acquisitionTime",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  } ]
                }, {
                  "name" : "DeviceNo",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  },
                  "attributes" : [ {
                    "name" : "name",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "dataType",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "value",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "isQualifier",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "acquisitionTime",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  } ]
                }, {
                  "name" : "Weight",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  },
                  "attributes" : [ {
                    "name" : "name",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "dataType",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "value",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "isQualifier",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "acquisitionTime",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  } ]
                } ]
              } ]
            } ]
          } ]
        },
        "outputs" : [ "XMLFormat" ]
      }, {
        "name" : "Filter",
        "display" : {
          "position" : {
            "x" : 200,
            "y" : 185
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Preserve values in metadata.",
        "config" : {
          "type" : ".AttributeFilterConfig",
          "filterOption" : "exclude",
          "filterList" : [ {
            "filterType" : "exactPathFilter",
            "filterText" : "_id"
          }, {
            "filterType" : "exactPathFilter",
            "filterText" : "_name"
          }, {
            "filterType" : "exactPathFilter",
            "filterText" : "_timestamp"
          } ],
          "retainAsMetadata" : true,
          "metadataKey" : "filtered"
        },
        "outputs" : [ "MsiMessageContainer_MsiOrderParameterMessage", "InprocessStatus" ]
      }, {
        "name" : "Return",
        "display" : {
          "position" : {
            "x" : 5600,
            "y" : 185
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "",
        "config" : {
          "type" : ".ReturnConfig"
        },
        "outputs" : [ ]
      }, {
        "name" : "InprocessStatus",
        "display" : {
          "position" : {
            "x" : 3800,
            "y" : 320
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Set status to Inprocess",
        "config" : {
          "type" : ".JavaScriptTransformConfig",
          "transformExpression" : "const status = { \"status\": \"Inprocess\" };\r\nstage.setValue(status);"
        },
        "outputs" : [ "SQLite" ]
      }, {
        "name" : "InprocessNoReturn",
        "display" : {
          "position" : {
            "x" : 4700,
            "y" : 185
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Only return if status is equal to Inprocess.",
        "config" : {
          "type" : ".SwitchConfig",
          "switchCases" : [ {
            "expression" : "return Boolean(event.value.status === 'Inprocess')",
            "outputs" : [ ],
            "description" : "Value Is True"
          }, {
            "expression" : "return true",
            "outputs" : [ "OneSecond" ],
            "description" : "Default"
          } ]
        },
        "outputs" : [ ]
      }, {
        "name" : "MsiMessageContainer_MsiOrderParameterMessage",
        "display" : {
          "position" : {
            "x" : 650,
            "y" : 117
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Model table data to Model",
        "config" : {
          "type" : ".ModelConfig",
          "model" : "MsiMessageContainer_MsiOrderParameterMessage",
          "objectName" : "",
          "initExpression" : "",
          "attributes" : [ {
            "name" : "MsiMessageContainer",
            "expression" : {
              "type" : "JavaScript",
              "expression" : ""
            },
            "attributes" : [ {
              "name" : "messageInstanceId",
              "expression" : {
                "type" : "JavaScript",
                "expression" : "function generateUUID() {\r\n   const hexDigits = '0123456789abcdef';\r\n   let uuid = '';\r\n\r\n   for (let i = 0; i < 36; i++) {\r\n       if (i === 8 || i === 13 || i === 18 || i === 23) {\r\n           uuid += '-';\r\n       } else if (i === 14) {\r\n           uuid += '4'; // Version 4 UUID always has the 4 here\r\n       } else if (i === 19) {\r\n           uuid += hexDigits[(Math.random() * 4 | 0) + 8]; // 8, 9, A, or B\r\n       } else {\r\n           uuid += hexDigits[Math.floor(Math.random() * 16)];\r\n       }\r\n   }\r\n   return uuid;\r\n}\r\n\r\n// Usage\r\nconst randomUUID = generateUUID();\r\nreturn randomUUID;"
              }
            }, {
              "name" : "direction",
              "expression" : {
                "type" : "JavaScript",
                "expression" : "return \"SF_TO_MES\";"
              }
            }, {
              "name" : "systemId",
              "expression" : {
                "type" : "JavaScript",
                "expression" : "return event.value.MsiMessageContainer_systemId;"
              }
            }, {
              "name" : "messageType",
              "expression" : {
                "type" : "JavaScript",
                "expression" : "return event.value.MsiMessageContainer_messageType;"
              }
            }, {
              "name" : "messageContext",
              "expression" : {
                "type" : "JavaScript",
                "expression" : ""
              }
            }, {
              "name" : "message",
              "expression" : {
                "type" : "JavaScript",
                "expression" : ""
              },
              "attributes" : [ {
                "name" : "MsiOrderParameterMessage",
                "expression" : {
                  "type" : "JavaScript",
                  "expression" : ""
                },
                "attributes" : [ {
                  "name" : "messageInstanceId",
                  "expression" : {
                    "type" : "JavaScript",
                    "expression" : "function generateUUID() {\r\n   const hexDigits = '0123456789abcdef';\r\n   let uuid = '';\r\n\r\n   for (let i = 0; i < 36; i++) {\r\n       if (i === 8 || i === 13 || i === 18 || i === 23) {\r\n           uuid += '-';\r\n       } else if (i === 14) {\r\n           uuid += '4'; // Version 4 UUID always has the 4 here\r\n       } else if (i === 19) {\r\n           uuid += hexDigits[(Math.random() * 4 | 0) + 8]; // 8, 9, A, or B\r\n       } else {\r\n           uuid += hexDigits[Math.floor(Math.random() * 16)];\r\n       }\r\n   }\r\n   return uuid;\r\n}\r\n\r\n// Usage\r\nconst randomUUID = generateUUID();\r\nreturn randomUUID;"
                  }
                }, {
                  "name" : "direction",
                  "expression" : {
                    "type" : "JavaScript",
                    "expression" : "return \"SF_TO_MES\";"
                  }
                }, {
                  "name" : "messageId",
                  "expression" : {
                    "type" : "JavaScript",
                    "expression" : "return event.value.MsiMessageContainer_message_MsiOrderParameterMessage_messageId;"
                  }
                }, {
                  "name" : "supplierId",
                  "expression" : {
                    "type" : "JavaScript",
                    "expression" : "return event.value.MsiMessageContainer_message_MsiOrderParameterMessage_supplierId;"
                  }
                }, {
                  "name" : "deviceTypeId",
                  "expression" : {
                    "type" : "JavaScript",
                    "expression" : "return event.value.MsiMessageContainer_message_MsiOrderParameterMessage_deviceTypeId;"
                  }
                }, {
                  "name" : "supplierVersion",
                  "expression" : {
                    "type" : "JavaScript",
                    "expression" : ""
                  }
                }, {
                  "name" : "functionalId",
                  "expression" : {
                    "type" : "JavaScript",
                    "expression" : ""
                  }
                }, {
                  "name" : "orderContext",
                  "expression" : {
                    "type" : "JavaScript",
                    "expression" : ""
                  }
                }, {
                  "name" : "creationTime",
                  "expression" : {
                    "type" : "JavaScript",
                    "expression" : "const date = new Date();\r\nconst pad = (n) => (n < 10 ? '0' + n : n); // Helper function for padding\r\n \r\nconst formattedDate = `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())},${pad(date.getMilliseconds())}`\r\n \r\nreturn formattedDate;"
                  }
                }, {
                  "name" : "parameter",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "BatchNo",
                  "expression" : {
                    "type" : "JavaScript",
                    "expression" : ""
                  },
                  "attributes" : [ {
                    "name" : "name",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return event.value.MsiMessageContainer_message_MsiOrderParameterMessage_BatchNo_name;"
                    }
                  }, {
                    "name" : "dataType",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return event.value.MsiMessageContainer_message_MsiOrderParameterMessage_BatchNo_dataType;"
                    }
                  }, {
                    "name" : "value",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return event.value.MsiMessageContainer_message_MsiOrderParameterMessage_BatchNo_value;"
                    }
                  }, {
                    "name" : "isQualifier",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return Boolean(event.value.MsiMessageContainer_message_MsiOrderParameterMessage_BatchNo_isQualifier);"
                    }
                  }, {
                    "name" : "acquisitionTime",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return event.value.MsiMessageContainer_message_MsiOrderParameterMessage_BatchNo_acquisitionTime;"
                    }
                  } ]
                }, {
                  "name" : "DeviceNo",
                  "expression" : {
                    "type" : "JavaScript",
                    "expression" : ""
                  },
                  "attributes" : [ {
                    "name" : "name",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return event.value.MsiMessageContainer_message_MsiOrderParameterMessage_DeviceNo_name;"
                    }
                  }, {
                    "name" : "dataType",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return event.value.MsiMessageContainer_message_MsiOrderParameterMessage_DeviceNo_dataType;"
                    }
                  }, {
                    "name" : "value",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return event.value.MsiMessageContainer_message_MsiOrderParameterMessage_DeviceNo_value;"
                    }
                  }, {
                    "name" : "isQualifier",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return Boolean(event.value.MsiMessageContainer_message_MsiOrderParameterMessage_DeviceNo_isQualifier);"
                    }
                  }, {
                    "name" : "acquisitionTime",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return event.value.MsiMessageContainer_message_MsiOrderParameterMessage_DeviceNo_acquisitionTime;"
                    }
                  } ]
                }, {
                  "name" : "Weight",
                  "expression" : {
                    "type" : "JavaScript",
                    "expression" : ""
                  },
                  "attributes" : [ {
                    "name" : "name",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return \"Weight\";"
                    }
                  }, {
                    "name" : "dataType",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return \"Double\";"
                    }
                  }, {
                    "name" : "value",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return Math.random() * 10;"
                    }
                  }, {
                    "name" : "isQualifier",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "return true;"
                    }
                  }, {
                    "name" : "acquisitionTime",
                    "expression" : {
                      "type" : "JavaScript",
                      "expression" : "const date = new Date();\r\nconst pad = (n) => (n < 10 ? '0' + n : n); // Helper function for padding\r\n\r\nconst formattedDate = `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())},${date.getMilliseconds()}`\r\n\r\nreturn formattedDate;"
                    }
                  } ]
                } ]
              } ]
            } ]
          } ]
        },
        "outputs" : [ "MsiMessageContainer" ]
      }, {
        "name" : "SQLite",
        "display" : {
          "position" : {
            "x" : 4250,
            "y" : 185
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Update status in SQLite",
        "config" : {
          "type" : ".DynamicWriteConfig",
          "failureOutputs" : [ ],
          "connectionReference" : "{{Connection.MsiMessages}}",
          "qualifier" : {
            "table" : "Messages",
            "writeType" : "update",
            "whereColumn" : "_id = {{event.metadata.filtered._id}}",
            "logAsJSON" : false,
            "createOption" : "off",
            "tableCacheInterval" : {
              "duration" : 1,
              "units" : "Hours"
            },
            "breakupArrays" : false,
            "type" : "Tag"
          },
          "qualifierExpression" : "",
          "writeReturn" : "completion"
        },
        "outputs" : [ "InprocessNoReturn" ]
      }, {
        "name" : "MsiMessageContainer",
        "display" : {
          "position" : {
            "x" : 1100,
            "y" : 117
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Push model to metata.",
        "config" : {
          "type" : ".AttributeFilterConfig",
          "filterOption" : "exclude",
          "filterList" : [ {
            "filterType" : "exactPathFilter",
            "filterText" : "MsiMessageContainer"
          } ],
          "retainAsMetadata" : true,
          "metadataKey" : "message"
        },
        "outputs" : [ "ConvertMsiOrderParameterMessageToArray" ]
      }, {
        "name" : "ConvertMsiOrderParameterMessageToArray",
        "display" : {
          "position" : {
            "x" : 1550,
            "y" : 117
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Get MsiOrderParameterMessage from metadata and separate them into an array.",
        "config" : {
          "type" : ".JSONataTransformConfig",
          "transformExpression" : "$spread(event.metadata.message.MsiMessageContainer.message.MsiOrderParameterMessage)"
        },
        "outputs" : [ "GetKeysWhoseValuesAreObjects" ]
      }, {
        "name" : "ErrorStatus",
        "display" : {
          "position" : {
            "x" : 3800,
            "y" : 185
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Set status to Error and provide error message from PostMessage.",
        "config" : {
          "type" : ".JavaScriptTransformConfig",
          "transformExpression" : "const status = { \"status\": \"Error\" };\r\nconst errorMessage = { \"errorMessage\": event.metadata.writeResults[0] }\r\nlet payload = {...status,...errorMessage};\r\nstage.setValue(payload);"
        },
        "outputs" : [ "SQLite" ]
      }, {
        "name" : "OneSecond",
        "display" : {
          "position" : {
            "x" : 5150,
            "y" : 185
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Short delay to wait for previous message to complete.",
        "config" : {
          "type" : ".DelayConfig",
          "delay" : {
            "duration" : 1,
            "units" : "Seconds"
          }
        },
        "outputs" : [ "Return" ]
      }, {
        "name" : "GetKeysWhoseValuesAreObjects",
        "display" : {
          "position" : {
            "x" : 2000,
            "y" : 117
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Get parameter key by assuming that they are the ones that are type 'object\". ",
        "config" : {
          "type" : ".JSONataTransformConfig",
          "transformExpression" : "$merge(event.value[$type($.*[0]) = \"object\"]).*[]"
        },
        "outputs" : [ "WithUpdatedParameters" ]
      }, {
        "name" : "ClosedStatus",
        "display" : {
          "position" : {
            "x" : 3800,
            "y" : 50
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Set status to Closed",
        "config" : {
          "type" : ".JavaScriptTransformConfig",
          "transformExpression" : "const status = { \"status\": \"Closed\" };\r\nstage.setValue(status);"
        },
        "outputs" : [ "SQLite" ]
      }, {
        "name" : "XMLFormat",
        "display" : {
          "position" : {
            "x" : 2900,
            "y" : 117
          },
          "metadata" : {
            "parent" : "ForEach"
          }
        },
        "description" : "Convert JSON to XML",
        "config" : {
          "type" : ".XMLFormatConfig",
          "outgoingType" : "String"
        },
        "outputs" : [ "PostMessage" ]
      } ],
      "trackActivity" : true,
      "triggers" : [ {
        "name" : "PolledTrigger",
        "display" : {
          "position" : {
            "x" : -450,
            "y" : 0
          }
        },
        "description" : "",
        "config" : {
          "type" : ".TriggerPolled",
          "enabled" : false,
          "interval" : {
            "duration" : 5,
            "units" : "Seconds"
          },
          "mode" : "interval"
        }
      } ],
      "errorHandler" : {
        "type" : "default"
      }
    }, {
      "name" : "ReceiveMSIRequestAndSendAcknowledge",
      "description" : "Capture Request From MSI.  Save message into SQLite.  Reply with acknowledgement.",
      "tags" : [ "PAS_X_MSI" ],
      "inputStages" : [ "XMLParser" ],
      "stages" : [ {
        "name" : "TransferResultError",
        "display" : {
          "position" : {
            "x" : 5440,
            "y" : 67
          }
        },
        "description" : "Model error transfer result.",
        "config" : {
          "type" : ".ModelConfig",
          "model" : "TransferResult",
          "objectName" : "",
          "initExpression" : "",
          "attributes" : [ {
            "name" : "TransferResult",
            "expression" : {
              "type" : "JavaScript",
              "expression" : ""
            },
            "attributes" : [ {
              "name" : "MsgInstanceId",
              "expression" : {
                "type" : "JavaScript",
                "expression" : "return event.metadata.message.MsiMessageContainer.messageInstanceId;"
              }
            }, {
              "name" : "SystemId",
              "expression" : {
                "type" : "JavaScript",
                "expression" : "return event.metadata.message.MsiMessageContainer.systemId;"
              }
            }, {
              "name" : "Success",
              "expression" : {
                "type" : "JavaScript",
                "expression" : "return false;"
              }
            }, {
              "name" : "Error",
              "expression" : {
                "type" : "JavaScript",
                "expression" : "return event.metadata.writeResults[0];"
              }
            } ]
          } ]
        },
        "outputs" : [ "XMLFormat" ]
      }, {
        "name" : "MsiMessageContainer_MsiOrderParameterMessage",
        "display" : {
          "position" : {
            "x" : 3190,
            "y" : 0
          }
        },
        "description" : "Model named parameters.",
        "config" : {
          "type" : ".ModelConfig",
          "model" : "MsiMessageContainer_MsiOrderParameterMessage",
          "objectName" : "",
          "initExpression" : "",
          "attributes" : [ {
            "name" : "MsiMessageContainer",
            "expression" : {
              "type" : "PipelineStageReference",
              "stageReference" : "event.metadata.message.MsiMessageContainer"
            },
            "attributes" : [ {
              "name" : "messageInstanceId",
              "expression" : {
                "type" : "PipelineStageReference",
                "stageReference" : ""
              }
            }, {
              "name" : "direction",
              "expression" : {
                "type" : "PipelineStageReference",
                "stageReference" : ""
              }
            }, {
              "name" : "systemId",
              "expression" : {
                "type" : "PipelineStageReference",
                "stageReference" : ""
              }
            }, {
              "name" : "messageType",
              "expression" : {
                "type" : "PipelineStageReference",
                "stageReference" : ""
              }
            }, {
              "name" : "messageContext",
              "expression" : {
                "type" : "PipelineStageReference",
                "stageReference" : ""
              }
            }, {
              "name" : "message",
              "expression" : {
                "type" : "PipelineStageReference",
                "stageReference" : "event.metadata.message.MsiMessageContainer.message"
              },
              "attributes" : [ {
                "name" : "MsiOrderParameterMessage",
                "expression" : {
                  "type" : "PipelineStageReference",
                  "stageReference" : "event.metadata.message.MsiMessageContainer.message.MsiOrderParameterMessage"
                },
                "attributes" : [ {
                  "name" : "messageInstanceId",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "direction",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "messageId",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "supplierId",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "deviceTypeId",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "supplierVersion",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "functionalId",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "orderContext",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "creationTime",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "parameter",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : ""
                  }
                }, {
                  "name" : "BatchNo",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : "event.value.BatchNo"
                  },
                  "attributes" : [ {
                    "name" : "name",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "dataType",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "value",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "isQualifier",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "acquisitionTime",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  } ]
                }, {
                  "name" : "DeviceNo",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : "event.value.DeviceNo"
                  },
                  "attributes" : [ {
                    "name" : "name",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "dataType",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "value",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "isQualifier",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "acquisitionTime",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  } ]
                }, {
                  "name" : "Weight",
                  "expression" : {
                    "type" : "PipelineStageReference",
                    "stageReference" : "event.value.Weight"
                  },
                  "attributes" : [ {
                    "name" : "name",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "dataType",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "value",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "isQualifier",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  }, {
                    "name" : "acquisitionTime",
                    "expression" : {
                      "type" : "PipelineStageReference",
                      "stageReference" : ""
                    }
                  } ]
                } ]
              } ]
            } ]
          } ]
        },
        "outputs" : [ "RemoveParameter" ]
      }, {
        "name" : "XMLFormat",
        "display" : {
          "position" : {
            "x" : 5888,
            "y" : -1
          }
        },
        "description" : "Convert JSON to XML.",
        "config" : {
          "type" : ".XMLFormatConfig",
          "outgoingType" : "String"
        },
        "outputs" : [ "Return" ]
      }, {
        "name" : "AddOpenStatusUpdate",
        "display" : {
          "position" : {
            "x" : 4540,
            "y" : 0
          }
        },
        "description" : "Add status key and set to Open.",
        "config" : {
          "type" : ".JavaScriptTransformConfig",
          "transformExpression" : "const status = { \"status\": \"Open\" };\r\nlet payload = {...event.value,...status};\r\nstage.setValue(payload);"
        },
        "outputs" : [ "MessageInsert" ]
      }, {
        "name" : "ForEachReplaceParameterWithNameAsKey",
        "display" : {
          "position" : {
            "x" : 1590,
            "y" : -105
          },
          "size" : {
            "width" : 1000,
            "height" : 300
          },
          "metadata" : { }
        },
        "description" : "",
        "config" : {
          "type" : ".ForEachLoopConfig",
          "failureOutputs" : [ ],
          "loopOutputs" : [ "ReplaceKey" ],
          "stageTimeout" : {
            "duration" : 30,
            "units" : "Seconds"
          }
        },
        "outputs" : [ "ArrayToObject" ]
      }, {
        "name" : "XMLParser",
        "display" : {
          "position" : {
            "x" : 240,
            "y" : 0
          }
        },
        "description" : "Convert incomming message into XML.",
        "config" : {
          "type" : ".XMLParserConfig",
          "failureOutputs" : [ ],
          "incomingType" : "String",
          "encoding" : "Auto"
        },
        "outputs" : [ "FilterMessage" ]
      }, {
        "name" : "MessageInsert",
        "display" : {
          "position" : {
            "x" : 4990,
            "y" : 0
          }
        },
        "description" : "Insert data into SQLite",
        "config" : {
          "type" : ".DynamicWriteConfig",
          "failureOutputs" : [ "TransferResultError" ],
          "connectionReference" : "{{Connection.MsiMessages}}",
          "qualifier" : {
            "table" : "Messages",
            "writeType" : "insert",
            "whereColumn" : "",
            "logAsJSON" : false,
            "createOption" : "create_and_update",
            "tableCacheInterval" : {
              "duration" : 1,
              "units" : "Hours"
            },
            "breakupArrays" : false,
            "type" : "Tag"
          },
          "qualifierExpression" : "",
          "writeReturn" : "completion"
        },
        "outputs" : [ "TransferResultSuccess" ]
      }, {
        "name" : "TransferResultSuccess",
        "display" : {
          "position" : {
            "x" : 5440,
            "y" : -67
          }
        },
        "description" : "Model successful transfer result.",
        "config" : {
          "type" : ".ModelConfig",
          "model" : "TransferResult",
          "objectName" : "",
          "initExpression" : "",
          "attributes" : [ {
            "name" : "TransferResult",
            "expression" : {
              "type" : "JavaScript",
              "expression" : ""
            },
            "attributes" : [ {
              "name" : "MsgInstanceId",
              "expression" : {
                "type" : "JavaScript",
                "expression" : "return event.metadata.message.MsiMessageContainer.messageInstanceId;"
              }
            }, {
              "name" : "SystemId",
              "expression" : {
                "type" : "JavaScript",
                "expression" : "return event.metadata.message.MsiMessageContainer.systemId;"
              }
            }, {
              "name" : "Success",
              "expression" : {
                "type" : "JavaScript",
                "expression" : "return true"
              }
            }, {
              "name" : "Error",
              "expression" : {
                "type" : "JavaScript",
                "expression" : ""
              }
            } ]
          } ]
        },
        "outputs" : [ "XMLFormat" ]
      }, {
        "name" : "GetParameter",
        "display" : {
          "position" : {
            "x" : 1140,
            "y" : 0
          }
        },
        "description" : "Pull parameters from metadata.",
        "config" : {
          "type" : ".JSONataTransformConfig",
          "transformExpression" : "event.metadata.message.MsiMessageContainer.message.MsiOrderParameterMessage.parameter"
        },
        "outputs" : [ "ForEachReplaceParameterWithNameAsKey" ]
      }, {
        "name" : "Return",
        "display" : {
          "position" : {
            "x" : 6340,
            "y" : 0
          }
        },
        "description" : "",
        "config" : {
          "type" : ".ReturnConfig"
        },
        "outputs" : [ ]
      }, {
        "name" : "ArrayToObject",
        "display" : {
          "position" : {
            "x" : 2740,
            "y" : 0
          }
        },
        "description" : "Convert array into object.",
        "config" : {
          "type" : ".JSONataTransformConfig",
          "transformExpression" : "$merge($reduce(event.value[], $append))"
        },
        "outputs" : [ "MsiMessageContainer_MsiOrderParameterMessage" ]
      }, {
        "name" : "FilterMessage",
        "display" : {
          "position" : {
            "x" : 690,
            "y" : 0
          }
        },
        "description" : "Push message into metadata.",
        "config" : {
          "type" : ".AttributeFilterConfig",
          "filterOption" : "exclude",
          "filterList" : [ {
            "filterType" : "exactPathFilter",
            "filterText" : "MsiMessageContainer"
          } ],
          "retainAsMetadata" : true,
          "metadataKey" : "message"
        },
        "outputs" : [ "GetParameter" ]
      }, {
        "name" : "FlattenUpdate",
        "display" : {
          "position" : {
            "x" : 4090,
            "y" : 0
          }
        },
        "description" : "Flatten structure to save into SQLite.",
        "config" : {
          "type" : ".FlattenConfig",
          "delimiter" : "_"
        },
        "outputs" : [ "AddOpenStatusUpdate" ]
      }, {
        "name" : "RemoveParameter",
        "display" : {
          "position" : {
            "x" : 3640,
            "y" : 0
          }
        },
        "description" : "Remove the parameter key so it is not saved to SQLite.",
        "config" : {
          "type" : ".AttributeFilterConfig",
          "filterOption" : "exclude",
          "filterList" : [ {
            "filterType" : "exactPathFilter",
            "filterText" : "MsiMessageContainer.message.MsiOrderParameterMessage.parameter"
          } ],
          "retainAsMetadata" : false,
          "metadataKey" : "filtered"
        },
        "outputs" : [ "FlattenUpdate" ]
      }, {
        "name" : "ReturnForEach",
        "display" : {
          "position" : {
            "x" : 650,
            "y" : 105
          },
          "metadata" : {
            "parent" : "ForEachReplaceParameterWithNameAsKey"
          }
        },
        "description" : "",
        "config" : {
          "type" : ".ReturnConfig"
        },
        "outputs" : [ ]
      }, {
        "name" : "ReplaceKey",
        "display" : {
          "position" : {
            "x" : 200,
            "y" : 105
          },
          "metadata" : {
            "parent" : "ForEachReplaceParameterWithNameAsKey"
          }
        },
        "description" : "Replace key name wth value.name.",
        "config" : {
          "type" : ".JSONataTransformConfig",
          "transformExpression" : "{event.value.name: event.value}"
        },
        "outputs" : [ "ReturnForEach" ]
      } ],
      "trackActivity" : true,
      "triggers" : [ {
        "name" : "ApiTrigger",
        "display" : {
          "position" : {
            "x" : -450,
            "y" : 67
          }
        },
        "description" : "",
        "config" : {
          "type" : ".TriggerApi",
          "enabled" : true,
          "parameters" : {
            "type" : "EmptyParameters"
          }
        }
      } ],
      "errorHandler" : {
        "type" : "default"
      }
    } ],
    "namespace" : [ ]
  },
  "network" : {
    "groups" : [ ],
    "hubs" : [ ]
  }
}