I am trying to write an Epicor Function with a custom code block, I build an UpdExtSerialNoTableset and pass it to the UpdateExt method.
But when I try to use my UD fields, I run into trouble.
As soon as my code hits:
serial_row.UDField(“ShipDate_c”)
I am getting an error:
Program Ice.Services.Lib.RunTask when executing task 59545 raised an unexpected exception with the following message: RunTask:
System.InvalidOperationException: ‘ShipDate_c’ UD field of ‘SerialNo’ table either is not loaded or is not defined.
The SerialNo table has been added to the function and set as updatable.
My Assemblies:

Tables:

Services:

What am I forgetting to have the code recognize the UD tables?
Full Code Here:
var data = Db.SNTran.Where(sn=> sn.TranDate >= DateTime.Now.AddDays(-5) && sn.TranType == "STK-CUS");
this.CallService<Erp.Contracts.SerialNoSvcContract>(bo =>
{
foreach(var line in data){
var sn = bo.GetByID(line.PartNum,line.SerialNumber);
var tranDate = Db.SNTran.Where(t => t.PartNum == line.PartNum && t.SerialNumber == line.SerialNumber && t.TranType == "STK-CUS").Min(t => t.TranDate);
var serial_row = sn.SerialNo.FirstOrDefault();
Erp.Tablesets.SerialNoRow ext_row = BufferCopy.Clone(serial_row);
bool update = false;
if(ext_row.SNStatus == "SHIPPED"){
if((DateTime)(ext_row.UDField("ShipDate_c")) != tranDate){
ext_row.SetUDField("ShipDate_c",tranDate);
update = true;
}
if((DateTime)(ext_row.UDField("InstallDate_c")) == null) {
ext_row.SetUDField("InstallDate_c",tranDate);
update = true;
}
}
if(update){
ext_row.TransactionSource = "SNMaint";
updateRows.SerialNo.Add(ext_row);
}
}
});