cXML and ASP.NET

March 12, 2009 at 6:59 PMRampidByter

What is cXML? Commerce XML referred to as cXML is actually a protocol created by Ariba to carry out interactions between procurement companies to supply something of an updated EDI process to better support e-commerce systems of suppliers. That of course was the idea in 1999 when it was created and (un)fortunately it has been used up until the present to conduct business to business interactions through a PunchOut request/response process.

I have been (un)fortunate enough to be tapped to lead the integration of a cXML based PunchOut system for a client I've been working with in order to integrate into something called ACES. ACES is a e-commerce solution by a company called American Solutions for Business. While during the initial conversations were centered about a messaging mechanism to request and respond with messages I was not initially familiar with the cXML standard. I was at least with its older competitor EDI. So this began my quest to better understand, design, and develop an support system on the client system for implementing the protocol.

I began initially with scouring the forums, Google, Live.com, and other assorted search engines for exactly what others were doing to integrate cXML into ASP.Net systems. That is when I discovered that aside from www.cXML.org there is actually very little material on the subject at all let alone regarding using it with ASP.NET in any fashion. Besides bizTalk and a few forums about validating a received cXML document against the cXML DTD available from cXML.org the protocol is a ghost.

To top the fact that the protocol is essentially never mentioned except in a few out of publishing books available on Amazon.com on B2B based messaging architectures even the Ariba website lacks any samples available for ASP.NET developers. I was excited on further searching to find a link to the classic ASP example project available on the site but my enthusiasm was shortly lived. All links to the contents were to a page that informs the user that the content has been expired from the site permanently.

So now what. Well thankfully after digging through umpteen number of websites I managed to scarf up a few PDF files of cXML solutions guides, and the cXML version 1.2 that the procurement company current users. After reading through the documents one can see quickly how reliant cXML is to the protocol standard enforcing company Ariba. The protocol relies heavily on a Ariba supplier ID and (Dun & Bradstreet) DUN numbers available from www.dnb.com.

Within the solution guide I also managed to round up the only ASP related material showing snippets of messaging decoding performed with classic ASP. It was at least enough to get me started building out my cXML support framework which essentially consists of multiple synchronous XML GET/POST to continue the interaction. By doing so an outside site can direct users from the outside customers site to display your supplier site inline the users browser experience to configure the product/service as the user would like. The request of course is posted to your domain, handled by the request object to receive the XML input stream, cXML request is parsed, and then a response posted back to the calling page from a URL identified via the response cXML document. Based on identifying whether a shared key is correct the cXML request can be processed, and the user redirected to begin product configuration seamlessly believing they’re interacting with the external site never realizing they’re working on a external supplier site.

I guess on the plus side I could qualify myself as a cXML knowledgeable company capable of being sourced to integrate the standard in other company e-commerce solutions. I don’t think I'll throw my hat in that ring just yet it’s been a big pain to integrate this standard into a modern ASP.NET based e-commerce system considering that the only documentation of the protocol was updated on classic ASP I assume that this standard was meant to be let alone for modern systems. Of course compared to EDI it’s night and day more robust.

When my project is complete I'll take the time to post a good how-to on implementing the request response mechanism in a modern web language. Heaven knows I'd have appreciated finding one myself when i started to learn this system!

Posted in: ASP.Net | Programming

Tags: