Clutch Ecmanage and Purchasing System

Integrating purchasing system using OCI or cXML

Some organizations use purchasing systems. Ecmanage can work together with these systems if Ecmanage's validation logic remains active and Ecmanage's shopping cart is used on the basis of an individual login of an orderer.

There are two models that we support, an OCI variant and a cXML variant.

Integration Purchase systems

The schedule below shows how the collaboration can be between Purchasing System, Ecmanage and ERP system.

The integration between Ecmanage and purchasing systems via OCI can also work using a single sign on option. In this way, an orderer is immediately recognized by Ecmanage without having to log in separately. In the cXML variant, logging in is solved by means of an extrinsic and a shared secret.


Template controlled shopping cart OCI

When configuring the purchasing system link in Ecmanage, a mapping can be made of the Ecmanage order data to your purchasing system by means of a template.

An example:

OCI Field

Value

Explanation

1

New_item-vendormat[1]

58561_6200-34

rangeid

2

New_item-description[1]

Women's Uniform Pants Black

3

New_item-matgroup[1]

Broek

Product group

4

New_item quantity[1]

1

5

New_item-unit[1]

Stuk

6

New_item-currency[1]

Eur

7

New_item-price[1]

36.55

8

New_item-cust-field1

21

Vat

9

New_item-cust-field3[1]

Custdemo215559

Order code ecmanage

cXML order flow


The processing starts when Ecmanage receives a PunchOutSetupRequest CXML message from the purchasing system via a POST on an https URL of the order environment in ecmanage.

For example, in that message we expect the following dates:

  • cXML.Header.From.Credential.Identity = CUSTOMER

  • cXML.Header.To.Credential.Identity = LEVERANCIER

  • cXML.Header.Sender.Credential.SharedSecret =

  • cXML.Request.PunchOutSetupRequest.BuyerCookie =

  • cXML.Request.PunchOutSetupRequest.BrowserFormPost.URL = valid url for post

  • cXML.Request.PunchOutSetupRequest.Extrinsic[name="User"] = Unique user name known in Ecmanage.

If everything is valid, a PunchOutSetupResponse cXML message will be sent with the correct StartPage. This page is only valid for a few hours.

With the StartPage, a user can start an order. At the end, the shopping cart will be returned with a PunchOutOrderMessage. That message contains the Ecmanage order number field in cXML.payloadID. That is the unique identification of an order in Ecmanage. The purchase system can then approve the shopping cart, in which case a purchase order number will be linked to the shopping cart and an order confirmation is sent in a PunchOutOrderMessage. The response to that message is a status message, this status indicates whether the message is correct (200 is correct, 400 is error the order is then not processed).


<cXML payloadID="4510976" timestamp="2025-10-23T10:57:28+02:00">
<Response>
<Status code="200" text="OK" />
</Response>
</cXML>

If the status is incorrect:

<cXML payloadID="4510999" timestamp="2025-10-23T11:05:16+02:00">
<Response>
Order code not found in Ecmanage. Maybe Ordercode is missing or unknown in PO? Please contact Sender as stated in Purchase Order (PO): 4000177
</Response>
</cXML>


Record approval purchase order

For registering a purchase order that has been approved, an https POST message can be used with a cXML payload. In that cXML message contains a reference to the Ecmanage order number and the purchase order number.

Field

Value

OrderRequestHeader.SupplierOrderInfo[orderID]

Ecmanage order number

OrderRequestHeader[orderID]

Purchasing system order number

If the above fields cannot be found there are the following alternatives:

Optie 1: SupplierOrderInfo


<OrderRequest>
<OrderRequestHeader orderID="INKOOP_1234" orderDate="2025-10-03T12:26:52">
<SupplierOrderInfo orderID="ECM_12345"></SupplierOrderInfo>
</OrderRequestHeader>
<ItemOut quantity="1.0000" lineNumber="1">
<ItemID>
<SupplierPartID>ITEM123</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="EUR">12.10</Money>
</UnitPrice>
<Description xml:lang="en">
<ShortName>Blue Overall</ShortName>
</Description>
<UnitOfMeasure>EACH</UnitOfMeasure>
</ItemDetail>
    </ItemOut>
</OrderRequest>

Optie 2: OrderRequestHeader  Extrinsic 


<OrderRequest>
<OrderRequestHeader orderID="INKOOP_1234" orderDate="2025-10-03T12:26:52">
          <Extrinsic name="orderID">ECM_12345</Extrinsic>
</OrderRequestHeader>
<ItemOut quantity="1.0000" lineNumber="1">
<ItemID>
<SupplierPartID>ITEM123</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="EUR">12.10</Money>
</UnitPrice>
<Description xml:lang="en">
<ShortName>Blue Overall</ShortName>
</Description>
<UnitOfMeasure>EACH</UnitOfMeasure>
</ItemDetail>
    </ItemOut>
</OrderRequest>

Optie 3: Item SupplierPartAuxiliaryID


<OrderRequest>
<OrderRequestHeader orderID="INKOOP_1234" orderDate="2025-10-03T12:26:52">
</OrderRequestHeader>
<ItemOut quantity="1.0000" lineNumber="1">
<ItemID>
<SupplierPartID>ITEM123</SupplierPartID>
<SupplierPartAuxiliaryID>ECM_12345</SupplierPartAuxiliaryID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="EUR">12.10</Money>
</UnitPrice>
<Description xml:lang="en">
<ShortName>Blue Overall</ShortName>
</Description>
<UnitOfMeasure>EACH</UnitOfMeasure>
</ItemDetail>
    </ItemOut>
</OrderRequest>

Optie 4: ItemDetail  Extrinsic


<OrderRequest>
<OrderRequestHeader orderID="INKOOP_1234" orderDate="2025-10-03T12:26:52">
</OrderRequestHeader>
<ItemOut quantity="1.0000" lineNumber="1">
<ItemID>
<SupplierPartID>ITEM123</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="EUR">12.10</Money>
</UnitPrice>
<Description xml:lang="en">
<ShortName>Blue Overall</ShortName>
</Description>
<UnitOfMeasure>EACH</UnitOfMeasure>
               <Extrinsic name="NEW-ITEM-CUST_FIELD3">ECM_12345</Extrinsic>
</ItemDetail>
    </ItemOut>
</OrderRequest>

Example Procurement systems

A number of example integrations based on OCI and cXML: