Purchase Order Processing using cXML in Dynamics 365 Finance and Operations

With PU 34, a new feature of delivering Purchase orders electronically has been introduced in Dynamics 365 Finance and Operations – cXML Purchase order delivery.

cXML (Commerce eXtensible Markup Language) is a XML based protocol that enables exchange of business documents across applications. The most common use of cXML is in Procurement punchout where from a Procurement application, users can navigate to the supplier’s website to view the catalog, add items to the cart which have specific pricing for each organization, and then retrieve these for processing Purchase requisitions, issues Purchase orders to the vendors. There are types of business documents exchange using cXML protocol such as – delivery/issuing of Purchase Orders.

Punchout processing within Dynamics 365 Finance and Operations has been an offering since the initial launch of AX 7 in cloud. However, the capability is now extended to Purchase orders as well starting PU34.

At a high level below is the flow of how the Purchase orders would be processed and sent via cXML.

Flow of cXML Purchase order processing in Dynamics 365 Finance and Supply chain

Note that, in this blog post, we will review how this feature works in Test mode as we would need a proper web service that can accept the XML and send us proper responses. This test mode would be useful during initial configurations and implementations. You can share the XML with the vendors for validation to ensure that they are able to import or validate these at their end.

This page ha


Below are some of the parameters that are to be set to verify the working of this cXML feature in Test mode:

  1. Set the cXML test mode to Test in the cXML parameters. This parameter ensures that the request would be created in the Purchase order request form and the XML would be generated but would not be sent to the vendor.

2. Enable the Send Purchase order via cXML on vendors that are to be enabled for delivery of Purchase orders via cXML

3. Create external catalog for the vendor(s) and generate default Order Properties.

4. Enable the below property in the Order properties to TRUE if you want to process a PO without a Purchase requisition

For more details about the properties and how each of these affect the processing read the articles from Microsoft here.

Now to the workings. I will be skipping the Purchase requisition piece, however, I will mention how Purchase requisition would impact some of the properties in a later stage.

A new PO is created with a Procurement catalog and a External reference number. Ensure that the External reference number is specified all the time as that would be the item number that would be sent to Vendor in the cXML message.

You can see that the Send Purchase order via cXML is marked on the header level of the Purchase order. This is marked due 2 options, which are Send Purchase order via cXML on the vendor and also the ENABLEMANUALPO property that is set to TRUE in the External catalog, as I’m not creating a Purchase order from Purchase requisition for this testing purpose. So if you would have to trobuleshoot cXML not getting generated in test mode, look at these 2 configurations.

Confirm the Purchase order and ensure that the Submit batch job is running. You can see the Request XML generated. You will see a response XML being generated, should this be a live request submitted to supplier’s fulfillment system.

This way you can submit Purchase orders to your supplier’s system in a secured way. There are attributes/properties within the cXML document that will be authenticated based on the agreement between your organization and the supplier’s. Some of them are below.

  • FROM_DOMAIN – Enter the value that is used to send purchase order documents. This value is supplied by your vendor.
  • FROM_IDENTITY – Enter the value that is used to send purchase order documents. This value is supplied by your vendor
  • SENDER_DOMAIN – Enter the value that is used to send purchase order documents. This value is supplied by your vendor.
  • SENDER_IDENTITY – Enter the value that is used to send purchase order documents. This value is supplied by your vendor.
  • SHARED_SECRET – Enter the value that is used to send purchase order documents. This value is supplied by your vendor.
  • TO_DOMAIN – Enter the value that is used to send purchase order documents. This value is supplied by your vendor.
  • TO_IDENTITY – Enter the value that is used to send purchase order documents. This value is supplied by your vendor.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s