# Validation Report: URS-032

**Title:** Traceability for product lots, shipments, and inventory movements
**Date:** 2026-08-03T23:03:22.458Z
**Duration:** 231.0s
**Overall Status:** ✅ PASS

## User Requirement

> The system shall maintain traceability for product lots, shipments, and inventory movements.

*Source: `User_Requirement_Specifications_Vantis_DeviceFlow.xlsx` — the run below proves the system meets this requirement.*

## Environment

- **Inbox URL:** http://localhost:34967
- **Database:** localhost:46337/cc_repinbox_dev

## Setup

Status: ✅ PASS

## Test Steps

Each step below corresponds to one Playwright test that ran sequentially. Screenshots and video recordings provide visual evidence of the UI behaviour.

### 1. Step 1: Lot traceability details — ✅ PASS

**What this step proves:**

The lot-controlled product NEURO-DEVICE-001 (an implantable device) carries lot policy "approved" with a controlled allowed-lot list (LOT-2025-001234 for the warehouse, LOT-2025-005678 for the trunk), establishing that lots are first-class, controlled data on the product.

**Screenshots:**

![step 01 lot details](screenshots/step-01-lot-details.png)

**Video recording:**

[▶ Watch step recording](videos/step-01-lot-details.webm)

---

### 2. Step 2: Catalog & account — ✅ PASS

**What this step proves:**

The product-catalog entry has billing and ordering enabled, and the ROSS sales account carries effective approved pricing plus the "holds owned stock" setting that makes it eligible for direct orders and hospital-stock bill-only orders.

**Screenshots:**

![step 02 catalog entry](screenshots/step-02-catalog-entry.png)

![step 02 sales account](screenshots/step-02-sales-account.png)

**Video recording:**

[▶ Watch step recording](videos/step-02-catalog-account.webm)

---

### 3. Step 3: Baseline inventory — ✅ PASS

**What this step proves:**

The warehouse lot LOT-2025-001234 is on hand at the Main Warehouse (ROSS-001) before any order activity — the baseline that makes the later increase and decrease conclusively attributable to the order flows.

**Screenshots:**

![step 03 baseline inventory](screenshots/step-03-baseline-inventory.png)

**Video recording:**

[▶ Watch step recording](videos/step-03-baseline-inventory.webm)

---

### 4. Step 4: Create direct order — ✅ PASS

**What this step proves:**

A Corveta sales rep orders the product for the ROSS account. Because the account holds owned stock, the order is created as a DIRECT order.

**Audit events generated by this step:**

*(Evidence scoped to step execution window: 2026-08-03T23:03:58.697Z → 2026-08-03T23:04:05.598Z)*

| Time | Type | Action | User | Org | Performed |
|------|------|--------|------|-----|-----------|
| 2026-08-03 23:04:05Z | checklist | checklists.create | blair.bennett@corvetasurgical.com | Vantis | — |
| 2026-08-03 23:04:05Z | decision | order_request_created | blair.bennett@corvetasurgical.com | Vantis | yes |

**Screenshots:**

![step 04 destination](screenshots/step-04-destination.png)

![step 04 product quantity](screenshots/step-04-product-quantity.png)

![step 04 submitted](screenshots/step-04-submitted.png)

**Video recording:**

[▶ Watch step recording](videos/step-04-create-direct-order.webm)

---

### 5. Step 5: Approve order — ✅ PASS

**What this step proves:**

The manufacturer approves the order, creating the fulfillment order. The order detail lists the product but shows no lot yet — lots are stamped by the warehouse at shipment time. The "Direct Order Created" notification email names the product being fulfilled.

**Audit events generated by this step:**

*(Evidence scoped to step execution window: 2026-08-03T23:04:15.220Z → 2026-08-03T23:04:22.551Z)*

| Time | Type | Action | User | Org | Performed |
|------|------|--------|------|-----|-----------|
| 2026-08-03 23:04:15Z | fulfillment_order | status_change | alex.admin@vantismedical.com | Vantis | — |
| 2026-08-03 23:04:15Z | fulfillment_order | status_change | alex.admin@vantismedical.com | Vantis | — |
| 2026-08-03 23:04:15Z | decision | extensiv_order_push.skipped | — | Vantis | no |
| 2026-08-03 23:04:15Z | decision | tickets.checklist_item_resolve.auto_resolve_ticket | — | Vantis | no |
| 2026-08-03 23:04:17Z | transactional_email | direct_order_created | — | Corveta Surgical Group | — |

**Emails triggered by this step:**

*(Evidence matched by declared name — step timing not available or no events fell in window)*

**Email 1: Direct Order Created - OR-1-FO-1**

Template: `Direct_Order_Created_-_OR-1-FO-1`

![Direct Order Created - OR-1-FO-1](screenshots/emails/2026-08-03T23-04-17-378Z-Direct_Order_Created_-_OR-1-FO-1.png)

**Screenshots:**

![step 05 approval dialog](screenshots/step-05-approval-dialog.png)

![step 05 approved no lots](screenshots/step-05-approved-no-lots.png)

**Video recording:**

[▶ Watch step recording](videos/step-05-approve-order.webm)

---

### 6. Step 6: Import shipping notice — ✅ PASS

**What this step proves:**

The warehouse ASN is imported through the real /packages/upload pipeline: the notice lists the product SKU with its lot (LOT-2025-001234) against the fulfillment order number, with carrier "demo" and a magic DFX tracking number that simulates the carrier feed.

**Audit events generated by this step:**

*(Evidence scoped to step execution window: 2026-08-03T23:05:06.034Z → 2026-08-03T23:05:11.073Z)*

| Time | Type | Action | User | Org | Performed |
|------|------|--------|------|-----|-----------|
| 2026-08-03 23:05:08Z | decision | recalculate_order_status | — | Vantis | yes |
| 2026-08-03 23:05:08Z | fulfillment_order | status_change | — | Vantis | — |

**Screenshots:**

![step 06 upload form](screenshots/step-06-upload-form.png)

![step 06 import complete](screenshots/step-06-import-complete.png)

**Video recording:**

[▶ Watch step recording](videos/step-06-import-shipping-notice.webm)

---

### 7. Step 7: Lot pages — ✅ PASS

**What this step proves:**

The imported lot is now traceable across the chain: the shipping package detail (the lot on the shipped item, against the fulfillment order number) and the fulfillment order detail (the SKU with its shipped lot, "NEURO-DEVICE-001: LOT LOT-2025-001234"), for the same order request.

**Screenshots:**

![step 07 package lots](screenshots/step-07-package-lots.png)

![step 07 fulfillment lots](screenshots/step-07-fulfillment-lots.png)

![step 07 order line](screenshots/step-07-order-line.png)

**Video recording:**

[▶ Watch step recording](videos/step-07-lot-pages.webm)

---

### 8. Step 8: Delivery & inventory increase — ✅ PASS

**What this step proves:**

The demo tracking sequence delivers the package through the same handler a real carrier webhook uses, firing the auto-add-inventory hook: the warehouse lot rises by exactly the shipped quantity, proving received direct-order stock increases inventory with the correct lot.

**Screenshots:**

![step 08 package delivered](screenshots/step-08-package-delivered.png)

![step 08 inventory increased](screenshots/step-08-inventory-increased.png)

**Video recording:**

[▶ Watch step recording](videos/step-08-delivery-increase.webm)

---

### 9. Step 9: Bill-only lot entry — ✅ PASS

**What this step proves:**

The bill-only form asks for a lot for the tracked product and validates it: continuing without a lot is rejected, and the dropdown offers only the product's approved lots. The order is submitted with LOT-2025-001234 sourced from the ROSS (Hospital Stock) inventory.

**Audit events generated by this step:**

*(Evidence scoped to step execution window: 2026-08-03T23:05:51.958Z → 2026-08-03T23:06:02.829Z)*

| Time | Type | Action | User | Org | Performed |
|------|------|--------|------|-----|-----------|
| 2026-08-03 23:06:00Z | billing_order | status_change | blair.bennett@corvetasurgical.com | Vantis | — |
| 2026-08-03 23:06:00Z | decision | bill_only.link_purchase_order | blair.bennett@corvetasurgical.com | Corveta Surgical Group | no |
| 2026-08-03 23:06:00Z | decision | bill_only_order.inventory_items_decrement | blair.bennett@corvetasurgical.com | Vantis | yes |
| 2026-08-03 23:06:00Z | decision | bill_only_order.direct_po_import_on_create | blair.bennett@corvetasurgical.com | Vantis | no |
| 2026-08-03 23:06:01Z | transactional_email | new_bill_only | — | Corveta Surgical Group | — |

**Screenshots:**

![step 09 lot required](screenshots/step-09-lot-required.png)

![step 09 missing lot rejected](screenshots/step-09-missing-lot-rejected.png)

![step 09 approved lot options](screenshots/step-09-approved-lot-options.png)

![step 09 submitted](screenshots/step-09-submitted.png)

**Video recording:**

[▶ Watch step recording](videos/step-09-bill-only-lot.webm)

---

### 10. Step 10: Bill-only lots & decrement — ✅ PASS

**What this step proves:**

The submitted bill-only order shows the product line with its lot, and the same lot decrements at the same location — consuming the exact unit the direct order delivered, which closes the warehouse traceability loop.

**Screenshots:**

![step 10 billing order lot](screenshots/step-10-billing-order-lot.png)

![step 10 inventory decremented](screenshots/step-10-inventory-decremented.png)

**Video recording:**

[▶ Watch step recording](videos/step-10-bill-only-decrement.webm)

---

### 11. Step 11: Trunk bill-only — ✅ PASS

**What this step proves:**

A second bill-only order sources the product from Blair's trunk using the OTHER approved lot (LOT-2025-005678). Unlike hospital stock, trunk-sourced orders bill the facility, so this order produces the notification emails that evidence the lot, and the trunk lot decrements at TRUNK-36.

**Audit events generated by this step:**

*(Evidence scoped to step execution window: 2026-08-03T23:06:31.237Z → 2026-08-03T23:06:37.050Z)*

| Time | Type | Action | User | Org | Performed |
|------|------|--------|------|-----|-----------|
| 2026-08-03 23:06:33Z | decision | bill_only_order.inventory_items_decrement | blair.bennett@corvetasurgical.com | Vantis | yes |
| 2026-08-03 23:06:33Z | decision | bill_only_order.direct_po_import_on_create | blair.bennett@corvetasurgical.com | Vantis | no |
| 2026-08-03 23:06:33Z | billing_order | status_change | blair.bennett@corvetasurgical.com | Vantis | — |
| 2026-08-03 23:06:33Z | decision | bill_only.link_purchase_order | blair.bennett@corvetasurgical.com | Corveta Surgical Group | no |
| 2026-08-03 23:06:34Z | transactional_email | new_bill_only | — | Corveta Surgical Group | — |

**Emails triggered by this step:**

*(Evidence matched by declared name — step timing not available or no events fell in window)*

**Email 1: New Bill-Only Order - 8/3/2026 - Vantis BO-2**

Template: `New_Bill-Only_Order_-_8_3_2026_-_Vantis_BO-2`

![New Bill-Only Order - 8/3/2026 - Vantis BO-2](screenshots/emails/2026-08-03T23-06-01-191Z-New_Bill-Only_Order_-_8_3_2026_-_Vantis_BO-2.png)

**Email 2: New Bill-Only Order - 8/3/2026 - Vantis BO-3**

Template: `New_Bill-Only_Order_-_8_3_2026_-_Vantis_BO-3`

![New Bill-Only Order - 8/3/2026 - Vantis BO-3](screenshots/emails/2026-08-03T23-06-34-265Z-New_Bill-Only_Order_-_8_3_2026_-_Vantis_BO-3.png)

**Screenshots:**

![step 11 trunk lot selected](screenshots/step-11-trunk-lot-selected.png)

![step 11 trunk decremented](screenshots/step-11-trunk-decremented.png)

**Video recording:**

[▶ Watch step recording](videos/step-11-trunk-bill-only.webm)

