Transfer Tracking Numbers on ICPO Drop Ships

We are using intercompany PO processing on 3 of our companies. One of which does a lot of drop shipping for us. The issue I’m coming across is the tracking number does not get transferred from Company A to Company B.

I tried to do a data directive on the DropShipHed table, but it’s not firing when the record is being put into the table from the MCD process.

Any ideas how I can get something to trigger when the drop ship header record is written so I can “inject” the tracking number from the other company?

Some progress … maybe. I’m using the Pre-Processing of the Erp.BO.ARInvoice.GetDropShipments

I ran the BL tester on the DropShip BO and tried to do an update on one record. It worked fine manually. When I run it in the BPM I get the following error:

Log Name:      Epicor App Server
Source:        IceAppServer
Date:          12/16/2021 10:26:48 PM
Event ID:      0
Task Category: None
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      not.gonna.tell
Description:
DropShip updating Tracking Number error
Cannot manually create a new PackSlip for an intercompany PO.  It will be created automatically when shipped from the supplying company.

I have checked all the variables, and they match what I did in the BL-Tester. I am not adding a PackSlip, but attempting to update it. Here is the part of the code that does the update:

  using(var scope = IceDataContext.CreateDefaultTransactionScope())
  {
    try
    {
      using(var dsDS = Ice.Assemblies.ServiceRenderer.GetService<Erp.Contracts.DropShipSvcContract>(Db))
      {
        DropShipTableset myDS = dsDS.GetByID(VendorNum, PurPoint, PackSlip);
        
        if (myDS != null)
        {
          myDS.DropShipHead[0].TrackingNumber = TrackingNumber;
          myDS.DropShipHead[0].RowMod = "U";
          dsDS.Update(ref myDS);
        }
        
      }
    }
    catch (Exception e)
    {
      Ice.Diagnostics.Log.WriteEntry($"DropShip updating Tracking Number error\r\n{e.Message}\r\n{e.InnerException}");
    }
    
    scope.Complete();
  }