PO Monitoring: Purchase order processing error rates
This article shows you how to track any failed or rejected transactions during the purchase order process. This is a key performance indicator for companies that need to monitor purchase order (PO) lifecycles. PO monitoring plays a critical role in maintaining effective communication and coordination between buyers and suppliers, ensuring that all parties are aligned and informed throughout the process, and enhancing overall supply chain visibility. A proactive approach minimizes the risk of errors or delays, enabling businesses to maintain efficient operations and uphold customer satisfaction.
KPI search example
High error rates in the purchase order process can disrupt order fulfillment, leading to rework, delays, and higher operational costs. Watch for spikes in error rates or recurring issues with specific suppliers or systems. Patterns of failed transactions might reveal systemic problems in data integration, EDI formatting errors, or communication faults in the supply chain. Monitoring these errors helps identify the root cause of issues and allows for quicker resolution.
index=supply_chain_edi sourcetype="edi:x12" edi_code IN (850, 997) | eval edi_ack_status_combo=edi_code+"-"+edi_code_ack+"-"+edi_ack_status | eval edi_code_groupby=if(isnull(edi_code_ack), edi_code, edi_code_ack) | stats last(_time) AS _time, last(edi_requestor) AS edi_requestor, last(edi_responder) AS edi_responder, first(edi_code) AS edi_type, values(edi_code) AS edi_code, last(edi_ack_status) AS edi_ack_status BY edi_tr_id edi_code_groupby | eval edi_ack_status=if(isnull(edi_ack_status), "NO_R" , edi_ack_status) | timechart count BY edi_ack_status | eval edi_ack_request_total=A+E+R+NO_R | eval edi_ack_request_error_rate=((E+R)/edi_ack_request_total)*100
By applying the formula edi_ack_request_error_rate = ((E + R) / edi_ack_request_total) * 100
, we can successfully calculate the percentage of rejected or erroneous purchase order requests, as highlighted in the following screenshot of sample results.
Use a bar chart visualization to clearly show the trend of erroneous purchase order requests over time.
Search explanations
Splunk search | Explanation |
---|---|
index=supply_chain_edi sourcetype="edi:x12" edi_code IN (850, 997) |
Select EDI X12 data by selecting sourcetype of edi:x12 . |
| eval edi_ack_status_combo=edi_code+"-"+edi_code_ack+"-"+edi_ack_status |
Create a new evaluated field edi_ack_status_combo that combines edi_code , edi_code_ack , edi_ack_ status field. Use another eval command to create edi_code_groupby field to join all EDI events with EDI 997 acknowledgment events. |
| stats last(_time) AS _time, last(edi_requestor) AS edi_requestor, last(edi_responder) AS edi_responder, first(edi_code) AS edi_type, values(edi_code) AS edi_code, last(edi_ack_status) AS edi_ack_status BY edi_tr_id edi_code_groupby |
Join all EDI events with EDI 997 (acknowledgment) events into a single event. A successfully joined event will have EDI Events with null values in Add a time element into search, the first time of the event matched. |
| eval edi_ack_status=if(isnull(edi_ack_status), "NO_R" , edi_ack_status) |
Create a new field labeled edi_ack_status status. |
| timechart count BY edi_ack_status |
Create a trend of event occurrence by the edi_ack_status . |
| eval edi_ack_request_total=A+E+R+NO_R |
Apply a formula to calculate the total events, all statuses. |
| eval edi_ack_request_error_rate=((E+R)/edi_ack_request_total)*100 |
Apply the formula to calculate the edi_ack_request_error_rate , which is the sum of Error + Reject events over the total number of EDI requests. |
Next steps
When you have this search running in your Splunk platform, return to the Monitoring purchase order lifecycles use case to learn how to share the results with stakeholders and to find other KPIs you might want to measure. You can also review the Supply Chain Optimization Solution Accelerator for more great use cases to help you use the Splunk platform to be successful in your supply chain operations.