---

### 12. Step 12: DOF notification email — ✅ PASS

**What this step proves:**

The manufacturer sends the Delivered Order Form notification from the bill-only detail page. The DOF email renders the product line with its lot number, proving the lot flows into outbound notifications.

**Audit events generated by this step:**

*(Evidence scoped to step execution window: 2026-08-03T23:06:46.372Z → 2026-08-03T23:06:57.923Z)*

| Time | Type | Action | User | Org | Performed |
|------|------|--------|------|-----|-----------|
| 2026-08-03 23:06:48Z | transactional_email | bill_only_dof_generated | — | Corveta Surgical Group | — |

**Emails triggered by this step:**

*(Evidence matched by declared name — step timing not available or no events fell in window)*

**Email 1: Delivered Order - 8/3/2026 - Vantis BO-3**

Template: `Delivered_Order_-_8_3_2026_-_Vantis_BO-3`

![Delivered Order - 8/3/2026 - Vantis BO-3](screenshots/emails/2026-08-03T23-06-48-805Z-Delivered_Order_-_8_3_2026_-_Vantis_BO-3.png)

**Screenshots:**

![step 12 send notifications](screenshots/step-12-send-notifications.png)

![step 12 notifications sent](screenshots/step-12-notifications-sent.png)

**Video recording:**

[▶ Watch step recording](videos/step-12-dof-notification.webm)

---

### 13. Step 13: Inventory movement history — ✅ PASS

**What this step proves:**

The movements are recorded as a first-class audit trail: inventory-transaction and inventory-history rows for the product — the ASN receipt (+1) and the two bill-only decrements (−1 each) — each with a quantity, a timestamp, a location, and the user who caused it, rendered here directly from the database rows.

**Screenshots:**

![step 13 movement history](screenshots/step-13-movement-history.png)

**Video recording:**

[▶ Watch step recording](videos/step-13-movement-history.webm)

---

### 14. Step 14: Comprehensive lot traceability — ✅ PASS

**What this step proves:**

A single consolidated view ties the pillars together for the product: the direct order that received the lot, the shipment that carried it, current inventory by lot/location, and every recorded inventory movement — the end-to-end traceability the requirement demands.

**Screenshots:**

![step 14 traceability](screenshots/step-14-traceability.png)

**Video recording:**

[▶ Watch step recording](videos/step-14-traceability.webm)

---

### 15. Step 15: Cross-user visibility — ✅ PASS

**What this step proves:**

An admin user (full visibility) opens the same warehouse inventory and sees the identical lot, quantity, and movement — confirming the traceability data is consistent across users.

**Screenshots:**

![step 15 admin visibility](screenshots/step-15-admin-visibility.png)

**Video recording:**

[▶ Watch step recording](videos/step-15-admin-visibility.webm)

---

## Database Validations

The following SQL queries ran against the application database after the Playwright scenarios completed. Each query asserts a specific condition that proves the feature under test persisted its data correctly.

### Product is lot-controlled (policy approved) with a controlled allowed-lot list — ✅ PASS

**Assertion:** NEURO-DEVICE-001 has lot_policy 'approved' and allows exactly LOT-2025-001234, LOT-2025-005678

```sql
SELECT p.sku, p.lot_policy, array_agg(al.lot_value ORDER BY al.lot_value) AS lots
     FROM org_products p
     JOIN org_product_allowed_lots al ON al.org_product_id = p.id
     WHERE p.id = $1 GROUP BY p.id, p.sku, p.lot_policy
```

| sku | lot_policy | lots |
| --- | --- | --- |
| NEURO-DEVICE-001 | approved | `["LOT-2025-001234","LOT-2025-005678"]` |

### Direct order for the product is approved and produced a fulfillment order — ✅ PASS

**Assertion:** A direct-type order request for the product is approved with a fulfillment order

```sql
SELECT orq.request_number, orq.order_type, orq.status, fo.order_number
     FROM order_requests orq
     JOIN order_request_items ori ON ori.order_request_id = orq.id AND ori.product_id = $1
     LEFT JOIN fulfillment_orders fo ON fo.order_request_id = orq.id
     WHERE orq.notes LIKE $2
```

