Decision Management (ODM, ADS)

Use Case: Procure to Pay (P2P) – Implementation of 2-way, 3-way matching of invoice, purchase order and goods received documents easily in IBM ODM

By Gayatri Ganesan posted Wed September 29, 2021 01:53 PM

  

#ibmautomation#UseCase
#industryusecase #ibmodm


Procure-To-Pay is the process of requisitioning, purchasing, receiving, paying for and accounting for goods and services.  

The usual steps involved in the Procure to Pay process includes the following:- 
  • Customer places a request for a product or service.
  • The request is then verified by the company that places the request and generates a Purchase Order for the same and sends it to the supplier.
  • The order is shipped by the supplier and received by the organization.
  • The invoice and goods receivable document is then received and reconciled.
  • A 2-way and 3-way match of the documents is then done to verify the fields.
  • Lastly, after the verification is done the payment is issued to the supplier.
In this article, I will be showing how easily the 2-way and 3-way matching rules in this overall P2P process can be implemented with very less coding and intuitive way of using Decision Table feature of IBM ODM.For our ODM implementation example, we assume that we get input JSON with the fields of invoice, PR and Goods receivable for doing 2-way match between Invoice and PO as follows: -

2-way match Positive request
{
"__DecisionID__": "string",
"gr": {
       "quantity": 100,
       "price": 10000,
       "totalAmount": 100000
},
"invoice": {
      "quantity": 50,
      "price": 20000,
      "totalAmount": 100000
},
"matchingLevel": "2-way",
"po": {
     "quantity": 100,
     "price": 20000,
     "totalAmount": 2000000
  }
}

The decision table in ODM can be designed easily to match the quantity, price and amount of PO and invoice as follows: -



Based on our input JSON values the highlighted condition gets executed and the response has returned the Payment as Approved without any errors.

2-way match positive response

{

  "__DecisionID__": "string",

  "response": {

    "approved": true,

    "errors": []

  }

}

For the same above input if we want to perform a 3-way match of the field values including the Goods received object also then we need to change the “matching-level” to “3-way”. Based on the below decision table, the highlighted row will get executed according to values in the input JSON and payment gets approved.

Similarly, for the below input request to the JSON the negative condition row in the decision table (allow mentioned in below screenshot) will get executed and the payment will not be approved

3-way Match Failure Case Request

{

              "__DecisionID__": "string",

              "gr": {

                             "quantity": 100,

                             "price": 10000,

                             "totalAmount": 100000

              },

              "invoice": {

                             "quantity": 200,

                             "price": 20000,

                             "totalAmount": 4000000

              },

              "matchingLevel": "3-way",

              "po": {

                             "quantity": 100,

                             "price": 20000,

                             "totalAmount": 2000000

              }

}

3-way Match Negative decision table condition



3-way match Failure Case Response

{

  "__DecisionID__": "string",

  "response": {

    "approved": false,

    "errors": [

      {

        "errorCode": "302",

        "errorMessage": "quantity discrepancy"

      },

      {

        "errorCode": "303",

        "errorMessage": "PO out of funds"

      }

    ]

  }

}

 



​​​​

Permalink