Trigger a bpm when shipment closes sales order - What BO Method?

,

I’m looking to run a BAQ report when a customer shipment closes a sales order. I only want the shipment that closes the order, not any partial ships. When I do the tracing on BO.SalesOrder I find the method CloseOrder and that works well If I just close the sales order. But if I ship a line that closes the PO it does not trigger.
In Customer shipment when I trace I don’t see the CloseOrder method anywhere. Does anyone know what method to trigger the bpm?
Here is the trace log for customer shipment.

  <businessObject>Ice.Proxy.BO.UserTracingImpl</businessObject>
  <methodName>GetNewOrGetByID</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>Ice.BO.UserTracingDataSet</returnType>
  <localTime>3/20/2024 09:24:54:7870222 AM</localTime>
  <threadID>1</threadID>
  <correlationId>ed4e5576-5fdc-4fac-8973-57f4234b1dd2</correlationId>
  <executionTime total="11" roundTrip="10" channel="0" bpm="0" bpmDataForm="0" other="1" />
  <retries>0</retries>
  <parameters>
    <parameter name="UserID" type="System.String"><![CDATA[rturrentine]]></parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Ice.Proxy.BO.UserTracingImpl</businessObject>
  <methodName>Update</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>3/20/2024 09:24:54:7979858 AM</localTime>
  <threadID>1</threadID>
  <correlationId>3faf1f59-d734-4395-b151-70f84f4282ab</correlationId>
  <executionTime total="11" roundTrip="6" channel="0" bpm="4" bpmDataForm="0" other="1" />
  <retries>0</retries>
  <parameters>
    <parameter name="ds" type="Ice.BO.UserTracingDataSet">
      <UserTracingDataSet xmlns="http://www.epicor.com/Ice/300/BO/UserTracing/UserTracing" />
    </parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Ice.Proxy.BO.ReportMonitorImpl</businessObject>
  <methodName>GetRowsKeepIdleTimeWithBallonInfo</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>Ice.BO.ReportMonitorDataSet</returnType>
  <localTime>3/20/2024 09:24:55:2565264 AM</localTime>
  <threadID>24</threadID>
  <correlationId>baec1641-f991-4db9-8884-86a01047f038</correlationId>
  <executionTime total="12" roundTrip="10" channel="0" bpm="0" bpmDataForm="0" other="2" />
  <retries>0</retries>
  <parameters>
    <parameter name="whereClauseSysRptLst" type="System.String"><![CDATA[((PrintDriver='TEXT' AND (AutoAction='PRINT' OR AutoAction='PREVIEW')) OR (PrintDriver='CRYSTAL' AND (AutoAction='PRINT' OR AutoAction='AUTOPRT' OR AutoAction='PREVIEW' OR AutoAction='AUTOPRV' OR AutoAction='SSRSPREVIEW')) OR (PrintDriver='EPIFIN' AND (AutoAction='PRINT' OR AutoAction='PREVIEW')) OR (PrintDriver='BARTENDER' AND (AutoAction='AUTOPRT' OR AutoAction='AUTOPRV')) OR (PrintDriver='EDI' AND AutoAction<>'') OR (PrintDriver='SSRS' AND (AutoAction='PREVIEW' OR AutoAction='PRINT') AND LastAction='SSRSREADY')) AND (WorkStationID='rturrentine' OR WorkStationID='web_rturrentine')]]></parameter>
    <parameter name="getBallonInfo" type="System.Boolean"><![CDATA[True]]></parameter>
    <parameter name="whereClauseSysTask" type="System.String"><![CDATA[history = true and startedon > 03/19/2024 and  SubmitUser = 'rturrentine']]></parameter>
    <parameter name="whereClauseSysTaskLog" type="System.String"><![CDATA[]]></parameter>
    <parameter name="sysMonitorData" type="System.Data.DataSet">
      <NewDataSet />
    </parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.CustShipImpl</businessObject>
  <methodName>GetPkgCodeQtyList</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>3/20/2024 09:25:00:2393066 AM</localTime>
  <threadID>1</threadID>
  <correlationId>e9a491b0-49f7-4800-b3d0-447764b7ad76</correlationId>
  <executionTime total="8" roundTrip="7" channel="0" bpm="0" bpmDataForm="0" other="1" />
  <retries>0</retries>
  <parameters>
    <parameter name="ipPackNum" type="System.Int32"><![CDATA[15725]]></parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.CustShipImpl</businessObject>
  <methodName>CheckPCBinOutLocation</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>3/20/2024 09:25:00:2489267 AM</localTime>
  <threadID>1</threadID>
  <correlationId>0595facb-40e8-4114-97d8-34f5de6f5038</correlationId>
  <executionTime total="17" roundTrip="16" channel="0" bpm="0" bpmDataForm="0" other="1" />
  <retries>0</retries>
  <parameters>
    <parameter name="ds" type="Erp.BO.CustShipDataSet">
      <CustShipDataSet xmlns="http://www.epicor.com/Ice/300/BO/CustShip/CustShip" />
    </parameter>
  </parameters>
  <paramDataSetChanges>
    <paramDataSet name="ds" useDataSetNbr="0">
      <changedValue tableName="ShipHead" rowState="Modified" rowNum="0" colName="ReadyToInvoice"><![CDATA[True]]></changedValue>
      <changedValue tableName="ShipHead" rowState="Modified" rowNum="0" colName="RowMod"><![CDATA[U]]></changedValue>
    </paramDataSet>
  </paramDataSetChanges>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.CustShipImpl</businessObject>
  <methodName>UpdateMaster</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>3/20/2024 09:25:00:2708578 AM</localTime>
  <threadID>1</threadID>
  <correlationId>6704ba4a-39de-45aa-954d-6ff912c08ec4</correlationId>
  <executionTime total="637" roundTrip="634" channel="0" bpm="0" bpmDataForm="0" other="3" />
  <retries>0</retries>
  <parameters>
    <parameter name="ds" type="Erp.BO.CustShipDataSet">
      <CustShipDataSet xmlns="http://www.epicor.com/Ice/300/BO/CustShip/CustShip" />
    </parameter>
    <parameter name="doValidateCreditHold" type="System.Boolean"><![CDATA[True]]></parameter>
    <parameter name="doCheckShipDtl" type="System.Boolean"><![CDATA[True]]></parameter>
    <parameter name="doLotValidation" type="System.Boolean"><![CDATA[False]]></parameter>
    <parameter name="doCheckOrderComplete" type="System.Boolean"><![CDATA[True]]></parameter>
    <parameter name="doPostUpdate" type="System.Boolean"><![CDATA[True]]></parameter>
    <parameter name="doCheckCompliance" type="System.Boolean"><![CDATA[True]]></parameter>
    <parameter name="ipShippedFlagChanged" type="System.Boolean"><![CDATA[True]]></parameter>
    <parameter name="ipPackNum" type="System.Int32"><![CDATA[15725]]></parameter>
    <parameter name="ipBTCustNum" type="System.Int32"><![CDATA[641]]></parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.CustShipImpl</businessObject>
  <methodName>BuildShipToList</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>3/20/2024 09:25:01:0116452 AM</localTime>
  <threadID>1</threadID>
  <correlationId>bab05582-68ce-4041-be12-3e92a24f493f</correlationId>
  <executionTime total="16" roundTrip="15" channel="0" bpm="0" bpmDataForm="0" other="1" />
  <retries>0</retries>
  <parameters>
    <parameter name="orderNum" type="System.Int32"><![CDATA[26894]]></parameter>
    <parameter name="iShipToCustNum" type="System.Int32"><![CDATA[641]]></parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.CustShipImpl</businessObject>
  <methodName>BuildShipToList</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>3/20/2024 09:25:01:2870260 AM</localTime>
  <threadID>1</threadID>
  <correlationId>994ea063-605f-4e7d-a2e8-4e449b2a1550</correlationId>
  <executionTime total="16" roundTrip="15" channel="0" bpm="0" bpmDataForm="0" other="1" />
  <retries>0</retries>
  <parameters>
    <parameter name="orderNum" type="System.Int32"><![CDATA[26894]]></parameter>
    <parameter name="iShipToCustNum" type="System.Int32"><![CDATA[641]]></parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.CustShipImpl</businessObject>
  <methodName>GetByID</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>Erp.BO.CustShipDataSet</returnType>
  <localTime>3/20/2024 09:25:01:3064940 AM</localTime>
  <threadID>1</threadID>
  <correlationId>c4fc8f53-4644-4d81-815c-13ca7004465e</correlationId>
  <executionTime total="37" roundTrip="35" channel="0" bpm="0" bpmDataForm="0" other="2" />
  <retries>0</retries>
  <parameters>
    <parameter name="packNum" type="System.Int32"><![CDATA[15725]]></parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.SalesOrderImpl</businessObject>
  <methodName>CheckICPO</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>3/20/2024 09:25:05:0352797 AM</localTime>
  <threadID>1</threadID>
  <correlationId>bdf082a1-8a17-43d2-8adb-db9cc34765ee</correlationId>
  <executionTime total="10" roundTrip="9" channel="0" bpm="0" bpmDataForm="0" other="1" />
  <retries>0</retries>
  <parameters />
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.SalesOrderImpl</businessObject>
  <methodName>GetByID</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>Erp.BO.SalesOrderDataSet</returnType>
  <localTime>3/20/2024 09:25:05:0965664 AM</localTime>
  <threadID>1</threadID>
  <correlationId>f044917f-f177-4361-81a2-fc44e814444b</correlationId>
  <executionTime total="76" roundTrip="73" channel="0" bpm="0" bpmDataForm="0" other="3" />
  <retries>0</retries>
  <parameters>
    <parameter name="orderNum" type="System.Int32"><![CDATA[26894]]></parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.SalesOrderImpl</businessObject>
  <methodName>InvoiceExists</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>System.Boolean</returnType>
  <localTime>3/20/2024 09:25:05:1836530 AM</localTime>
  <threadID>1</threadID>
  <correlationId>1dc6f60b-7dcb-4a2e-b788-9c89dbbba6b0</correlationId>
  <executionTime total="25" roundTrip="24" channel="0" bpm="0" bpmDataForm="0" other="1" />
  <retries>0</retries>
  <parameters>
    <parameter name="orderNum" type="System.Int32"><![CDATA[26894]]></parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.SalesOrderImpl</businessObject>
  <methodName>GetJobProd</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>Erp.BO.OrdRelJobProdDataSet</returnType>
  <localTime>3/20/2024 09:25:05:6664886 AM</localTime>
  <threadID>1</threadID>
  <correlationId>d210293f-0b09-4e40-a7da-513d04bccf03</correlationId>
  <executionTime total="9" roundTrip="8" channel="0" bpm="0" bpmDataForm="0" other="1" />
  <retries>0</retries>
  <parameters>
    <parameter name="iOrderNum" type="System.Int32"><![CDATA[26894]]></parameter>
    <parameter name="iOrderLine" type="System.Int32"><![CDATA[1]]></parameter>
    <parameter name="pageSize" type="System.Int32"><![CDATA[1]]></parameter>
    <parameter name="absolutePage" type="System.Int32"><![CDATA[1]]></parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.SalesOrderImpl</businessObject>
  <methodName>CheckCustOnCreditHold</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>3/20/2024 09:25:05:7046927 AM</localTime>
  <threadID>1</threadID>
  <correlationId>8f50e18a-0e96-4a6d-9aad-de382d4af0cd</correlationId>
  <executionTime total="9" roundTrip="8" channel="0" bpm="0" bpmDataForm="0" other="1" />
  <retries>0</retries>
  <parameters>
    <parameter name="iOrderNum" type="System.Int32"><![CDATA[26894]]></parameter>
    <parameter name="cCustID" type="System.String"><![CDATA[MAT1000]]></parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.SalesOrderImpl</businessObject>
  <methodName>CheckOrderLinkToInterCompanyPO</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>3/20/2024 09:25:05:7140597 AM</localTime>
  <threadID>1</threadID>
  <correlationId>a0af8567-31e3-4d81-bec8-bf91e359857e</correlationId>
  <executionTime total="12" roundTrip="11" channel="0" bpm="0" bpmDataForm="0" other="1" />
  <retries>0</retries>
  <parameters>
    <parameter name="iOrderNum" type="System.Int32"><![CDATA[26894]]></parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.SalesOrderImpl</businessObject>
  <methodName>OverCreditLimitUpdateAllowed</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>3/20/2024 09:25:05:7308642 AM</localTime>
  <threadID>1</threadID>
  <correlationId>23ffe5ce-49f7-4e0b-8eff-ec8917591030</correlationId>
  <executionTime total="9" roundTrip="8" channel="0" bpm="0" bpmDataForm="0" other="1" />
  <retries>0</retries>
  <parameters>
    <parameter name="iOrderNum" type="System.Int32"><![CDATA[26894]]></parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Ice.Proxy.Lib.BOReaderImpl</businessObject>
  <methodName>GetList</methodName>
  <appServerUri>https://epicor10.ikicorp.com/KineticPilot/</appServerUri>
  <returnType>System.Data.DataSet</returnType>
  <localTime>3/20/2024 09:25:05:8274871 AM</localTime>
  <threadID>1</threadID>
  <correlationId>f3675ffd-7cbf-4b4a-a1be-93c88ae67711</correlationId>
  <executionTime total="6" roundTrip="5" channel="0" bpm="0" bpmDataForm="0" other="1" />
  <retries>0</retries>
  <parameters>
    <parameter name="serviceNamespace" type="System.String"><![CDATA[Erp:BO:ProjPhaseSearch]]></parameter>
    <parameter name="whereClause" type="System.String"><![CDATA[(ProjectID = '')]]></parameter>
    <parameter name="columnList" type="System.String"><![CDATA[SortSeq,PhaseID,Description]]></parameter>
  </parameters>
</tracePacket>```

For anyone else looking for this I solved this. It wasn’t that hard once I looked deeper into it.
I built a data directive on the OrderHed table and triggered it on the ttOrderHed.OpenOrder field being changed for true to false. I used this to trigger an auto print widget to print my report.
Sometimes I overthink the easy stuff.

1 Like

Well… OK, but manually closing it (inside Order Entry) would trigger this, too, right?

I mean, it’s probably 0.1% of the use cases, but I was honestly curious what triggered it from the shipment.

Don’t get me wrong - you have something that works and it’s Friday afternoon. Do go with that.

Yes, I ran the tracing multiple times when shipping a pack that closes an order and didn’t see anything in the logs that would close the order. But sure enough, when I built my BPM off of the OrderHed BO and used that condition it triggered the BPM when I shipped the order.
I’m going to use that until I find a better solution or until something breaks.
Thanks