| request_number | order_type | status | order_number |
| --- | --- | --- | --- |
| OR-1 | direct | approved | OR-1-FO-1 |

### Delivered ASN package carries the SKU + warehouse lot, linked to the fulfillment order — ✅ PASS

**Assertion:** Package item = NEURO-DEVICE-001/LOT-2025-001234, carrier demo, status delivered

```sql
SELECT sp.status, sp.carrier, spi.info->>'sku' AS sku, spi.info->>'lot' AS lot, spi.quantity
     FROM shipping_packages sp
     JOIN shipping_package_items spi ON spi.package_id = sp.id
     JOIN shipping_package_fulfillment_orders spfo ON spfo.shipping_package_id = sp.id
     JOIN fulfillment_orders fo ON fo.id = spfo.fulfillment_order_id
     JOIN order_requests orq ON orq.id = fo.order_request_id
     WHERE orq.notes LIKE $1
```

| status | carrier | sku | lot | quantity |
| --- | --- | --- | --- | --- |
| delivered | demo | NEURO-DEVICE-001 | LOT-2025-001234 | 1 |

### Warehouse lot returned to baseline after +1 (ASN delivery) and −1 (bill-only) — ✅ PASS

**Assertion:** Warehouse lot LOT-2025-001234 ends at 10

```sql
SELECT SUM(quantity_ready)::int AS on_hand
     FROM inventory_items
     WHERE real_world_location_id = $1 AND product_id = $2 AND lot = $3
```

| on_hand |
| --- |
| 10 |

### Trunk lot decremented for the billable trunk-sourced bill-only order — ✅ PASS

**Assertion:** Trunk lot LOT-2025-005678 ends at 4

```sql
SELECT SUM(quantity_ready)::int AS on_hand
     FROM inventory_items
     WHERE real_world_location_id = $1 AND product_id = $2 AND lot = $3
```

| on_hand |
| --- |
| 4 |

### Bill-only orders carry the product line with the warehouse and trunk lots — ✅ PASS

**Assertion:** Bill-only line items exist for lots LOT-2025-001234 and LOT-2025-005678

```sql
SELECT boi.lot_number
     FROM billing_order_items boi
     WHERE boi.product_id = $1 AND boi.lot_number = ANY($2)
     ORDER BY boi.lot_number
```

| lot_number |
| --- |
| LOT-2025-001234 |
| LOT-2025-005678 |

### Both bill-only orders recorded inventory transactions (source_type bill_only_order) — ✅ PASS

**Assertion:** Each bill-only order has a bill_only_order inventory transaction

```sql
SELECT it.source_type, it.source_id
     FROM inventory_transactions it
     WHERE it.source_type = 'bill_only_order' AND it.source_id IN (
       SELECT DISTINCT boi.billing_order_id FROM billing_order_items boi
       WHERE boi.product_id = $1)
```

| source_type | source_id |
| --- | --- |
| bill_only_order | 019fc9e0-7d9b-700e-a987-5842236007ee |
| bill_only_order | 019fc9e0-fdf3-7125-9dbb-00e622c7a90f |

### Inventory-history rows record the movements with user + timestamp — ✅ PASS

**Assertion:** At least two movement rows exist (receipt + decrements), each with a timestamp; movements are attributed to users

```sql
SELECT ih.quantity, ih.status, ih.changed_by, ih.created_at, ii.lot
     FROM inventory_history ih
     JOIN inventory_items ii ON ii.id = ih.item_id
     WHERE ii.product_id = $1
     ORDER BY ih.created_at ASC
```

| quantity | status | changed_by | created_at | lot |
| --- | --- | --- | --- | --- |
| 1 | ready | NULL | 2026-08-03T23:05:28.132Z | LOT-2025-001234 |
| 1 | ready | 17b8c9d0-e1f2-3456-1234-567890123456 | 2026-08-03T23:06:00.432Z | LOT-2025-001234 |
| 1 | ready | 17b8c9d0-e1f2-3456-1234-567890123456 | 2026-08-03T23:06:33.296Z | LOT-2025-005678 |

