Skip to content

URS-023 · Generate Shipping Documentation Linked to Orders

Title: Generate Shipping Documentation Linked to Orders Date: 2026-09-29T02:24:52.200Z Duration: 190.3s Overall Status: ✅ PASS

The system shall generate orders and link shipments to the corresponding order.

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

Status: ✅ PASS

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

What this step proves:

A sales rep creates a new order in the system. This establishes the source document that shipping documentation will later be linked to, verifying the order initiation flow.

Audit events generated by this step:

(Evidence scoped to step execution window: 2026-09-29T02:25:33.647Z → 2026-09-29T02:25:49.567Z)

TimeTypeActionUserOrgPerformed
2026-09-29 02:25:44Zchecklistchecklists.createblair.bennett@corvetasurgical.comVantis—
2026-09-29 02:25:44Zdecisionorder_request_createdblair.bennett@corvetasurgical.comVantisyes
2026-09-29 02:25:44Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisno

Emails triggered by this step:

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

Email 1: Drop-Ship Order Created - OR-1-FO-1

Template: Drop-Ship_Order_Created_-_OR-1-FO-1

Drop-Ship Order Created - OR-1-FO-1

Screenshots:

step 01 location selected

step 01 products selected

step 01 review

step 01 order submitted

Video recording:


2. Step 2: Approve and find fulfillment — ✅ PASS

Section titled “2. Step 2: Approve and find fulfillment — ✅ PASS”

What this step proves:

A manufacturer user approves the submitted order and locates the associated fulfillment record. This verifies the order transitions to an approvable state and that the system correctly resolves the fulfillment entry for the order.

Audit events generated by this step:

(Evidence scoped to step execution window: 2026-09-29T02:26:37.272Z → 2026-09-29T02:27:03.793Z)

TimeTypeActionUserOrgPerformed
2026-09-29 02:26:44ZdecisionbasicErp.deriveSalesOrdermark.manufacturer@vantismedical.comVantisno
2026-09-29 02:26:44Zdecisionextensiv_order_push.skipped—Vantisno
2026-09-29 02:26:44Zfulfillment_orderstatus_changemark.manufacturer@vantismedical.comVantis—
2026-09-29 02:26:44Zfulfillment_orderstatus_changemark.manufacturer@vantismedical.comVantis—
2026-09-29 02:26:44Zdecisiontickets.checklist_item_resolve.auto_resolve_ticket—Vantisno
2026-09-29 02:26:45Ztransactional_emailorder_created—Corveta Surgical Group—

Screenshots:

step 02 order requests list

step 02 order detail

step 02 approval dialog

step 02 order approved

step 02 fulfillment list

step 02 fulfillment detail

Video recording:


What this step proves:

A shipping-notice CSV manifest is generated for the fulfillment order, uploaded to S3, and imported via the production Restate Import.runImportJob handler — the same path the UI /packages/upload form uses. This creates the shipping_package + items, links the package to the fulfillment order, and advances the fulfillment-order status.

Audit events generated by this step:

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

TimeTypeActionUserOrgPerformed
2026-09-29 02:26:44Zfulfillment_orderstatus_changemark.manufacturer@vantismedical.comVantis—
2026-09-29 02:26:44Zfulfillment_orderstatus_changemark.manufacturer@vantismedical.comVantis—
2026-09-29 02:27:39Zfulfillment_orderstatus_change—Vantis—

Screenshots:

step 03 linked packages

Video recording:


What this step proves:

The shipment package record is verified to be linked to the originating order. This confirms that shipping documentation is correctly associated with the source order, satisfying the traceability requirement.

Screenshots:

step 04 fulfillment with package

step 04 shipping documentation

Video recording:


What this step proves:

This step proves the shipment is correctly linked to the order in the database. It provides direct evidence that the shipping record references the originating order, confirming the required order-to-shipment traceability.

Screenshots:

step 05 order with shipment

step 05 order status

Video recording:


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.

Assertion: At least one order request should have been created by Blair Bennett recently

SELECT orq.id, orq.request_number, orq.status, orq.shipping_status,
orq.created_at, orq.requested_by_user_id
FROM order_requests orq
WHERE orq.requested_by_user_id = $1
AND orq.created_at > NOW() - INTERVAL '30 minutes'
ORDER BY orq.created_at DESC
LIMIT 5
idrequest_numberstatusshipping_statuscreated_atrequested_by_user_id
01a0eafb-7b2b-7bf6-947d-5f414aa0099aOR-1approvedshipped2026-09-29T02:25:44.542Z17b8c9d0-e1f2-3456-1234-567890123456

Fulfillment order created and linked to order request — ✅ PASS

Section titled “Fulfillment order created and linked to order request — ✅ PASS”

Assertion: A fulfillment order should exist linked to the order request

SELECT fo.id, fo.order_number, fo.status, fo.order_request_id,
fo.fulfilling_organization_id, fo.requesting_organization_id,
fo.shipping_street_address, fo.shipping_city, fo.shipping_state, fo.shipping_zip,
fo.created_at
FROM fulfillment_orders fo
JOIN order_requests orq ON fo.order_request_id = orq.id
WHERE orq.requested_by_user_id = $1
AND orq.created_at > NOW() - INTERVAL '30 minutes'
ORDER BY fo.created_at DESC
LIMIT 5
idorder_numberstatusorder_request_idfulfilling_organization_idrequesting_organization_idshipping_street_addressshipping_cityshipping_stateshipping_zipcreated_at
01a0eafc-66fe-765f-bd8d-1387f3061e43OR-1-FO-1shipped01a0eafb-7b2b-7bf6-947d-5f414aa0099aa1b2c3d4-e5f6-7890-abcd-ef1234567890b2c3d4e5-f6a7-8901-bcde-f12345678901100 Charles River Plaza, Suite 300BostonMA021142026-09-29T02:26:44.994Z

Fulfillment order items match ordered products — ✅ PASS

Section titled “Fulfillment order items match ordered products — ✅ PASS”

Assertion: Fulfillment order should contain both NovaPatch and LiraLock products

SELECT foi.id, foi.fulfillment_order_id, foi.product_id, foi.description, foi.quantity,
op.title as product_name, op.sku
FROM fulfillment_order_items foi
JOIN org_products op ON foi.product_id = op.id
JOIN fulfillment_orders fo ON foi.fulfillment_order_id = fo.id
JOIN order_requests orq ON fo.order_request_id = orq.id
WHERE orq.requested_by_user_id = $1
AND orq.created_at > NOW() - INTERVAL '30 minutes'
ORDER BY op.title
idfulfillment_order_idproduct_iddescriptionquantityproduct_namesku
01a0eafc-6700-7636-98be-aa88f347fcad01a0eafc-66fe-765f-bd8d-1387f3061e43fc000001-0000-4000-8000-000000000001LiraLock® Implant Kit2LiraLock® Implant KitIK2025LL
01a0eafc-6701-7dae-aeab-c3e18459b21501a0eafc-66fe-765f-bd8d-1387f3061e4301989ca2-6a54-7834-8376-06a0251bacd8NovaPatch® PET3NovaPatch® PETNP019N1A

Shipping package created with correct tracking — ✅ PASS

Section titled “Shipping package created with correct tracking — ✅ PASS”

Assertion: Shipping package should exist with tracking prefix URS023-TEST- and carrier UPS

SELECT sp.id, sp.tracking_number, sp.carrier, sp.status,
sp.organization_id, sp.created_at
FROM shipping_packages sp
WHERE sp.tracking_number LIKE $1
AND sp.organization_id IN ($2, $3)
AND sp.created_at > NOW() - INTERVAL '30 minutes'
ORDER BY sp.created_at DESC
LIMIT 1
idtracking_numbercarrierstatusorganization_idcreated_at
01a0eafd-398b-75b9-810b-495b8d9693b5URS023-TEST-1790648699343upsunknowna1b2c3d4-e5f6-7890-abcd-ef12345678902026-09-29T02:27:39.024Z

Shipping package linked to fulfillment order — ✅ PASS

Section titled “Shipping package linked to fulfillment order — ✅ PASS”

Assertion: The shipping_package_fulfillment_orders join table should link the package to the fulfillment order

SELECT spfo.id, spfo.shipping_package_id, spfo.fulfillment_order_id,
sp.tracking_number, fo.order_number
FROM shipping_package_fulfillment_orders spfo
JOIN shipping_packages sp ON spfo.shipping_package_id = sp.id
JOIN fulfillment_orders fo ON spfo.fulfillment_order_id = fo.id
WHERE sp.tracking_number LIKE $1
AND sp.organization_id IN ($2, $3)
AND sp.created_at > NOW() - INTERVAL '30 minutes'
idshipping_package_idfulfillment_order_idtracking_numberorder_number
01a0eafd-3995-78e2-a41a-4b70d011cfe901a0eafd-398b-75b9-810b-495b8d9693b501a0eafc-66fe-765f-bd8d-1387f3061e43URS023-TEST-1790648699343OR-1-FO-1

Shipping package items contain correct products with order linkage — ✅ PASS

Section titled “Shipping package items contain correct products with order linkage — ✅ PASS”

Assertion: Shipping package items should reference the ordered products with correct quantities AND populate order_number + order_line_number for traceability

SELECT spi.id, spi.package_id, spi.quantity, spi.order_number, spi.order_line_number,
spi.info->>'sku' as sku, spi.info->>'productId' as product_id
FROM shipping_package_items spi
JOIN shipping_packages sp ON spi.package_id = sp.id
WHERE sp.tracking_number LIKE $1
AND sp.organization_id IN ($2, $3)
AND sp.created_at > NOW() - INTERVAL '30 minutes'
ORDER BY spi.id
idpackage_idquantityorder_numberorder_line_numberskuproduct_id
01a0eafd-3993-7997-b457-4fe93858119401a0eafd-398b-75b9-810b-495b8d9693b53OR-1-FO-11NP019N1ANULL
01a0eafd-3993-7997-b457-4fea2b5284c001a0eafd-398b-75b9-810b-495b8d9693b52OR-1-FO-12LL516SNANULL

