Article Contents
Configuration Requirements and Consideration
Overview
The purpose of this document is to detail the responsibilities, processing flow, and communication details agreed upon by ESM Solutions and Third Parties for transmitting Purchase Order data.
The Process Flow section describes the lifecycle of a purchase across the two systems.
The Interface Responsibilities section delineates the functionality required under the agreement for each company to fulfill their interface obligations.
The sections thereafter describe the technical aspects of the communication mechanism.
Interface Responsibilities
ESM Solutions
- Provide a mechanism for communicating Purchase Order data, via 32-bit SSL web posts in XML format to the third-party order entry system.
- Received third-party purchase order acknowledgements.
- Provide an automated retry mechanism to account for internet timeouts and communication outages.
Third-Party
- Provide a web-enabled mechanism to accept and process ESM Solutions Purchase Order transaction data.
- Provide real-time web responses detail either the success or failure of each transaction.
Process Flow
Diagram
Flow Steps
- User completes actions within the ESM Purchase application which generates the release of a Purchase Order.
- The ESM Solutions server communicates the data to the third party via an Internet web post with defined XML using cXML standardized methods.
- The third-party synchronously responds to the web post with either a success or failure message. Failures will be accompanied with an appropriate error message. The definition of failure is detailed in the next section of this document.
- In the event of an error, ESM Solutions corrects the date and retransmits or cancels the transaction, dependent on the situation.
Failure Conditions
Definition
A failure during this process is defined in any of the following scenarios:
- Improper formatting
- Invalid customer identifier
- Supplier processing failure
Any issue that occurs outside of the above scope will not be considered a failure and the transaction will be accepted as valid and be considered a 'manual data issue'. In this instance the supplier will be required to communicate directly with the customer to resolve outside of this integration process.
Example Failure Conditions
- Invalid or unrecognized customer identifier
- Invalid XML format
Example Manual Data Issues
- Unrecognized Building ID
- Unrecognized Product ID
- Invalid price
- Duplicate Purchase Orders
Notes and Limitations
- The XML samples in this document are standard cXML format. They contain all the fields supported by the integration. However, ESM Solutions has the capability to reformat each with supplier-specific style sheets to match the expected formats of existing order processing mechanisms.
- The Data Element Definitions section contains all dynamic fields supported by the interface. However, any “static” (i.e. the same on every transaction) fields can be implemented as part of the custom integration process.
- Within ESM Purchase system, users are allowed to aggregate requisitions (carts) across purchase orders. This means that a single requisition may be split up, and its line-items may finally appear on several different purchase orders (along with line items from several different requisitions).
- To facilitate tracking and desktop delivery, ESM Purchase system allows users to have more than one purchase order line item for the same product.
- Users in ESM Purchase have the capability to override prices on requisition items, but the supplier may choose to use current negotiated item price, tax, and shipping values if those sent on purchase orders are incorrect.
- For the sake of generic version support and minimization of network “chatter”, it is strongly recommended that XML-processing URLs do not perform any client redirects.
- All XML data transmissions will be implemented as server-to-server posts of streamed XML documents. Browser-based XML posts and form-level/query string-level XML are not supported.
- ESM Solutions requires HTTPS (128-bit encryption) support for all cross-system web posts.
Transaction Data Elements
Purchase Order Elements
Purchase Order Elements | |||
XML Element Type | Data Definition | Cardinality | Description |
/Header/From/Credential @domain = "NetworklD" /Identity (aka VendorsCustomerlD) |
Text (255) | One per transaction | Supplier's Identifier for the Customer |
/Request/OrderRequest/OrderRequestHeader @orderID | Text (20) | One per transaction | Customer's Purchase Order Number |
/Request/OrderRequest/OrderRequestHeader @OrderDate | YYYY-MM-DD | One per transaction | Purchase Order Date |
/Request/OrderRequest/OrderRequestHeader/Total | Money | One per transaction | Total dollar amount for PO |
/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/PostalAddress/DeliverTo | Text (71) | More than one per transaction | Customer delivery building contact name |
/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/Phone | Text (20) | One per transaction | Customer delivery building contact phone |
/Request/OrderRequest/OrderRequestHeader/ShipTo @addressID | Text (15) | One per transaction | Customer's ID for Building** |
/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/PostalAddress @name | Text (50) | One per transaction | Customer delivery building's name |
/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/PostalAddress/Street | Text (50) | Multiple per transaction | Customer delivery building's address (Street1, Street2) |
/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/PostalAddress/City | Text (50) | One per transaction | Customer delivery building's address (City) |
/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/PostalAddress/State | Text (2) | One per transaction | Customer delivery building's address (State) |
/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/PostalAddress/Code | Text (10) | One per transaction | Customer delivery building's address (Postal Code) |
/Request/OrderRequest/OrderRequestHeader/BillTo/Address/Phone | Text (20) | One per transaction | Customer Billing contact phone |
/Request/OrderRequest/OrderRequestHeader/BillTo/AddressID | Text (15) | One per transaction | Customer's ID for Billing Building** |
/Request/OrderRequest/OrderRequestHeader/BillTo/Address/Name | Text (50) | One per transaction | Customer billing building's name |
/Request/OrderRequest/OrderRequestHeader/BillTo/Address/PostalAddress/Street | Text (50) | Multiple per transaction | Customer billing building's address (Street 1, Street 2) |
/Request/OrderRequest/OrderRequestHeader/BillTo/Address/PostalAddress/City | Text (50) | One per transaction | Customer billing building's address (City) |
/Request/OrderRequest/ItemOut/ItemDetail/ManufacturerPartID | Text (30) | One per item on PO | Manufacturer Part Number |
/Request/OrderRequest/ItemOut/ItemDetail/UnitOfMeasure | Text (20) | One per item on PO | Item's unit-of-measure |
/Request/OrderRequest/ItemOut/Contact | Text (25) | One per item on PO | Desktop Deliver-to person's name |
/Request/OrderRequest/ItemOut/Comments | Text (3000) | One per item on PO | User comments or instructions |
*Supplier-required values that may be hard-coded by ESM Solutions are not included in the field definitions.
**Building Ids are defined and maintained solely by the customer. If the Supplier utilizes these values, the communication of any additions or changes of Ids to the Supplier will be the responsibility of the Customer. Transmission of an ID that is blank or unrecognized by the Supplier is not a valid failure condition for a transaction – It is the supplier’s responsibility to resolve the inconsistency directly with the customer
Purchase Order Response Elements
Purchase Order Response Elements | |||
XML Element Type | Data Definition | Cardinality | Description |
/Response/Status @code | Text (3) | One per Transaction | HTTP Status code |
/Response/Status @text | Text (5000) | One per Transaction | Status Description |
Data Format Examples
This section contains sample transactions in default formats. Stylesheet transformations and some custom code can be applied to conform with supplier format requirements. Please note that any static data (i.e. data that is the same across all transactions) not supported in the Data Element Definitions section can be implemented by the stylesheet transformation. The SenderCredential node is an example of this.
Sample XML Purchase Order
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.1.009/cXML.dtd">
<cXML xml:lang="en-US" payloadID="2EB59930-B7D1-429C-9B3B-7451D16F883E" timestamp="2006-08-15T08:07:28-05:00">
<Header>
<From>
<Credential domain="NetworkID">
<Identity>MPQG01539</Identity>
</Credential>
</From>
<To>
<Credential domain="DUNS">
<Identity>234503191</Identity>
</Credential>
</To>
<Sender>
<Credential domain="NetworkUserId">
<Identity>132443859</Identity>
<SharedSecret>Welcome</SharedSecret>
</Credential>
<UserAgent>Ariba Network V1.1</UserAgent>
</Sender>
</Header>
<Request>
<OrderRequest>
<OrderRequestHeader orderID="490" orderDate="2006-08-15T07:54:20-05:00" type="new">
<Total>
<Money currency="USD">1520.00</Money>
</Total>
<ShipTo>
<Address addressID="103">
<Name xml:lang="en">Smithfield Elementary School</Name>
<PostalAddress name="default">
<DeliverTo>Sue Ellen</DeliverTo>
<Street>2 Walnut Grove</Street>
<Street>Suite 190</Street>
<City>Horsham</City>
<State>PA</State>
<PostalCode>12345</PostalCode>
<Country isoCountryCode="US">United States</Country>
</PostalAddress>
<Email name="default">sellen@eschoolmall.com</Email>
<Phone name="2154449300">
<TelephoneNumber>
<CountryCode isoCountryCode="US">1</CountryCode>
<AreaOrCityCode />
<Number />
</TelephoneNumber>
</Phone>
</Address>
</ShipTo>
<BillTo>
<Address isoCountryCode="US" addressID="103">
<Name xml:lang="en">Business Office</Name>
<PostalAddress name="default">
<Street>2 Walnut Grove</Street>
<Street>Suite 190</Street>
<City>Horsham</City>
<State>PA</State>
<PostalCode>12345</PostalCode>
<Country isoCountryCode="US">United States</Country>
</PostalAddress>
<Phone name="(215)444-9300">
<TelephoneNumber>
<CountryCode isoCountryCode="US">1</CountryCode>
<AreaOrCityCode />
<Number />
</TelephoneNumber>
</Phone>
</Address>
</BillTo>
<Shipping>
<Money currency="USD">0.00</Money>
<Description xml:lang="en-US">Shipping</Description>
</Shipping>
<Tax>
<Money currency="USD">0.00</Money>
<Description xml:lang="en-US">State Tax</Description>
</Tax>
<Payment>
<PCard number="5100000000000008" expiration="2009-10-31" name="Sue M. Ellen" />
</Payment>
<Comments>Please Deliver During Normal Business hours</Comments>
<Extrinsic name="DeliveryDate" />
</OrderRequestHeader>
<ItemOut quantity="1">
<ItemID>
<SupplierPartID>L1686A#ABA</SupplierPartID>
<SupplierPartAuxiliaryID />
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="USD">670.00</Money>
</UnitPrice>
<Description xml:lang="en">HP vp6310 Digital Projector-U.S. - English localization</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
<Classification domain="UNSPSC">unknown</Classification>
<ManufacturerPartID />
<ManufacturerName />
</ItemDetail>
<Contact>
<Name xml:lang="en-US">Math Dept.</Name>
</Contact>
<Comments>These are individual line item notes</Comments>
</ItemOut>
<ItemOut quantity="1">
<ItemID>
<SupplierPartID>U4993E</SupplierPartID>
<SupplierPartAuxiliaryID />
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="USD">850.00</Money>
</UnitPrice>
<Description xml:lang="en">HP Total Education Service</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
<Classification domain="UNSPSC">unknown</Classification>
<ManufacturerPartID />
<ManufacturerName />
</ItemDetail>
<Contact>
<Name xml:lang="en-US">Computer Lab</Name>
</Contact>
<Comments />
</ItemOut>
</OrderRequest>
</Request>
</cXML>
Sample Purchase Order Acknowledgement (successful)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.1.010/cXML.dtd">
<cXML version="1.1.010" payloadID="1370444663941.1@test.com" timestamp="2013-06-05T11:04:23-5:00" xml:lang="en-US">
<Response>
<Status code="200" text="OK" />
</Response>
</cXML>
Sample Purchase Order Acknowledgement (unsuccessful)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.1.010/cXML.dtd">
<cXML version="1.1.010" payloadID="1370444663941.1@test.com" timestamp="2013-06-05T11:04:23-5:00" xml:lang="en-US">
<Response>
<Status code="500" text="Failure" />
</Response>
</cXML>
Configuration Requirements and Consideration
Implementation Configuration Requirements
- A test Customer ID is needed prior to unit testing.
- A shared secret should be provided if applicable.
- A PO XML target address (test) is needed before any test orders are sent.
- Acceptable version of cXML for the integration
Implementation Configuration Considerations
- Are line item deliver to’s / desktop delivery information supported on supplier side of integration?
- Is delivery date supported or ignored?
- Are individual line item notes/comments supported?
- Are PO Comments supported?
- Is the supplier capable of handling P-Card payment data?
- How are orders, which are received successfully, but fail supplier internal validation for one reason or another handled on the supplier side?
References
(1) cXML Specification - https://cxml.org/
Comments
Please sign in to leave a comment.