### Direct Order Created email names the product — ✅ PASS

**Assertion:** Captured email contains: NEURO-DEVICE-001

```sql
Email HTML inspection: a /Direct_Order_Created/ capture must contain NEURO-DEVICE-001
```

| file | matched |
| --- | --- |
| 2026-08-03T23-04-17-378Z-Direct_Order_Created_-_OR-1-FO-1.html | true |

### New Bill-Only email carries the trunk lot — ✅ PASS

**Assertion:** Captured email contains: NEURO-DEVICE-001, LOT-2025-005678

```sql
Email HTML inspection: a /New_Bill-Only_Order/ capture must contain NEURO-DEVICE-001, LOT-2025-005678
```

| file | matched |
| --- | --- |
| 2026-08-03T23-06-01-191Z-New_Bill-Only_Order_-_8_3_2026_-_Vantis_BO-2.html | false |
| 2026-08-03T23-06-34-265Z-New_Bill-Only_Order_-_8_3_2026_-_Vantis_BO-3.html | true |

### Delivered Order (DOF) email carries the trunk lot — ✅ PASS

**Assertion:** Captured email contains: NEURO-DEVICE-001, LOT-2025-005678

```sql
Email HTML inspection: a /Delivered_Order/ capture must contain NEURO-DEVICE-001, LOT-2025-005678
```

| file | matched |
| --- | --- |
| 2026-08-03T23-06-48-805Z-Delivered_Order_-_8_3_2026_-_Vantis_BO-3.html | true |

## Audit & Email Assertion Ledger

Per-declaration outcome of every `expectedAuditActions` and `expectedEmailTemplates` entry written into the orchestrator. Missing evidence here is a real test failure, not a soft warning.

### Email Template Assertions

Each row asserts that a declared `expectedEmailTemplates` entry was matched (case-insensitive substring) by a captured email subject or template. A ❌ flips overall status to FAIL.

| Step | Expected Template | Found |
|------|-------------------|-------|
| Step 5: Approve order | `Direct Order Created` | ✅ |
| Step 11: Trunk bill-only | `New Bill-Only Order` | ✅ |
| Step 12: DOF notification email | `Delivered Order` | ✅ |

## Audit Log Events

Every row written to `audit_events` while this test was running (scoped to the demo organizations). Provides compliance evidence that user actions are traced end-to-end (URS-003).

**Capture window start:** 2026-08-03T23:03:20.604Z

<details><summary>Query used to capture events</summary>

```sql
SELECT
    ae.created_at,
    ae.event_type,
    ae.action,
    ae.user_id,
    u.email AS user_email,
    ae.organization_id,
    o.name AS organization_name,
    ae.object_id,
    ae.secondary_object_id,
    ae.payload,
    ae.route,
    ae.trace_id
  FROM audit_events ae
  LEFT JOIN users u ON u.id = ae.user_id
  LEFT JOIN organizations o ON o.id = ae.organization_id
  WHERE ae.created_at >= $1
    AND ae.organization_id = ANY($2::uuid[])
  ORDER BY ae.created_at ASC
```
</details>

38 event(s) captured:

