Epicor Function Code Blocks and UD Fields

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:
image

Tables:
image

Services:
image

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);  
    }
  }
});

I would have to guess it has something to do with BufferCopy.Clone(serial_row) not copying UD fields