Order Ready Stylesheet
This page provides the XSLT Stylesheet O2C - View Order Ready for the XML Order Ready messages (Step 5) in the Order-to-Cash demo.

The XML Order Ready message rendered as a packing slip: warehouse and zone, ship-to, shipment with carrier and tracking number, and the packed items with serial numbers.
Give the warehouse and support the packing slip. With Nodinite Stylesheets, anyone who traces an order sees where it was packed, how it ships, and the tracking number, without reading XML. On this page, you will:
- ✅ Transform the XML Order Ready message into a packing slip with XSLT
- ✅ Show the ship-to address and the shipment next to each other
- ✅ Open the packing slip from Log Views and from BPM Log Search New 7.11
Understanding the Order Ready Stylesheet
A Stylesheet is tied to a Message Type. The business Log Event of Step 5, Order Completed for Transport, carries the Message Type O2C.Order.Ready/1.0, so Nodinite offers O2C - View Order Ready for it. XSLT reads the XML body directly; the namespace http://schemas.Contoso.example/O2C/1.0 is bound to the prefix o in the template, as in the Order Entry Stylesheet.
Log Event (XML)"] --> B{"fa:fa-tags Message Type
O2C.Order.Ready/1.0"} B --> C["fa:fa-file-code O2C - View Order Ready
(XSLT)"] C --> D["fa:fa-file-alt Packing slip"] D --> E1["fa:fa-search Log Views"] D --> E2["fa:fa-sitemap BPM Log Search"] style A fill:#2678BD style B fill:#9E59BB style C fill:#3F827B style D fill:#93d16d style E1 fill:#2678BD style E2 fill:#2678BD
The Order Ready Log Event (blue) is matched to its Message Type (purple); the XSLT Stylesheet (teal) renders the packing slip (green), which users open from a Log View or from BPM Log Search (blue).
Where Users Open the Packing Slip
| Where | How |
|---|---|
| Log Views | Search the Log View, open Action on the Order Completed for Transport event, and choose View message formatted as 'O2C - View Order Ready'. |
| BPM Log Search New 7.11 | Click Log Search on the Order-to-Cash BPM, search for the order number, and open Action on the Ready for Transport event in the BPM Viewer. |
The dialog is titled View message body formatted as 'O2C - View Order Ready' and has the buttons Open in New Window, Print, and Close. The forwarding event of the step, Packing Request Received, logs O2C.Forwarding/1.0, so this Stylesheet isn't offered there.
Stylesheet Settings
| Setting | Value | Why |
|---|---|---|
| Name | O2C - View Order Ready |
The name users pick in the Action menu |
| Type | XSLT | The Order Ready body is XML |
| Render as HTML | Checked | The template outputs an HTML page |
| Message Body is Json | Not shown | The checkbox only appears for Liquid; XSLT always reads the body as XML |
| Message Types | O2C.Order.Ready/1.0 |
Only the Step 5 business event gets the Stylesheet |
Input XML
The Order Ready body of order 1 as logged by the demo data script, the same message as on the Step 5 page. Warehouse, carrier, and address follow the customer (the six demo customers).
<?xml version="1.0" encoding="utf-8"?>
<OrderPacking xmlns="http://schemas.Contoso.example/O2C/1.0">
<PackingHeader>
<PackingId>PKG-2025-10001</PackingId>
<OrderId>ORD-10001</OrderId>
<PackingDate>2025-10-16T16:45:30Z</PackingDate>
<PackingStatus>COMPLETED</PackingStatus>
<Warehouse>WH-01</Warehouse>
<Zone>ZONE-A</Zone>
</PackingHeader>
<Customer>
<CustomerId>CUST-001</CustomerId>
<CustomerName>Contoso Corporation</CustomerName>
<ShippingAddress>100 Commerce Drive, Suite 100, Springfield, IL 62701</ShippingAddress>
</Customer>
<PackedItems>
<PackedItem>
<LineId>1</LineId>
<SKU>SKU-DEMO-001</SKU>
<Description>Demo Widget</Description>
<OrderedQuantity>1</OrderedQuantity>
<PackedQuantity>1</PackedQuantity>
<SerialNumber>SN-DW-202510001</SerialNumber>
<Condition>NEW</Condition>
</PackedItem>
</PackedItems>
<ShipmentInfo>
<TrackingNumber>TRK-20251016-10001</TrackingNumber>
<Carrier>Standard Courier</Carrier>
<ShippingMethod>GROUND</ShippingMethod>
<EstimatedDeliveryDate>2025-10-21</EstimatedDeliveryDate>
<ShipmentWeight>5.0</ShipmentWeight>
<WeightUnit>LBS</WeightUnit>
</ShipmentInfo>
<OrderTotal>99.95</OrderTotal>
<Currency>USD</Currency>
</OrderPacking>
XML to Packing Slip Mapping
XML element (prefix o) |
Shown in the packing slip as |
|---|---|
o:PackingHeader/o:PackingId |
The title |
o:PackingHeader/o:OrderId, o:Warehouse, o:Zone |
Order …, packed in under the title |
o:Customer/o:CustomerName, o:Customer/o:ShippingAddress |
Ship to |
o:ShipmentInfo/o:Carrier, o:ShippingMethod, o:TrackingNumber, o:EstimatedDeliveryDate |
Shipment |
o:PackedItems/o:PackedItem |
Packed Items table: Line, SKU, Description, Ordered, Packed, Serial Number, Condition |
o:PackingHeader/o:PackingStatus |
Status, as a badge |
XML values show exactly as the message holds them. The packing date, the weight, and the order total are not displayed.
XSLT Template
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:o="http://schemas.Contoso.example/O2C/1.0" exclude-result-prefixes="o">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/o:OrderPacking">
<html>
<head>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
</head>
<body>
<div class="container mt-4">
<h1 class="mb-0">Packing Slip <xsl:value-of select="o:PackingHeader/o:PackingId"/></h1>
<span class="text-muted">Order <xsl:value-of select="o:PackingHeader/o:OrderId"/>, packed in <xsl:value-of select="o:PackingHeader/o:Warehouse"/> / <xsl:value-of select="o:PackingHeader/o:Zone"/></span>
<div class="row mt-3">
<div class="col">
<h6 class="text-muted mb-1">Ship to</h6>
<strong><xsl:value-of select="o:Customer/o:CustomerName"/></strong><br/>
<xsl:value-of select="o:Customer/o:ShippingAddress"/>
</div>
<div class="col">
<h6 class="text-muted mb-1">Shipment</h6>
<xsl:value-of select="o:ShipmentInfo/o:Carrier"/>, <xsl:value-of select="o:ShipmentInfo/o:ShippingMethod"/><br/>
Tracking <strong><xsl:value-of select="o:ShipmentInfo/o:TrackingNumber"/></strong><br/>
Estimated delivery <xsl:value-of select="o:ShipmentInfo/o:EstimatedDeliveryDate"/>
</div>
</div>
<h5 class="mt-4">Packed Items</h5>
<table class="table table-sm">
<thead>
<tr><th>Line</th><th>SKU</th><th>Description</th><th class="text-center">Ordered</th><th class="text-center">Packed</th><th>Serial Number</th><th>Condition</th></tr>
</thead>
<tbody>
<xsl:for-each select="o:PackedItems/o:PackedItem">
<tr>
<td><xsl:value-of select="o:LineId"/></td>
<td><xsl:value-of select="o:SKU"/></td>
<td><xsl:value-of select="o:Description"/></td>
<td class="text-center"><xsl:value-of select="o:OrderedQuantity"/></td>
<td class="text-center"><xsl:value-of select="o:PackedQuantity"/></td>
<td><xsl:value-of select="o:SerialNumber"/></td>
<td><xsl:value-of select="o:Condition"/></td>
</tr>
</xsl:for-each>
</tbody>
</table>
<p>Status: <span class="badge badge-success"><xsl:value-of select="o:PackingHeader/o:PackingStatus"/></span></p>
<div class="mt-5 pt-3 border-top text-center text-muted"><small>Rendered by a Nodinite Stylesheet (XSLT) from the Order Ready message</small></div>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Next Steps
- Order Shipped Stylesheet — The pipe-separated delivery message of Step 6
- View all O2C stylesheets — Every demo Stylesheet and its settings
- Generate O2C Demo Data — Create test messages for this Stylesheet
Related Topics
- Order Planned Stylesheet
- 5. Order Completed for Transport — The step this message belongs to
- What is a Stylesheet?
- Add or manage Stylesheet
- Message Types