How to run a report routing rule from a different company using BPM data directive on SysAgentSched

The objective is to have pack slips emailed out on a schedule using a data directive on SysAgentSched.
I have many report routing rules running on the same company that the task agent user was last logged into. Those all work fine but when I try to get the pack slips to print in a different company, I get an error in system monitor:

Program Ice.Services.Lib.RunTask raised an unexpected exception with the following message: RunTask: Cannot set Column ‘Calc_ExecutionTime’ to be null. Please use DBNull instead.

The code to get the pack slip list works fine (synchronously):

var today = DateTime.Today.AddDays(0);
var yesterday = today.AddDays(-1);

Erp.Tables.ShipHead ShipHead;
foreach (var ShipHead_iterator in (from ShipHead_Row in Db.ShipHead
where
ShipHead_Row.Company == “ABC” &&
( ShipHead_Row.ShipStatus == “SHIPPED” || ShipHead_Row.ShipStatus == “Invoiced” )
&& (ShipHead_Row.ShipDate == yesterday)
orderby ShipHead_Row.PackNum
select ShipHead_Row)){
PackNumList = PackNumList + ShipHead_iterator.PackNum.ToString()+“~”;
}

if(PackNumList.Substring(PackNumList.Length-1) == “~”){
PackNumList = PackNumList.Substring(0,PackNumList.Length-1);
}

I tried making a temporary session but get the same error.

using (CallContext.Current.TemporarySessionCreator.SetUserID(“User”).SetCompanyID(“ABC”).SetPlant(“MfgSys”).Create()){}

The report style and user ID have access to both companies.
The data directive is company independent with the owner company being the new company.
The routing rule runs fine when triggered from customer shipment entry directly.
Buying the user process scheduler is an option if it is totally necessary to get this working.

Any guidance is greatly appreciated.

Make sure you have lines on the Shipment, else you can expect this failure from some logic in Internal.SR.PackingSlipPrint.doShipHead