{
  "productInfo" : {
    "company" : "HighByte",
    "product" : "IntelligenceHub",
    "version" : "4.5.0",
    "build" : "2026.8.7.376",
    "stage" : "Alpha"
  },
  "project" : {
    "version" : 14,
    "connections" : [ {
      "name" : "ip21",
      "uri" : "ip21://{{System.Variables.host_reference}}:45390",
      "description" : "This is a Connection to Aspen InfoPlus.21 Historian. The purpose of the Connection is to obtain data for starter solution examples and, specifically starter solutions related to IP.21.  HighByte note: this Connection uses a dedicated agent installed on a demo system EC2.",
      "tags" : [ "starter_ip21" ],
      "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" : {
        "connectionString" : "Driver={AspenTech SQLplus};Host=34.215.151.255;Port=10014;READONLY=Yes",
        "connectTimeoutSeconds" : 5,
        "requestTimeoutMS" : 120000,
        "compression" : "GZIP",
        "password" : {
          "type" : "Reference",
          "value" : "ip21_token_reference"
        }
      }
    }, {
      "name" : "mqtt",
      "uri" : "mqtt://localhost:1889",
      "description" : "This is a Connection to the Intelligence Hub MQTT broker created for the purpose of viewing Pipeline outputs.",
      "tags" : [ "starter_canary", "starter_ip21", "starter_pi_af", "starter_pi_da" ],
      "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" : {
        "connectionTimeoutSeconds" : 10,
        "keepAliveSeconds" : 60,
        "requestTimeoutMS" : 5000,
        "maxInflight" : 1000,
        "cleanSession" : true,
        "mcpEnabled" : "disabled",
        "ssl" : false,
        "redundantBrokers" : [ ],
        "inputDiscovery" : "",
        "clientId" : "Intelligence_Hub_Reference",
        "maxMessagesReceived" : 0
      }
    } ],
    "inputs" : [ {
      "name" : "ip21_input_last_values",
      "connection" : "ip21",
      "type" : "ip21",
      "qualifier" : {
        "type" : "query",
        "command" : "SELECT NAME, IP_VALUE, IP_VALUE_TIME, IP_VALUE_QUALITY FROM IP_AnalogDef WHERE (NAME = 'PP_InFlow1' OR NAME = 'PP_OutFlow')"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "referenceMap" : [ ],
      "parameters" : {
        "type" : "EmptyParameters"
      }
    }, {
      "name" : "ip21_input_metadata_tags",
      "connection" : "ip21",
      "type" : "ip21",
      "qualifier" : {
        "type" : "query",
        "command" : "SELECT NAME, IP_DESCRIPTION, IP_TAG_TYPE, IP_ENG_UNITS, IP_HIGH_HIGH_LIMIT, IP_LOW_LOW_LIMIT FROM IP_AnalogDef WHERE (NAME LIKE 'A1%' OR NAME LIKE 'C1%' OR NAME LIKE 'CA%'  OR NAME LIKE 'FC%' OR NAME LIKE 'FI%' OR NAME LIKE 'HC%' OR NAME LIKE 'II%' OR NAME LIKE 'LC%'  OR NAME LIKE 'PC%' OR NAME LIKE 'PI%' OR NAME LIKE 'TI%')\nORDER BY NAME;"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "referenceMap" : [ ],
      "parameters" : {
        "type" : "EmptyParameters"
      }
    }, {
      "name" : "ip21_input_tag_list",
      "connection" : "ip21",
      "type" : "ip21",
      "qualifier" : {
        "type" : "query",
        "command" : "SELECT NAME FROM IP_AnalogDef WHERE (IP_VALUE IS NOT NULL AND IP_VALUE_TIME IS NOT NULL AND NAME LIKE 'PP_%Flow%')"
      },
      "cacheLifetime" : {
        "enabled" : true,
        "interval" : {
          "duration" : 1,
          "units" : "Days"
        }
      },
      "template" : {
        "type" : "Off"
      },
      "referenceMap" : [ ],
      "parameters" : {
        "type" : "EmptyParameters"
      }
    }, {
      "name" : "ip21_input_values_time_span",
      "connection" : "ip21",
      "type" : "ip21",
      "qualifier" : {
        "type" : "query",
        "command" : "SELECT NAME, VALUE, TS, STATUS FROM HISTORY WHERE NAME LIKE 'TI%' AND TS BETWEEN TIMESTAMP '{{this.startTime}}' AND TIMESTAMP '{{this.endTime}}' ORDER BY TS;"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "referenceMap" : [ ],
      "parameters" : {
        "type" : "inline",
        "model" : {
          "name" : "params",
          "tags" : [ ],
          "attributes" : [ {
            "attributeType" : "Internal",
            "name" : "startTime",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "defaultValue" : "2026-06-09 23:13:00.0",
            "internalType" : {
              "variant" : "String"
            }
          }, {
            "attributeType" : "Internal",
            "name" : "endTime",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "defaultValue" : "2026-06-09 23:13:30.0",
            "internalType" : {
              "variant" : "String"
            }
          } ],
          "modelVersion" : ""
        }
      }
    } ],
    "outputs" : [ ],
    "modeling" : {
      "models" : [ {
        "name" : "starter_metadata_tags",
        "description" : "This is an example provided for modeling historian tag metadata. It is a component of a starter solution.\n",
        "groupAs" : "/starter_hist_read_metadata_tags",
        "tags" : [ "starter_canary", "starter_ip21", "starter_pi_da" ],
        "attributes" : [ {
          "attributeType" : "Internal",
          "name" : "tagID",
          "nullable" : false,
          "required" : true,
          "array" : false,
          "internalType" : {
            "variant" : "String"
          }
        }, {
          "attributeType" : "Internal",
          "name" : "tagDescription",
          "nullable" : true,
          "required" : false,
          "array" : false,
          "internalType" : {
            "variant" : "String"
          }
        }, {
          "attributeType" : "Internal",
          "name" : "tagDataType",
          "nullable" : true,
          "required" : false,
          "array" : false,
          "internalType" : {
            "variant" : "String"
          }
        }, {
          "attributeType" : "Internal",
          "name" : "tagUoM",
          "nullable" : true,
          "required" : false,
          "array" : false,
          "internalType" : {
            "variant" : "String"
          }
        }, {
          "attributeType" : "Internal",
          "name" : "tagLow",
          "nullable" : true,
          "required" : false,
          "array" : false,
          "internalType" : {
            "variant" : "Any"
          }
        }, {
          "attributeType" : "Internal",
          "name" : "tagHigh",
          "nullable" : true,
          "required" : false,
          "array" : false,
          "internalType" : {
            "variant" : "Any"
          }
        }, {
          "attributeType" : "Internal",
          "name" : "source",
          "nullable" : false,
          "required" : false,
          "array" : false,
          "internalType" : {
            "variant" : "String"
          }
        }, {
          "attributeType" : "Internal",
          "name" : "time",
          "nullable" : false,
          "required" : true,
          "array" : false,
          "internalType" : {
            "variant" : "DateTime"
          }
        } ],
        "modelVersion" : ""
      } ],
      "instances" : [ ]
    },
    "conditions" : [ ],
    "functions" : [ ],
    "tags" : [ {
      "name" : "starter_ip21"
    } ],
    "pipelines" : [ {
      "name" : "starter_output_ip21_metadata_tags_to_mqtt",
      "description" : "This Pipeline obtains tag metadata from Canary Historian and models the data before publishing the data to the Intelligence Hub MQTT Broker. ",
      "groupAs" : "/starter_hist_read_metadata_tags",
      "tags" : [ "starter_ip21" ],
      "inputStages" : [ "read_ip21_data" ],
      "stages" : [ {
        "name" : "to_mqtt",
        "display" : {
          "position" : {
            "x" : 1140,
            "y" : 0
          }
        },
        "description" : "This Stage publishes the payload to the Intelligence Hub MQTT broker which is being used in this case to allow easy visualization of the output.",
        "config" : {
          "type" : ".DynamicWriteConfig",
          "failureOutputs" : [ ],
          "connectionReference" : "{{Connection.mqtt}}",
          "eventPath" : "",
          "connectionType" : "mqtt",
          "qualifier" : {
            "topic" : "Metadata_Tag_IP21",
            "qos" : 0,
            "namedRoot" : false,
            "retained" : false,
            "breakupArrays" : false,
            "filterList" : [ "_name", "_model", "_timestamp" ]
          },
          "qualifierExpression" : "",
          "writeReturn" : "ignore"
        },
        "outputs" : [ ]
      }, {
        "name" : "read_ip21_data",
        "display" : {
          "position" : {
            "x" : 240,
            "y" : 0
          }
        },
        "description" : "This Stage reads data from IP.21.",
        "config" : {
          "type" : ".ReadConfig",
          "failureOutputs" : [ ],
          "reference" : {
            "type" : "Input",
            "name" : "ip21_input_metadata_tags",
            "path" : "",
            "params" : { },
            "connectionName" : "ip21"
          },
          "handleGoodNoData" : false,
          "goodNoDataOutputs" : [ ]
        },
        "outputs" : [ "apply_model" ]
      }, {
        "name" : "apply_model",
        "display" : {
          "position" : {
            "x" : 690,
            "y" : 0
          }
        },
        "description" : "This Stage applies the desired schema for the tag payload.",
        "config" : {
          "type" : ".ModelConfig",
          "model" : "starter_metadata_tags",
          "objectName" : "",
          "initExpression" : "",
          "attributes" : [ {
            "name" : "tagID",
            "expression" : {
              "type" : "PipelineStageReference",
              "stageReference" : "event.value[0].NAME"
            }
          }, {
            "name" : "tagDescription",
            "expression" : {
              "type" : "PipelineStageReference",
              "stageReference" : "event.value[0].IP_DESCRIPTION"
            }
          }, {
            "name" : "tagDataType",
            "expression" : {
              "type" : "PipelineStageReference",
              "stageReference" : "event.value[0].IP_TAG_TYPE"
            }
          }, {
            "name" : "tagUoM",
            "expression" : {
              "type" : "PipelineStageReference",
              "stageReference" : "event.value[0].IP_ENG_UNITS"
            }
          }, {
            "name" : "tagLow",
            "expression" : {
              "type" : "PipelineStageReference",
              "stageReference" : "event.value[0].IP_LOW_LOW_LIMIT"
            }
          }, {
            "name" : "tagHigh",
            "expression" : {
              "type" : "PipelineStageReference",
              "stageReference" : "event.value[0].IP_HIGH_HIGH_LIMIT"
            }
          }, {
            "name" : "source",
            "expression" : {
              "type" : "PipelineStageReference",
              "stageReference" : ""
            },
            "defaultValue" : "Aspen InfoPlus.21"
          }, {
            "name" : "time",
            "expression" : {
              "type" : "PipelineStageReference",
              "stageReference" : "event.timestamp"
            }
          } ],
          "expandArray" : true
        },
        "outputs" : [ "to_mqtt" ]
      } ],
      "trackActivity" : false,
      "queueSize" : 10000,
      "triggers" : [ {
        "name" : "polled_trigger",
        "display" : {
          "position" : {
            "x" : -450,
            "y" : 0
          }
        },
        "description" : "A tag metadata Pipeline typically runs infrequently.   Perhaps every few hours or fractions of a day. ",
        "config" : {
          "type" : ".TriggerPolled",
          "enabled" : false,
          "interval" : {
            "duration" : 8,
            "units" : "Hours"
          },
          "mode" : "interval"
        }
      } ],
      "errorHandler" : {
        "type" : "default"
      }
    } ],
    "namespace" : [ ],
    "lookupMap" : [ ],
    "servers" : {
      "i3x" : {
        "historyReadPipeline" : {
          "type" : "Empty"
        },
        "writePipeline" : {
          "type" : "Empty"
        }
      }
    }
  },
  "network" : {
    "groups" : [ ],
    "hubs" : [ ]
  }
}