| Time | Type | Action | User | Org | Object ID | Performed | Reason |
|------|------|--------|------|-----|-----------|-----------|--------|
| 2026-08-03 23:03:21Z | checklist | checklists.create | — | Corveta Surgical Group | 019fc9de-0f5a-79f9-bb52-3da308353ec2 | — |  |
| 2026-08-03 23:03:21Z | decision | ensure_lot_expiration_checklist | — | Corveta Surgical Group | b2c3d4e5-f6a7-8901-bcde-f12345678901 | yes | created_1_reopened_0_already_open_1 |
| 2026-08-03 23:03:25Z | user_log | user:login | alex.admin@vantismedical.com | Vantis | — | — |  |
| 2026-08-03 23:03:32Z | user_log | user:login | alex.admin@vantismedical.com | Vantis | — | — |  |
| 2026-08-03 23:03:41Z | user_log | user:login | alex.admin@vantismedical.com | Vantis | — | — |  |
| 2026-08-03 23:03:46Z | user_log | user:login | blair.bennett@corvetasurgical.com | Corveta Surgical Group | — | — |  |
| 2026-08-03 23:04:05Z | checklist | checklists.create | blair.bennett@corvetasurgical.com | Vantis | 019fc9de-bc29-7bc7-8afa-9bded8e697bb | — |  |
| 2026-08-03 23:04:05Z | decision | order_request_created | blair.bennett@corvetasurgical.com | Vantis | 019fc9de-bc12-7d0a-991b-2593c7949fd0 | yes | Order request OR-1 created (importSource=manual) |
| 2026-08-03 23:04:07Z | user_log | user:login | alex.admin@vantismedical.com | Vantis | — | — |  |
| 2026-08-03 23:04:15Z | fulfillment_order | status_change | alex.admin@vantismedical.com | Vantis | 019fc9de-e52f-7b70-9db0-117fd0f4efa0 | — | Order automatically submitted for fulfillment |
| 2026-08-03 23:04:15Z | fulfillment_order | status_change | alex.admin@vantismedical.com | Vantis | 019fc9de-e52f-7b70-9db0-117fd0f4efa0 | — | Fulfillment order created from approved items |
| 2026-08-03 23:04:15Z | decision | extensiv_order_push.skipped | — | Vantis | 019fc9de-e52f-7b70-9db0-117fd0f4efa0 | no | wms_feature_flag_disabled |
| 2026-08-03 23:04:15Z | decision | tickets.checklist_item_resolve.auto_resolve_ticket | — | Vantis | 019fc9de-bc2d-7695-b80f-d9478374b639 | no | Checklist item is not linked to any ticket. |
| 2026-08-03 23:04:17Z | transactional_email | direct_order_created | — | Corveta Surgical Group | 019fc9de-e52f-7b70-9db0-117fd0f4efa0 | — |  |
| 2026-08-03 23:04:56Z | user_log | user:login | alex.admin@vantismedical.com | Vantis | — | — |  |
| 2026-08-03 23:05:08Z | decision | recalculate_order_status | — | Vantis | 019fc9de-bc12-7d0a-991b-2593c7949fd0 | yes | Shipping status updated from null to shipped |
| 2026-08-03 23:05:08Z | fulfillment_order | status_change | — | Vantis | 019fc9de-e52f-7b70-9db0-117fd0f4efa0 | — | All items shipped |
| 2026-08-03 23:05:13Z | user_log | user:login | alex.admin@vantismedical.com | Vantis | — | — |  |
| 2026-08-03 23:05:22Z | user_log | user:login | alex.admin@vantismedical.com | Vantis | — | — |  |
| 2026-08-03 23:05:28Z | decision | enable_team_tracked_inventory_routing | — | Corveta Surgical Group | 019fc9df-b0f3-771b-81d5-2be99534c24f | no | Package linked to direct order |
| 2026-08-03 23:05:28Z | decision | recalculate_order_status | — | Vantis | 019fc9de-bc12-7d0a-991b-2593c7949fd0 | yes | Shipping status updated from shipped to delivered |
| 2026-08-03 23:05:28Z | fulfillment_order | status_change | — | Vantis | 019fc9de-e52f-7b70-9db0-117fd0f4efa0 | — | All items delivered |
| 2026-08-03 23:05:35Z | user_log | user:login | blair.bennett@corvetasurgical.com | Corveta Surgical Group | — | — |  |
| 2026-08-03 23:06:00Z | billing_order | status_change | blair.bennett@corvetasurgical.com | Vantis | 019fc9e0-7d9b-700e-a987-5842236007ee | — |  |
| 2026-08-03 23:06:00Z | decision | bill_only.link_purchase_order | blair.bennett@corvetasurgical.com | Corveta Surgical Group | 019fc9e0-7d9b-700e-a987-5842236007ee | no | no_purchase_order_selected |
| 2026-08-03 23:06:00Z | decision | bill_only_order.inventory_items_decrement | blair.bennett@corvetasurgical.com | Vantis | 019fc9e0-7d9b-700e-a987-5842236007ee | yes | inventory_items_decremented |
| 2026-08-03 23:06:00Z | decision | bill_only_order.direct_po_import_on_create | blair.bennett@corvetasurgical.com | Vantis | 019fc9e0-7d9b-700e-a987-5842236007ee | no | No uploaded PO documents |
| 2026-08-03 23:06:01Z | transactional_email | new_bill_only | — | Corveta Surgical Group | 019fc9e0-7d9b-700e-a987-5842236007ee | — |  |
| 2026-08-03 23:06:04Z | user_log | user:login | blair.bennett@corvetasurgical.com | Corveta Surgical Group | — | — |  |
| 2026-08-03 23:06:11Z | user_log | user:login | blair.bennett@corvetasurgical.com | Corveta Surgical Group | — | — |  |
| 2026-08-03 23:06:33Z | decision | bill_only_order.inventory_items_decrement | blair.bennett@corvetasurgical.com | Vantis | 019fc9e0-fdf3-7125-9dbb-00e622c7a90f | yes | inventory_items_decremented |
| 2026-08-03 23:06:33Z | decision | bill_only_order.direct_po_import_on_create | blair.bennett@corvetasurgical.com | Vantis | 019fc9e0-fdf3-7125-9dbb-00e622c7a90f | no | No uploaded PO documents |
| 2026-08-03 23:06:33Z | billing_order | status_change | blair.bennett@corvetasurgical.com | Vantis | 019fc9e0-fdf3-7125-9dbb-00e622c7a90f | — |  |
| 2026-08-03 23:06:33Z | decision | bill_only.link_purchase_order | blair.bennett@corvetasurgical.com | Corveta Surgical Group | 019fc9e0-fdf3-7125-9dbb-00e622c7a90f | no | no_purchase_order_selected |
| 2026-08-03 23:06:34Z | transactional_email | new_bill_only | — | Corveta Surgical Group | 019fc9e0-fdf3-7125-9dbb-00e622c7a90f | — |  |
| 2026-08-03 23:06:39Z | user_log | user:login | alex.admin@vantismedical.com | Vantis | — | — |  |
| 2026-08-03 23:06:48Z | transactional_email | bill_only_dof_generated | — | Corveta Surgical Group | 019fc9e0-fdf3-7125-9dbb-00e622c7a90f | — |  |
| 2026-08-03 23:07:06Z | user_log | user:login | alex.admin@vantismedical.com | Vantis | — | — |  |