Fulfillment order status advanced after shipment creation — ✅ PASS

Section titled “Fulfillment order status advanced after shipment creation — ✅ PASS”

Assertion: Fulfillment order status should be one of [partially_fulfilled, fulfilled, partially_shipped, shipped, delivered, partially_delivered, completed] once a shipment exists

SELECT fo.id, fo.order_number, fo.status
FROM fulfillment_orders fo
JOIN order_requests orq ON fo.order_request_id = orq.id
WHERE orq.requested_by_user_id = $1
AND orq.created_at > NOW() - INTERVAL '30 minutes'
ORDER BY fo.created_at DESC
LIMIT 1
idorder_numberstatus
01a0eafc-66fe-765f-bd8d-1387f3061e43OR-1-FO-1shipped

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.

Each row asserts that a declared expectedAuditActions entry produced a matching row in audit_events. A ❌ flips overall status to FAIL — the declaration is real proof, not just an annotation.

StepExpected Audit ActionFound
Step 1: Create orderuser_log:user:login✅
Step 2: Approve and find fulfillmentuser_log:user:login✅
Step 3: Create shipmentfulfillment_order:status_change✅

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.

StepExpected TemplateFound
Step 1: Create orderDrop-Ship Order Created✅

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-09-29T02:24:51.280Z

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

18 event(s) captured:

TimeTypeActionUserOrgObject IDPerformedReason
2026-09-29 02:24:53Zdecisionupgrade_lot_expiration_checklist_priority—Corveta Surgical Groupb2c3d4e5-f6a7-8901-bcde-f12345678901nono_open_checklists_below_high
2026-09-29 02:24:53Zdecisionensure_lot_expiration_checklist—Corveta Surgical Groupb2c3d4e5-f6a7-8901-bcde-f12345678901yescreated_1_reopened_0_already_open_1_refreshed_1
2026-09-29 02:25:21Zuser_loguser:loginblair.bennett@corvetasurgical.comCorveta Surgical Group——
2026-09-29 02:25:44Zchecklistchecklists.createblair.bennett@corvetasurgical.comVantis01a0eafb-7b75-7659-9b1a-434bc4b7072c—
2026-09-29 02:25:44Zdecisionorder_request_createdblair.bennett@corvetasurgical.comVantis01a0eafb-7b2b-7bf6-947d-5f414aa0099ayesOrder request OR-1 created (importSource=manual)
2026-09-29 02:25:44Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisa1b2c3d4-e5f6-7890-abcd-ef1234567890nono_blocking_relationship
2026-09-29 02:25:53Zuser_loguser:loginmark.manufacturer@vantismedical.comVantis——
2026-09-29 02:26:44ZdecisionbasicErp.deriveSalesOrdermark.manufacturer@vantismedical.comVantis01a0eafb-7b2b-7bf6-947d-5f414aa0099anoflag_disabled
2026-09-29 02:26:44Zdecisionextensiv_order_push.skipped—Vantis01a0eafc-66fe-765f-bd8d-1387f3061e43nowms_feature_flag_disabled
2026-09-29 02:26:44Zfulfillment_orderstatus_changemark.manufacturer@vantismedical.comVantis01a0eafc-66fe-765f-bd8d-1387f3061e43—Order automatically submitted for fulfillment
2026-09-29 02:26:44Zfulfillment_orderstatus_changemark.manufacturer@vantismedical.comVantis01a0eafc-66fe-765f-bd8d-1387f3061e43—Fulfillment order created from approved items
2026-09-29 02:26:44Zdecisiontickets.checklist_item_resolve.auto_resolve_ticket—Vantis01a0eafb-7b89-71ec-89af-1b62abb6b868noChecklist item is not linked to any ticket.
2026-09-29 02:26:45Ztransactional_emailorder_created—Corveta Surgical Group01a0eafc-66fe-765f-bd8d-1387f3061e43—
2026-09-29 02:27:37Zuser_loguser:loginmark.manufacturer@vantismedical.comVantis——
2026-09-29 02:27:39Zdecisionrecalculate_order_status—Vantis01a0eafb-7b2b-7bf6-947d-5f414aa0099ayesShipping status updated from null to shipped
2026-09-29 02:27:39Zfulfillment_orderstatus_change—Vantis01a0eafc-66fe-765f-bd8d-1387f3061e43—All items shipped
2026-09-29 02:27:46Zuser_loguser:loginmark.manufacturer@vantismedical.comVantis——
2026-09-29 02:27:55Zuser_loguser:loginmark.manufacturer@vantismedical.comVantis——

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

Template: Drop-Ship_Order_Created_-_OR-1-FO-1

Drop-Ship Order Created - OR-1-FO-1