PO Monitoring: Purchase order transmission success rate
This article show you how to confirm that all Purchase Orders (EDI 850) sent to suppliers are successfully transmitted and received. 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
Monitoring the transmission success rate for purchase orders is similar to analyzing overall transmission success rates, but focusing specifically on purchase order processing can provide valuable insights into key areas of the supply chain. By applying the same concept of monitoring transmission acknowledgments, you can track various supply chain processes. Breaking down these critical KPIs by process enables more targeted responses to potential issues, ensuring timely resolutions and better operational efficiency.
A high transmission success rate ensures that all purchase orders are reaching suppliers without communication errors or failures. Failed transmissions can lead to unprocessed orders, disrupting the supply chain. Keep an eye on dips in the transmission success rate, particularly transmission failures or timeouts. Sudden drops or repeated failures might signal network issues, system outages, or incorrect EDI formatting.
To focus the analysis on purchase order transmission and acknowledgment, apply an additional filter in the SPL using edi_code IN (850, 997)
to specifically target these transactions.
index=supply_chain_edi sourcetype="edi:x12" edi_code IN (850, 997) | table _time edi_ack_status edi_buyer edi_code edi_code_ack edi_cont_num edi_date edi_flag edi_requestor edi_responder edi_seller edi_sequence edi_time edi_tr_id edi_type | 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_success=if(isnull(edi_ack_status), "No_Respond" , "Respond") | timechart count by edi_ack_success | eval edi_ack_request_total=No_Respond+Respond | eval edi_ack_request_success_rate=(Respond/edi_ack_request_total)*100
The formula applied, | eval edi_ack_request_success_rate = (Respond/edi_ack_request_total)*100
, calculates the acknowledgment success rate on a daily basis. The eval
command, when used with a time chart, enables easy calculations and the application of formulas for quick statistical analysis.
Use a line graph visualization to observe the trend over time regarding successful purchase order acknowledgments.
Search explanations
index=supply_chain_edi sourcetype="edi:x12" edi_code IN (850, 997) |
Select EDI X12 data by selecting sourcetype of edi:x12 . |
| table _time edi_ack_status edi_buyer edi_code edi_code_ack edi_cont_num edi_date edi_flag edi_requestor edi_responder edi_seller edi_sequence edi_time edi_tr_id edi_type |
Format the relevant fields into a table. |
| 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_success=if(isnull(edi_ack_status), "No_Respond" , "Respond") |
Create a new field labeled edi_ack_success status. |
| timechart count BY edi_ack_success |
Create a timechart (trend over time) on the number of successes and no response. |
| eval edi_ack_request_total=No_Respond+Respond |
Calculate a field for the total number of both success and no response transactions. |
| eval edi_ack_request_success_rate=(Respond/edi_ack_request_total)*100 |
Calculate the success rate by applying, Respond / edi_ack_request_total . |
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.