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

The XML Order Entry message rendered as an ERP order document: ERP reference, order and entry dates, status, and the order lines with their inventory reservation and the total.
Read the ERP's XML order as a document, not as markup. With Nodinite Stylesheets, operators see what the ERP registered without reading namespaced XML. On this page, you will:
- ✅ Transform the XML Order Entry message into an ERP order document with XSLT
- ✅ Show the ERP reference, the order and entry dates, the status, and the order lines with a Reserved column
- ✅ Open the document from Log Views and from BPM Log Search New 7.11
Understanding the Order Entry Stylesheet
A Stylesheet is tied to a Message Type. The business Log Event of Step 2, Order Entry in ERP Finished, carries the Message Type O2C.Order.Entry/1.0, so Nodinite offers O2C - View Order Entry 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.
Log Event (XML)"] --> B{"fa:fa-tags Message Type
O2C.Order.Entry/1.0"} B --> C["fa:fa-file-code O2C - View Order Entry
(XSLT)"] C --> D["fa:fa-file-alt Order Entry document"] 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 Entry Log Event (blue) is matched to its Message Type (purple); the XSLT Stylesheet (teal) renders the document (green), which users open from a Log View or from BPM Log Search (blue).
Where Users Open the Order Entry Document
| Where | How |
|---|---|
| Log Views | Search the Log View, open Action on the Order Entry in ERP Finished event, and choose View message formatted as 'O2C - View Order Entry'. |
| 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 Order Entry event in the BPM Viewer. |
The dialog is titled View message body formatted as 'O2C - View Order Entry' and has the buttons Open in New Window, Print, and Close. The forwarding event of the step, Order Entry Received, logs O2C.Forwarding/1.0, so this Stylesheet isn't offered there.
Stylesheet Settings
| Setting | Value | Why |
|---|---|---|
| Name | O2C - View Order Entry |
The name users pick in the Action menu |
| Type | XSLT | The Order Entry 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.Entry/1.0 |
Only the Step 2 business event gets the Stylesheet |
Input XML
The Order Entry body of order 1 as logged by the demo data script, the same message as on the Step 2 page. Other orders carry another customer, product, quantity, and total (the six demo customers).
<?xml version="1.0" encoding="utf-8"?>
<OrderEntry xmlns="http://schemas.Contoso.example/O2C/1.0">
<OrderHeader>
<OrderId>ORD-10001</OrderId>
<OrderDate>2025-10-14T09:15:00Z</OrderDate>
<EntryDate>2025-10-14T09:18:30Z</EntryDate>
<OrderStatus>ENTERED</OrderStatus>
</OrderHeader>
<Customer>
<CustomerId>CUST-001</CustomerId>
<CustomerName>Contoso Corporation</CustomerName>
<CustomerEmail>orders@Contoso.example.com</CustomerEmail>
</Customer>
<OrderLines>
<OrderLine>
<LineId>1</LineId>
<SKU>SKU-DEMO-001</SKU>
<Description>Demo Widget</Description>
<Quantity>1</Quantity>
<UnitPrice>99.95</UnitPrice>
<LineTotal>99.95</LineTotal>
<InventoryReserved>true</InventoryReserved>
</OrderLine>
</OrderLines>
<OrderTotal>99.95</OrderTotal>
<Currency>USD</Currency>
<ERPReferenceNumber>ERP-2025-10001</ERPReferenceNumber>
</OrderEntry>
XML to Document Mapping
XML element (prefix o) |
Shown in the document as |
|---|---|
o:OrderHeader/o:OrderId |
The title, and Order ID |
o:ERPReferenceNumber |
Registered in the ERP as under the title |
o:Customer/o:CustomerName, o:Customer/o:CustomerId |
Customer |
o:OrderHeader/o:OrderDate, o:OrderHeader/o:EntryDate |
Order Date, Entry Date |
o:OrderHeader/o:OrderStatus |
Status, as a badge |
o:OrderLines/o:OrderLine |
Order Lines table: Line, SKU, Description, Qty, Unit Price, Line Total |
o:InventoryReserved |
Reserved: Yes for true, otherwise No |
o:OrderTotal, o:Currency |
The Total row |
XML values show exactly as the message holds them: dates stay 2025-10-14T09:15:00Z, and amounts keep their two decimals. CustomerEmail is not displayed.
XSLT Template
The template uses Bootstrap 4 for the layout. exclude-result-prefixes="o" keeps the namespace out of the HTML output.
<?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:OrderEntry">
<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">Order Entry <xsl:value-of select="o:OrderHeader/o:OrderId"/></h1>
<span class="text-muted">Registered in the ERP as <strong><xsl:value-of select="o:ERPReferenceNumber"/></strong></span>
<table class="table mt-3">
<thead>
<tr><th>Order ID</th><th>Customer</th><th>Order Date</th><th>Entry Date</th><th>Status</th></tr>
</thead>
<tbody>
<tr>
<td><strong><xsl:value-of select="o:OrderHeader/o:OrderId"/></strong></td>
<td><strong><xsl:value-of select="o:Customer/o:CustomerName"/></strong><br/><span class="text-muted"><xsl:value-of select="o:Customer/o:CustomerId"/></span></td>
<td><xsl:value-of select="o:OrderHeader/o:OrderDate"/></td>
<td><xsl:value-of select="o:OrderHeader/o:EntryDate"/></td>
<td><span class="badge badge-success"><xsl:value-of select="o:OrderHeader/o:OrderStatus"/></span></td>
</tr>
</tbody>
</table>
<h5 class="mt-4">Order Lines</h5>
<table class="table table-sm">
<thead>
<tr><th>Line</th><th>SKU</th><th>Description</th><th class="text-center">Qty</th><th class="text-right">Unit Price</th><th class="text-right">Line Total</th><th class="text-center">Reserved</th></tr>
</thead>
<tbody>
<xsl:for-each select="o:OrderLines/o:OrderLine">
<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:Quantity"/></td>
<td class="text-right"><xsl:value-of select="o:UnitPrice"/></td>
<td class="text-right"><xsl:value-of select="o:LineTotal"/></td>
<td class="text-center"><xsl:choose><xsl:when test="o:InventoryReserved = 'true'">Yes</xsl:when><xsl:otherwise>No</xsl:otherwise></xsl:choose></td>
</tr>
</xsl:for-each>
</tbody>
<tfoot>
<tr><th colspan="5" class="text-right">Total (<xsl:value-of select="o:Currency"/>)</th><th class="text-right"><xsl:value-of select="o:OrderTotal"/></th><th></th></tr>
</tfoot>
</table>
<div class="mt-5 pt-3 border-top text-center text-muted"><small>Rendered by a Nodinite Stylesheet (XSLT) from the Order Entry message</small></div>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Next Steps
- Order Confirmation Stylesheet — The CSV message of Step 3, rendered with Liquid
- View all O2C stylesheets — Every demo Stylesheet and its settings
- Generate O2C Demo Data — Create test messages for this Stylesheet
Related Topics
- Order Received Stylesheet
- 2. Order Entry in ERP Finished — The step this message belongs to
- What is a Stylesheet?
- Add or manage Stylesheet
- Message Types