This article is the first in a series of five articles that outlines the Optimizely <<product-name>> cXML/PunchOut integration design:
PunchOut/cXML process and design
[PunchOut/cXML configuration and data requirements](🔗)
[PunchOut setup request and response](🔗)
[PunchOut order Message (that is Cart information)](🔗)
[Order request (that is Purchase Order)](🔗)
They provide the technical information necessary to support <<product-name>> PunchOut/cXML implementations. The design of these interfaces assumes that an integration partner will serve as a translator between <<product-name>> and the end Customer's procurement system.
The base <<product-name>> platform supports four major PunchOut/cXML interfaces, connecting a <<product-name>> site with any number of Customers' environments. Depending on each Customer's requirements and systems, only certain interfaces may be used for a given implementation. The following PunchOut/cXML interfaces are built into the base <<product-name>> platform:
PunchOut Setup Request and Response
PunchOut Order Message (that is Cart Information)
Order Request (that is Purchase Order)
<<product-name>>'s PunchOut/cXML features are built around standard cXML data structures and processes (www.cxml.org), although not all standard cXML structures and process are supported by Optimizely. This document helps identify the specific cXML data elements that ISC uses within these interfaces.
## PunchOut/cXML process and design overview
The implementation of PunchOut within <<product-name>>was the foundation for the cXML integration. From a PunchOut perspective, the general user flow is outlined in the diagram below.
Essentially a buyer is directed to the <<product-name>> site from their procurement system, where they can look at the seller's online catalog and add items to their cart. Once the user has completed adding items to their cart, they do not go through the typical checkout process; they do not select the shipping address nor do they see the review and pay page. Instead, the site process ends at the cart page and the items in the cart - including ERP Part #, description, unit of measure and price - get sent back to the procurement system for review and approval. Once an order is formalized in the procurement system, the data is sent to <<product-name>> for processing and triggering an order submission job to the seller's ERP.
The following diagram outlines the detailed PunchOut process flows and interfaces, including the responsibilities of the various systems.
The integration between the Integration Partner and <<product-name>> is executed through RESTful API calls. The Integration Partner will POST cXML documents to <<product-name>> endpoints, and <<product-name>> will POST cXML back to the Integration Partner when appropriate.
Some implementations, be it PunchOut or other cXML integrations, may only involve some of these interfaces. For example, a PunchOut Customer may only choose to use the PunchOut Setup Request/Response and PunchOut Order Message (that is cart). The final order submission may go through a different channel, like EDI. Another example is the Insite partnership with Conexiom, where only the Order Request Message interface is used to translate email orders (PDF/CSV/XLS/and so on) for processing through <<product-name>>.