# MESReceiver object — attributes (wonder-app-vd03 Galaxy)

Source: live AVEVA Galaxy DB **`ZB`** on **wonder-app-vd03** (the MxAccessGateway box),
read via the gateway's own `AttributesSql` (recursive `deployed_package_chain` over
`dynamic_attribute` / `attribute_definition`) run with `sqlcmd` over ssh — `2026-06-16`.

## Instance probed
- **TagName:** `MESReceiver_002`  (GobjectId `5909`, ParentGobjectId `5908`, HostedBy `5049`)
- **TemplateChain:** `$MESDemo.MESReceiver` → `$MESReceiver` → `$gUserDefined` → `$UserDefined`
- **CategoryId:** 10, `IsArea = false`
- There are many MESReceiver instances on this Galaxy (1,253 `MESReceiver` references in the
  `galaxy-snapshot.json` hierarchy cache). `MESReceiver_002` is representative of the template.

> Note: the cached `galaxy-snapshot.json` (gateway Server dir) holds the **object hierarchy only**
> — it carries **no attributes**, so attribute discovery requires the DB query (or gRPC `galaxy-discover`).

## Container number
There is **no attribute literally named `ContainerNumber`**. The MES container number is carried by:
- **`MoveInMesContainerNum`** — String (move-in interface)
- **`MoveOutMesContainerNum`** — String (move-out interface)

Full tag references: `MESReceiver_002.MoveInMesContainerNum`, `MESReceiver_002.MoveOutMesContainerNum`.

## MES interface UDAs (attribute-category 10, security-classification 1 = secured/operate)

### Move-In
| Attribute | Type | Full tag reference |
|---|---|---|
| **MoveInMesContainerNum** | String | `MESReceiver_002.MoveInMesContainerNum` |
| MoveInBatchID | Integer | `MESReceiver_002.MoveInBatchID` |
| MoveInJobSequenceNumber | String | `MESReceiver_002.MoveInJobSequenceNumber` |
| MoveInNumberWorkOrders | Integer | `MESReceiver_002.MoveInNumberWorkOrders` |
| MoveInWorkOrderNumbers | String[] | `MESReceiver_002.MoveInWorkOrderNumbers[]` |
| MoveInPartNumbers | String[] | `MESReceiver_002.MoveInPartNumbers[]` |
| MoveInOperatorName | String | `MESReceiver_002.MoveInOperatorName` |
| MoveInFlag | Boolean | `MESReceiver_002.MoveInFlag` |
| MoveInReadyFlag | Boolean | `MESReceiver_002.MoveInReadyFlag` |
| MoveInCompleteFlag | Boolean | `MESReceiver_002.MoveInCompleteFlag` |
| MoveInSuccessfulFlag | Boolean | `MESReceiver_002.MoveInSuccessfulFlag` |
| MoveInErrorText | String | `MESReceiver_002.MoveInErrorText` |

### Move-Out (symmetric; no JobSequenceNumber)
| Attribute | Type | Full tag reference |
|---|---|---|
| **MoveOutMesContainerNum** | String | `MESReceiver_002.MoveOutMesContainerNum` |
| MoveOutBatchID | Integer | `MESReceiver_002.MoveOutBatchID` |
| MoveOutNumberWorkOrders | Integer | `MESReceiver_002.MoveOutNumberWorkOrders` |
| MoveOutWorkOrderNumbers | String[] | `MESReceiver_002.MoveOutWorkOrderNumbers[]` |
| MoveOutPartNumbers | String[] | `MESReceiver_002.MoveOutPartNumbers[]` |
| MoveOutOperatorName | String | `MESReceiver_002.MoveOutOperatorName` |
| MoveOutFlag | Boolean | `MESReceiver_002.MoveOutFlag` |
| MoveOutReadyFlag | Boolean | `MESReceiver_002.MoveOutReadyFlag` |
| MoveOutCompleteFlag | Boolean | `MESReceiver_002.MoveOutCompleteFlag` |
| MoveOutSuccessfulFlag | Boolean | `MESReceiver_002.MoveOutSuccessfulFlag` |
| MoveOutErrorText | String | `MESReceiver_002.MoveOutErrorText` |

## Standard ArchestrA `$UserDefined` / system attributes (also present)
`AlarmCntsBySeverity[]`, `AlarmCntsBySeverityEnableShelved[]`, `AlarmInhibit`, `AlarmMode`,
`AlarmModeCmd`, `AlarmMostUrgentAcked`, `AlarmMostUrgentInAlarm`, `AlarmMostUrgentMode`,
`AlarmMostUrgentSeverity`, `AlarmMostUrgentShelved`, `AliasName`, `Area`, `CmdData`, `CodeBase`,
`ConfigVersion`, `ContainedName`, `Container`, `Errors[]`, `ExecutionRelatedObject`,
`ExecutionRelativeOrder`, `Extensions`, `HierarchicalName`, `Host`, `InAlarm`, `MinorVersion`,
`PropagatedAlarmInhibit`, `ScanState`, `ScanStateCmd`, `SecurityGroup`, `ShortDesc`, `Tagname`,
`UDAs`, `UserAttrData`, `PropagatedAlarmInhibit`.

## How to reproduce
1. `MESReceiver` instances are in the gateway hierarchy cache
   `E:\ApiInstall\MxGateway\Server\galaxy-snapshot.json` (objects only, no attrs).
2. Attribute list: run the gateway's `AttributesSql`
   (`src/.../Server/Galaxy/GalaxyRepository.cs`) scoped to one instance via
   `... WHERE g.is_template = 0 AND g.deployed_package_id <> 0 AND g.tag_name = 'MESReceiver_002'`
   in the `deployed_package_chain` anchor, then `sqlcmd -S (local) -d ZB -U wwadmin -P <pwd>`
   on the box (Galaxy creds from `MxGateway.Galaxy.ConnectionString` in the gateway appsettings).
3. Live values would need an MXAccess read through the gateway (gRPC), not the repo SQL.

In OtOpcUa (Galaxy-as-standard-driver model) these bind as ordinary equipment tags:
`Tag{ DriverInstanceId = GalaxyMxGateway, TagConfig = {"FullName":"MESReceiver_002.MoveInMesContainerNum"} }`.