## Email Evidence

4 notification email(s) were captured during this test run. Each email is rendered as a screenshot for compliance review.

### 1. Direct Order Created - OR-1-FO-1

**Template:** `Direct_Order_Created_-_OR-1-FO-1`

![Direct Order Created - OR-1-FO-1](screenshots/emails/2026-08-03T23-04-17-378Z-Direct_Order_Created_-_OR-1-FO-1.png)

### 2. New Bill-Only Order - 8/3/2026 - Vantis BO-2

**Template:** `New_Bill-Only_Order_-_8_3_2026_-_Vantis_BO-2`

![New Bill-Only Order - 8/3/2026 - Vantis BO-2](screenshots/emails/2026-08-03T23-06-01-191Z-New_Bill-Only_Order_-_8_3_2026_-_Vantis_BO-2.png)

### 3. New Bill-Only Order - 8/3/2026 - Vantis BO-3

**Template:** `New_Bill-Only_Order_-_8_3_2026_-_Vantis_BO-3`

![New Bill-Only Order - 8/3/2026 - Vantis BO-3](screenshots/emails/2026-08-03T23-06-34-265Z-New_Bill-Only_Order_-_8_3_2026_-_Vantis_BO-3.png)

### 4. Delivered Order - 8/3/2026 - Vantis BO-3

**Template:** `Delivered_Order_-_8_3_2026_-_Vantis_BO-3`

![Delivered Order - 8/3/2026 - Vantis BO-3](screenshots/emails/2026-08-03T23-06-48-805Z-Delivered_Order_-_8_3_2026_-_Vantis_BO-3.png)
