Status
PRODUCTION
This project is running in production.
Introduction
A customer panel was active in developing the BTO order process and as a first deliverable we’ve worked on the BTO ordering. Other modules like material creation and order validation can follow at a later stage.
The Build to Order order definition is published on this page.
An overview of the process is below.
BTO in PIP3A4 Purchase Order Request
We’ve identified header and line level fields required for BTO ordering. We’ve added a BTO element on header level and BTOLine to the line level.
We decided to incorporate the BTO fields into the existing order schema and thus not design a complete new schema.
This because the BTO fields are an addition to the current order. Like the current ProductLineItem element is still valid for ordering bundles and only requires some additional fields.
The BTO order definition is published here and is currently in production.
An example XML is available below.
BTO Order element on header level
Parent | Field name | Description | Type | Cardinality | XML element / attribute | XML properties |
/ | ||||||
/ | Order | Element | 1 | Pip3A4PurchaseOrderRequest | Root element | |
Order | Order header | Element | 1 | PurchaseOrder | Element | |
Order / Order header | BTO | Element | 1 | BTOOrder | Element | |
Order / Order header / BTO / Shipment | Shipment Type | Shipment to enduser by Reseller, Distributor or Manufacturer | Enum | 1 | ShipBy/GlobalPartnerRoleClassificationCode | Enumeration (Reseller, Distributor, Manufacturer) |
Order / Order header / BTO | End User | Element | 1 | EndUser | Element | |
Order / Order header / BTO / End User | End user business name | Company name of the end user | String | 1 | PartnerDescription/BusinessDescription/businessName/FreeFormText | Attribute: string |
Order / Order header / BTO / End User | End user name | Name of the end user | String | 1 | PartnerDescription/ContactInformation/contactName/FreeFormText | Attribute: string |
Order / Order header / BTO / End User | End user phone | Phone of the end user | String | 1 | PartnerDescription/ContactInformation/CommunicationsNumber | Attribute: string |
Order / Order header / BTO / End User | End user fax | Fax of the end user | String | 0..1 | PartnerDescription/ContactInformation/facsimileNumber | Attribute: string |
Order / Order header / BTO / End User | End user email | Email of the end user | 1 | PartnerDescription/ContactInformation/EmailAddress | Attribute: string | |
Order / Order header | End user reference | BID / Bundle / order reference / etc. | String | 1 | PurchaseOrder/DocumentReference/ProprietaryDocumentIdentifier | Attribute: string |
Order / Order header | Qualifier | Fixed: EndUser | PurchaseOrder/DocumentReference/GlobalDocumentReferenceTypeCode | Enumeration | ||
BTO Line element on line level
Parent | Field name | Description | Type | Cardinality | XML element / attribute | XML properties |
Order | Order Line | Element | 1..n | ProductLineItem | Element | |
Order / Order line | Bid ID | ID of the BID provided by the manufacturer | String | 1 | ProductLineItem/DocumentLineReference/ProprietaryDocumentIdentifier | Attribute: string |
Order / Order line | Qualfier | Fixed: Contract | ProductLineItem/DocumentLineReference/GlobalDocumentReferenceTypeCode | Enumeration | ||
Order / Order line | Requested Delivery Date | Requested delivery date (goods receipt) by the end user | Date | 1 | requestedEvent/TransportationEvent/DateStamp | DateTimeStamp ([0-9]{8}T[0-9]{6}) |
Order / Order line | Qualfier | Ship or Delivery | requestedEvent/TransportationEvent/GlobalTransportEventCode | Enumeration(Ship,Delivery) | ||
Order / Order line | Quantity | The number / quantity of bundles/configurations ordered | Numeric | 1 | OrderQuantity/requestedQuantity/ProductQuantity | Attribute: xsd:nonNegativeInteger |
Order / Order line | Bundle ID | Id for the bundle provided by the manufacturer | String | 1 | PartnerProductIdentification/ProprietaryProductIdentifier | Attribute: string |
Order / Order line | Qualfier | Fixed: Manufacturer | PartnerProductIdentification/GlobalPartnerClassificationCode | Enumeration | ||
Order / Order line | Bundle Price | Amount for each bundle provided by the manufacturer | Amount | 1 | requestedUnitPrice/FinancialAmount/MonetaryAmount | Attribute: decimal |
Order / Order line | Currency | Currency | String | 1 | requestedUnitPrice/FinancialAmount/GlobalCurrencyCode | Attribute: string |
Order / Order line | BTO Line | BTOLine | Element | |||
Order / Order line / BTO Line | Bid Version | Version of the BID provided by the manufacturer | String | 0..1 | BTOLine/BidVersion | Attribute: string |
Order / Order line / BTO Line | Validate Bid | Instruction whether this bid needs to be validated and bounced by Onetrail | Boolean | 1 | BTOLine/ValidateBid | Enumeration (Yes,No) |
Order / Order line / BTO Line | Manufacturer GLN | Manufacturer of the configuration | String | 0..1 | BTOLine/SuppliedBy/PartnerDescription/BusinessDescription/GlobalBusinessIdentifier | |
Order / Order line / BTO Line | Qualfier | Fixed: Manufacturer | BTOLine/SuppliedBy/PartnerDescription/BusinessDescription/GlobalPartnerRoleClassificationCode | Enumeration | ||
Order / Order line / BTO Line | Bundle | Element | 0..n | BundleLineItem | Element | |
Order / Order line / BTO Line / Bundle | Sequence Number | Sequence number, the sequence of the bundle items is important to some manufacturers | Numeric | 1 | BundleLineItem/SequenceNumber | Attribute: xsd:nonNegativeInteger |
Order / Order line / BTO Line / Bundle | SKU | Internal product ID from distributor | String | 1 | BundleLineItem/PartnerProductIdentification/ProprietaryProductIdentifier | Attribute: string |
Order / Order line / BTO Line / Bundle | Qualfier | Fixed: Seller | String | 1 | BundleLineItem/PartnerProductIdentification/GlobalPartnerClassificationCode | Enumeration |
Order / Order line / BTO Line / Bundle | manufacturer Part Number | Internal product ID from manufacturer | String | 1 | BundleLineItem/PartnerProductIdentification/ProprietaryProductIdentifier | Attribute: string |
Order / Order line / BTO Line / Bundle | Qualfier | Fixed: Manufacturer | String | 1 | BundleLineItem/PartnerProductIdentification/GlobalPartnerClassificationCode | Enumeration |
Order / Order line / BTO Line / Bundle | Localisation Code | Required if the bid is not country specific | String | 0..1 | BundleLineItem/PartnerProductIdentification/revisionIdentifier | Attribute: string |
Order / Order line / BTO Line / Bundle | Quantity | Number of items in one config | Numeric | 1 | BundleLineItem/OrderQuantity/requestedQuantity/ProductQuantity | Attribute: xsd:nonNegativeInteger |
Order / Order line / BTO Line / Bundle | Unit Price | Amount for each bundle provided by the manufacturer | Amount | 1 | BundleLineItem/requestedUnitPrice/FinancialAmount/MonetaryAmount | Attribute: decimal |
Order / Order line / BTO Line / Bundle | Currency | Currency | String | 1 | BundleLineItem/requestedUnitPrice/FinancialAmount/GlobalCurrencyCode | Attribute: string |
Sample XML
Sample XML
<?xml version="1.0" encoding="UTF-8"?> <!-- Sample for an BTO/CTO order--> <tns:Pip3A4PurchaseOrderRequest xmlns:ns="http://www.onetrail.net" xmlns:ns3="http://pip3a4po.ws.service.onetrail.com/" xmlns:tns="http://www.onetrail.net" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <tns:fromRole> <tns:PartnerRoleDescription> <tns:ContactInformation> <tns:contactName> <tns:FreeFormText lang="EE">Purchase Department</tns:FreeFormText> </tns:contactName> <tns:EmailAddress>Purchase@onetrail.com</tns:EmailAddress> <tns:facsimileNumber> <tns:CommunicationsNumber>+31 30 697 3289</tns:CommunicationsNumber> </tns:facsimileNumber> <tns:telephoneNumber> <tns:CommunicationsNumber>+31 30 697 3288</tns:CommunicationsNumber> </tns:telephoneNumber> </tns:ContactInformation> <tns:GlobalPartnerRoleClassificationCode>Reseller</tns:GlobalPartnerRoleClassificationCode> <tns:PartnerDescription> <tns:BusinessDescription> <tns:GlobalBusinessIdentifier>8714253023366</tns:GlobalBusinessIdentifier> <tns:GlobalSupplyChainCode>Information Technology</tns:GlobalSupplyChainCode> <tns:businessName> <tns:FreeFormText lang="EN">Onetrail B.V. - Test Buyer</tns:FreeFormText> </tns:businessName> </tns:BusinessDescription> <tns:GlobalPartnerClassificationCode>Buyer</tns:GlobalPartnerClassificationCode> </tns:PartnerDescription> </tns:PartnerRoleDescription> </tns:fromRole> <tns:GlobalDocumentFunctionCode>Request</tns:GlobalDocumentFunctionCode> <tns:PurchaseOrder> <tns:AccountDescription> <tns:accountName> <tns:FreeFormText lang="EE">Onetrail B.V. - Test Buyer</tns:FreeFormText> </tns:accountName> <tns:AccountNumber>8714253023366</tns:AccountNumber> <tns:billTo> <tns:PartnerRoleDescription> <tns:ContactInformation> <tns:contactName> <tns:FreeFormText lang="EN">Finance Department</tns:FreeFormText> </tns:contactName> <tns:EmailAddress>Finance@onetrail.com</tns:EmailAddress> <tns:facsimileNumber> <tns:CommunicationsNumber>+31 30 697 3289</tns:CommunicationsNumber> </tns:facsimileNumber> <tns:telephoneNumber> <tns:CommunicationsNumber>+31 30 697 3288</tns:CommunicationsNumber> </tns:telephoneNumber> </tns:ContactInformation> <tns:GlobalPartnerRoleClassificationCode>Reseller</tns:GlobalPartnerRoleClassificationCode> <tns:PartnerDescription> <tns:BusinessDescription> <tns:GlobalBusinessIdentifier>8714253023397</tns:GlobalBusinessIdentifier> <tns:businessName> <tns:FreeFormText lang="EE">Onetrail B.V. - Test Buyer</tns:FreeFormText> </tns:businessName> </tns:BusinessDescription> <tns:GlobalPartnerClassificationCode>Buyer</tns:GlobalPartnerClassificationCode> </tns:PartnerDescription> </tns:PartnerRoleDescription> </tns:billTo> </tns:AccountDescription> <tns:remarks> <tns:remark context="Buyer Remark">Header Text</tns:remark> </tns:remarks> <!--This is the end user reference--> <tns:DocumentReference> <tns:DateTimeStamp>20150214T171451</tns:DateTimeStamp> <tns:GlobalDocumentReferenceTypeCode>Work Order</tns:GlobalDocumentReferenceTypeCode> <tns:ProprietaryDocumentIdentifier>End user ref 285481</tns:ProprietaryDocumentIdentifier> </tns:DocumentReference> <!--Special order type for BTO--> <tns:GlobalPurchaseOrderTypeCode>BTO Order</tns:GlobalPurchaseOrderTypeCode> <tns:OrderShippingInformation> <tns:GlobalShippingServiceLevelCode>AB - Pre Noon</tns:GlobalShippingServiceLevelCode> <tns:GlobalSpecialFulfillmentRequestCode>Partial</tns:GlobalSpecialFulfillmentRequestCode> </tns:OrderShippingInformation> <tns:ProductLineItem> <tns:remarks> <tns:remark lang="NL">Lijn Tekst</tns:remark> </tns:remarks> <!--This is the special bid Id on line level--> <tns:DocumentLineReference> <tns:DateTimeStamp>20150214T171451</tns:DateTimeStamp> <tns:GlobalDocumentReferenceTypeCode>Contract</tns:GlobalDocumentReferenceTypeCode> <tns:ProprietaryDocumentIdentifier>BID:1231231</tns:ProprietaryDocumentIdentifier> </tns:DocumentLineReference> <tns:GlobalProductUnitOfMeasureCode>EACH</tns:GlobalProductUnitOfMeasureCode> <tns:isDropShip> <tns:AffirmationIndicator>Yes</tns:AffirmationIndicator> </tns:isDropShip> <tns:LineNumber>1</tns:LineNumber> <!--The quantity of bundles to order--> <tns:OrderQuantity> <tns:requestedQuantity> <tns:ProductQuantity>3</tns:ProductQuantity> </tns:requestedQuantity> </tns:OrderQuantity> <!--Put the bundle ID in the Manufacturer, other ClassifcationCode (i.e Seller, EAN, etc. are not supported for BTO lines) --> <tns:ProductIdentification> <tns:PartnerProductIdentification> <tns:GlobalPartnerClassificationCode>Manufacturer</tns:GlobalPartnerClassificationCode> <tns:ProprietaryProductIdentifier>12312312</tns:ProprietaryProductIdentifier> </tns:PartnerProductIdentification> </tns:ProductIdentification> <tns:requestedEvent> <tns:TransportationEvent> <tns:DateStamp>20150214T120000</tns:DateStamp> <tns:GlobalTransportEventCode>Ship</tns:GlobalTransportEventCode> </tns:TransportationEvent> </tns:requestedEvent> <!-- The price for 1 bundle / config--> <tns:requestedUnitPrice> <tns:FinancialAmount> <tns:GlobalCurrencyCode>EUR</tns:GlobalCurrencyCode> <tns:MonetaryAmount>995.56</tns:MonetaryAmount> </tns:FinancialAmount> </tns:requestedUnitPrice> <tns:totalLineItemAmount> <tns:FinancialAmount> <tns:GlobalCurrencyCode>EUR</tns:GlobalCurrencyCode> <tns:MonetaryAmount>2986.68</tns:MonetaryAmount> </tns:FinancialAmount> </tns:totalLineItemAmount> <!--Additional fields for BTO on line level (bundle)--> <tns:BTOLine> <tns:BidVersion>001</tns:BidVersion> <tns:ValidateBid>Yes</tns:ValidateBid> <tns:SuppliedBy> <tns:PartnerRoleDescription> <tns:GlobalPartnerRoleClassificationCode>Manufacturer</tns:GlobalPartnerRoleClassificationCode> <tns:PartnerDescription> <tns:BusinessDescription> <tns:GlobalBusinessIdentifier>8714253023236</tns:GlobalBusinessIdentifier> <tns:GlobalSupplyChainCode>Information Technology</tns:GlobalSupplyChainCode> <tns:businessName> <tns:FreeFormText lang="EN">Hewlett Packard</tns:FreeFormText> </tns:businessName> </tns:BusinessDescription> </tns:PartnerDescription> </tns:PartnerRoleDescription> </tns:SuppliedBy> <!--The bundle line items (the indiviual products making the bundle)--> <tns:BundleLineItem> <tns:SequenceNumber>1</tns:SequenceNumber> <!--The number of items in 1 bundle / config --> <tns:OrderQuantity> <tns:requestedQuantity> <tns:ProductQuantity>3</tns:ProductQuantity> </tns:requestedQuantity> </tns:OrderQuantity> <!--Product ID's--> <tns:ProductIdentification> <tns:GlobalProductIdentifier>MCC2HUK</tns:GlobalProductIdentifier> <tns:PartnerProductIdentification> <tns:GlobalPartnerClassificationCode>Manufacturer</tns:GlobalPartnerClassificationCode> <tns:ProprietaryProductIdentifier>MCC2HUK</tns:ProprietaryProductIdentifier> </tns:PartnerProductIdentification> <tns:PartnerProductIdentification> <tns:GlobalPartnerClassificationCode>Seller</tns:GlobalPartnerClassificationCode> <tns:ProprietaryProductIdentifier>SellerPN1</tns:ProprietaryProductIdentifier> </tns:PartnerProductIdentification> <tns:PartnerProductIdentification> <tns:GlobalPartnerClassificationCode>Buyer</tns:GlobalPartnerClassificationCode> <tns:ProprietaryProductIdentifier>BuyerPN1</tns:ProprietaryProductIdentifier> </tns:PartnerProductIdentification> <tns:PartnerProductIdentification> <tns:GlobalPartnerClassificationCode>EAN</tns:GlobalPartnerClassificationCode> <tns:ProprietaryProductIdentifier>8712345678921</tns:ProprietaryProductIdentifier> </tns:PartnerProductIdentification> <!--Localisation code of bundle-items--> <tns:revisionIdentifier>ABD</tns:revisionIdentifier> </tns:ProductIdentification> <!-- Price for an individual item--> <tns:requestedUnitPrice> <tns:FinancialAmount> <tns:GlobalCurrencyCode>EUR</tns:GlobalCurrencyCode> <tns:MonetaryAmount>295.56</tns:MonetaryAmount> </tns:FinancialAmount> </tns:requestedUnitPrice> </tns:BundleLineItem> <tns:BundleLineItem> <tns:SequenceNumber>2</tns:SequenceNumber> <tns:OrderQuantity> <tns:requestedQuantity> <tns:ProductQuantity>1</tns:ProductQuantity> </tns:requestedQuantity> </tns:OrderQuantity> <tns:ProductIdentification> <tns:GlobalProductIdentifier>MCC2HUJ</tns:GlobalProductIdentifier> <tns:PartnerProductIdentification> <tns:GlobalPartnerClassificationCode>Manufacturer</tns:GlobalPartnerClassificationCode> <tns:ProprietaryProductIdentifier>MCC2HUJ</tns:ProprietaryProductIdentifier> </tns:PartnerProductIdentification> <tns:PartnerProductIdentification> <tns:GlobalPartnerClassificationCode>Seller</tns:GlobalPartnerClassificationCode> <tns:ProprietaryProductIdentifier>SellerPN2</tns:ProprietaryProductIdentifier> </tns:PartnerProductIdentification> <tns:PartnerProductIdentification> <tns:GlobalPartnerClassificationCode>Buyer</tns:GlobalPartnerClassificationCode> <tns:ProprietaryProductIdentifier>BuyerPN2</tns:ProprietaryProductIdentifier> </tns:PartnerProductIdentification> <tns:PartnerProductIdentification> <tns:GlobalPartnerClassificationCode>EAN</tns:GlobalPartnerClassificationCode> <tns:ProprietaryProductIdentifier>8712345678922</tns:ProprietaryProductIdentifier> </tns:PartnerProductIdentification> <tns:revisionIdentifier>ABD</tns:revisionIdentifier> </tns:ProductIdentification> <tns:requestedUnitPrice> <tns:FinancialAmount> <tns:GlobalCurrencyCode>EUR</tns:GlobalCurrencyCode> <tns:MonetaryAmount>108.88</tns:MonetaryAmount> </tns:FinancialAmount> </tns:requestedUnitPrice> </tns:BundleLineItem> </tns:BTOLine> </tns:ProductLineItem> <tns:purchaseOrderIdentifier> <tns:ProprietaryDocumentIdentifier>BTO Order 1</tns:ProprietaryDocumentIdentifier> </tns:purchaseOrderIdentifier> <tns:requestedEvent> <tns:TransportationEvent> <tns:DateStamp>20150214T120000</tns:DateStamp> <tns:GlobalTransportEventCode>Ship</tns:GlobalTransportEventCode> </tns:TransportationEvent> </tns:requestedEvent> <!-- ShipTo address for the BTO--> <tns:shipTo> <tns:PartnerDescription> <tns:BusinessDescription> <tns:businessName> <tns:FreeFormText lang="EE">Onetrail Test Buyer</tns:FreeFormText> </tns:businessName> </tns:BusinessDescription> <tns:GlobalPartnerClassificationCode>Buyer</tns:GlobalPartnerClassificationCode> <tns:ContactInformation> <tns:contactName> <tns:FreeFormText lang="EE">Purchase Department</tns:FreeFormText> </tns:contactName> <tns:EmailAddress>support@onetrail.com</tns:EmailAddress> <tns:facsimileNumber> <tns:CommunicationsNumber>+31 30 697 3289</tns:CommunicationsNumber> </tns:facsimileNumber> <tns:telephoneNumber> <tns:CommunicationsNumber>+31 30 697 3288</tns:CommunicationsNumber> </tns:telephoneNumber> </tns:ContactInformation> </tns:PartnerDescription> <tns:PhysicalAddress> <tns:addressLine1> <tns:FreeFormText lang="EE">Huis ter Heideweg 46</tns:FreeFormText> </tns:addressLine1> <tns:addressLine2> <tns:FreeFormText lang="EE">First Floor</tns:FreeFormText> </tns:addressLine2> <tns:cityName> <tns:FreeFormText lang="EE">Zeist</tns:FreeFormText> </tns:cityName> <tns:GlobalCountryCode>NL</tns:GlobalCountryCode> <tns:NationalPostalCode>3705 LZ</tns:NationalPostalCode> </tns:PhysicalAddress> </tns:shipTo> <tns:totalAmount> <tns:FinancialAmount> <tns:GlobalCurrencyCode>EUR</tns:GlobalCurrencyCode> <tns:MonetaryAmount>2986.68</tns:MonetaryAmount> </tns:FinancialAmount> </tns:totalAmount> <!-- the BTO header fields--> <tns:BTOOrder> <!--The EndUser details--> <tns:EndUser> <tns:PartnerDescription> <tns:BusinessDescription> <tns:businessName> <tns:FreeFormText>End User B.V.</tns:FreeFormText> </tns:businessName> </tns:BusinessDescription> <tns:GlobalPartnerClassificationCode>EndUser</tns:GlobalPartnerClassificationCode> <tns:ContactInformation> <tns:contactName> <tns:FreeFormText>John Doe</tns:FreeFormText> </tns:contactName> <tns:EmailAddress>john.doe@enduser.com</tns:EmailAddress> <tns:telephoneNumber> <tns:CommunicationsNumber>012-3456789</tns:CommunicationsNumber> </tns:telephoneNumber> </tns:ContactInformation> </tns:PartnerDescription> <tns:PhysicalAddress> <tns:addressLine1> <tns:FreeFormText>EndUser street 22</tns:FreeFormText> </tns:addressLine1> <tns:cityName> <tns:FreeFormText>SampleCity</tns:FreeFormText> </tns:cityName> <tns:GlobalCountryCode>NL</tns:GlobalCountryCode> <tns:NationalPostalCode>1234 AB</tns:NationalPostalCode> </tns:PhysicalAddress> </tns:EndUser> <!-- who is going to fullfill the order to the end user--> <tns:shipBy> <tns:GlobalPartnerRoleClassificationCode>Reseller</tns:GlobalPartnerRoleClassificationCode> </tns:shipBy> </tns:BTOOrder> </tns:PurchaseOrder> <tns:thisDocumentGenerationDateTime> <tns:DateTimeStamp>20150214T171451</tns:DateTimeStamp> </tns:thisDocumentGenerationDateTime> <tns:thisDocumentIdentifier> <tns:ProprietaryDocumentIdentifier>25658937T874q376</tns:ProprietaryDocumentIdentifier> </tns:thisDocumentIdentifier> <tns:toRole> <tns:PartnerRoleDescription> <tns:ContactInformation> <tns:contactName> <tns:FreeFormText lang="EN">Sales Department </tns:FreeFormText> </tns:contactName> <tns:EmailAddress>sales@onetrail.com</tns:EmailAddress> <tns:facsimileNumber> <tns:CommunicationsNumber>+31 30 697 3289</tns:CommunicationsNumber> </tns:facsimileNumber> <tns:telephoneNumber> <tns:CommunicationsNumber>+31 30 697 3288</tns:CommunicationsNumber> </tns:telephoneNumber> </tns:ContactInformation> <tns:GlobalPartnerRoleClassificationCode>Distributor</tns:GlobalPartnerRoleClassificationCode> <tns:PartnerDescription> <tns:BusinessDescription> <tns:GlobalBusinessIdentifier>8714253023236</tns:GlobalBusinessIdentifier> <tns:GlobalSupplyChainCode>Information Technology</tns:GlobalSupplyChainCode> <tns:businessName> <tns:FreeFormText lang="EN">Onetrail B.V. - Test Seller</tns:FreeFormText> </tns:businessName> </tns:BusinessDescription> <tns:GlobalPartnerClassificationCode>Seller</tns:GlobalPartnerClassificationCode> </tns:PartnerDescription> </tns:PartnerRoleDescription> </tns:toRole> </tns:Pip3A4PurchaseOrderRequest>
Download sample XML
Download: OTOrdReq.EUR-BTO.xml
1 Comment
Anonymous
Great stuff!