Unable to Create Item Fulfillment with Serial Number Inventory Detail

Hi All,

I am stuck on this one. I am trying to create an item fulfillment for dropshipped lines of Sales Orders but with serialized items.

I keep getting this error even though the serial number should be set: "Failed to save record because Please enter value(s) for: Serial/Lot Number"

What am I missing?

Base Item Fulfillment Mapping:

Inventory Detail Subrecord Mapping:

Retry Data:

[
  {
    "id": "17771176",
    "order_number": "SO677778",
    "po_number": "PO57900",
    "date": "05/12/2025",
    "fulfillment_number": "IF735330",
    "fulfillment_id": "17771176",
    "tracking": [
      {
        "trackingNumber": "1Z9999991111",
        "weight": 31.04
      }
    ],
    "item": "IGNORETHIS",
    "item_uhs_sku": "EXAMPLESKU",
    "quantity": "1",
    "weight": "31.04",
    "serial_number": "test-serial-1"
  }
]

Request:

importing record {
    "index": 0,
    "retryCount": 0
}
{
    "nlobjRecordType": "itemfulfillment",
    "nlobjFieldIds": {
        "celigo_nlobjTransformId": 29208845,
        "custbody_intercompany_fulfillment": "IF735330",
        "custbody_intercompany_transaction": "SO677778",
        "shipstatus": "Shipped",
        "celigo_write_log": "true",
        "celigo_ignore_mandatory_fields": "true",
        "internalid": ""
    },
    "nlobjSublistIds": {
        "item": [
            {
                "itemname": "EXAMPLESKU",
                "quantity": "1",
                "itemreceive": "true",
                "celigo_inventorydetail": {
                    "nlobjRecordType": "inventorydetail",
                    "nlobjFieldIds": {
                        "celigo_write_log": "true",
                        "celigo_ignore_mandatory_fields": "true"
                    },
                    "nlobjSublistIds": {
                        "inventoryassignment": [
                            {
                                "issueinventorynumber": "test-serial-1",
                                "quantity": "1"
                            }
                        ]
                    }
                }
            }
        ],
        "package": [
            {
                "packagetrackingnumber": "1Z9999991111",
                "packageweight": 31.04
            }
        ]
    }
}
nlapi calls registered for $R:
r = NRecord.transform({
    "fromType": "salesorder",
    "fromId": 29208845,
    "toType": "itemfulfillment",
    "defaultValues": {}
});	
r.setValue({
    "fieldId": "custbody_intercompany_fulfillment",
    "value": "IF735330"
});	
r.setValue({
    "fieldId": "custbody_intercompany_transaction",
    "value": "SO677778"
});	
r.setText({
    "fieldId": "shipstatus",
    "text": "Shipped"
});	
r.selectLineItem({
    "sublistId": "item",
    "line": 0
});	
r.setSublistValue({
    "sublistId": "item",
    "fieldId": "itemname",
    "line": 0,
    "value": "EXAMPLESKU"
});	
r.setSublistValue({
    "sublistId": "item",
    "fieldId": "quantity",
    "line": 0,
    "value": "1"
});	
r.setSublistValue({
    "sublistId": "item",
    "fieldId": "itemreceive",
    "line": 0,
    "value": true
});	
sr = r.getSublistSubrecord({
    "sublistId": "item",
    "fieldId": "inventorydetail",
    "line": 0
});	
sr.insertLine({
    "sublistId": "inventoryassignment",
    "line": 0
});	
sr.setSublistValue({
    "sublistId": "inventoryassignment",
    "fieldId": "issueinventorynumber",
    "line": 0,
    "value": "test-serial-1"
});	
sr.setSublistValue({
    "sublistId": "inventoryassignment",
    "fieldId": "quantity",
    "line": 0,
    "value": "1"
});	
r.setSublistValue({
    "sublistId": "item",
    "fieldId": "line",
    "line": 0,
    "value": "1"
});	
r.insertLine({
    "sublistId": "package",
    "line": 0
});	
r.setSublistValue({
    "sublistId": "package",
    "fieldId": "packagetrackingnumber",
    "line": 0,
    "value": "1Z9999991111"
});	
r.setSublistValue({
    "sublistId": "package",
    "fieldId": "packageweight",
    "line": 0,
    "value": 31.04
});	
r.save({
    "enableSourcing": false,
    "ignoreMandatoryFields": true
});

I ended up just mapping to a custom column and made a UserEventScript that handles the inventory detail serial number assignment.

A solution without the UE Script would be ideal though.

I'm curious to see what happens if you transform the data prior to getting to this NetSuite step. I've seen strange behavior before when working with the rows structure.

{
  "id": "17771176",
  "order_number": "SO677778",
  "po_number": "PO57900",
  "date": "05/12/2025",
  "fulfillment_number": "IF735330",
  "fulfillment_id": "17771176",
  "items": [
    {
      "item": "IGNORETHIS",
      "item_uhs_sku": "EXAMPLESKU",
      "quantity": "1",
      "weight": "31.04",
      "inventory_detail": [
        {
          "quantity": "1",
          "serial_number": "test-serial-1"
        }
      ]
    }
  ],
  "packages": [
    {
      "trackingNumber": "1Z9999991111",
      "weight": 31.04
    }
  ]
}

I will test that and report back.

I initially wanted it this way anyways, but another issue had me revert back.

The same issue occurs.

{
  "id": "17778028",
  "order_number": "SO677695",
  "po_number": "PO57899",
  "date": "05/19/2025",
  "fulfillment_number": "IF735355",
  "fulfillment_id": "17778028",
  "tracking": [
    {
      "trackingNumber": "1Ztest456",
      "weight": 34.97
    },
    {
      "trackingNumber": "1Ztest123",
      "weight": 34.97
    }
  ],
  "items": [
    {
      "item": "XHO-EK-XP-005L-001",
      "item_uhs_sku": "XHS-XP005L",
      "quantity": "1",
      "weight": "38.9",
      "inventory_detail": [
        {
          "quantity": "1"
        }
      ]
    },
    {
      "item": "XHO-EK-XP-007-001",
      "item_uhs_sku": "XHS-DOLPHIN-XP-007",
      "quantity": "1",
      "weight": "31.04",
      "inventory_detail": [
        {
          "quantity": "1",
          "serial_number": "test-serial-1"
        }
      ]
    }
  ]
}
importing record {"index":0,"retryCount":0}
{"nlobjRecordType":"itemfulfillment","nlobjFieldIds":{"celigo_nlobjTransformId":29208340,"custbody_intercompany_fulfillment":"IF735355","custbody_intercompany_transaction":"SO677695","shipstatus":"Shipped","celigo_write_log":"true","celigo_ignore_mandatory_fields":"true","internalid":""},"nlobjSublistIds":{"item":[{"itemname":"XHS-XP005L","quantity":"1","itemreceive":"true","celigo_inventorydetail":{"nlobjRecordType":"inventorydetail","nlobjFieldIds":{"celigo_replaceAllLines_inventoryassignment":"true"},"nlobjSublistIds":{"inventoryassignment":[{"quantity":"1"}]}}},{"itemname":"XHS-DOLPHIN-XP-007","quantity":"1","custcol_serial_numbers":"test-serial-1","itemreceive":"true","celigo_inventorydetail":{"nlobjRecordType":"inventorydetail","nlobjFieldIds":{"celigo_replaceAllLines_inventoryassignment":"true"},"nlobjSublistIds":{"inventoryassignment":[{"issueinventorynumber":"test-serial-1","quantity":"1"}]}}}],"package":[{"packagetrackingnumber":"1Ztest456","packageweight":34.97},{"packagetrackingnumber":"1Ztest123","packageweight":34.97}]}}
nlapi calls registered for $R:
r = NRecord.transform({"fromType":"salesorder","fromId":29208340,"toType":"itemfulfillment","defaultValues":{}});	
r.setValue({"fieldId":"custbody_intercompany_fulfillment","value":"IF735355"});	
r.setValue({"fieldId":"custbody_intercompany_transaction","value":"SO677695"});	
r.setText({"fieldId":"shipstatus","text":"Shipped"});	
r.selectLineItem({"sublistId":"item","line":0});	
r.setSublistValue({"sublistId":"item","fieldId":"itemname","line":0,"value":"XHS-XP005L"});	
r.setSublistValue({"sublistId":"item","fieldId":"quantity","line":0,"value":"1"});	
r.setSublistValue({"sublistId":"item","fieldId":"itemreceive","line":0,"value":true});	
sr = r.getSublistSubrecord({"sublistId":"item","fieldId":"inventorydetail","line":0});	
sr.insertLine({"sublistId":"inventoryassignment","line":0});	
sr.setSublistValue({"sublistId":"inventoryassignment","fieldId":"quantity","line":0,"value":"1"});	
r.setSublistValue({"sublistId":"item","fieldId":"line","line":0,"value":"1"});	
r.selectLineItem({"sublistId":"item","line":1});	
r.setSublistValue({"sublistId":"item","fieldId":"itemname","line":1,"value":"XHS-DOLPHIN-XP-007"});	
r.setSublistValue({"sublistId":"item","fieldId":"quantity","line":1,"value":"1"});	
r.setSublistValue({"sublistId":"item","fieldId":"custcol_serial_numbers","line":1,"value":"test-serial-1"});	
r.setSublistValue({"sublistId":"item","fieldId":"itemreceive","line":1,"value":true});	
sr = r.getSublistSubrecord({"sublistId":"item","fieldId":"inventorydetail","line":1});	
sr.insertLine({"sublistId":"inventoryassignment","line":0});	
sr.setSublistValue({"sublistId":"inventoryassignment","fieldId":"issueinventorynumber","line":0,"value":"test-serial-1"});	
sr.setSublistValue({"sublistId":"inventoryassignment","fieldId":"quantity","line":0,"value":"1"});	
r.setSublistValue({"sublistId":"item","fieldId":"line","line":1,"value":"2"});	
r.insertLine({"sublistId":"package","line":0});	
r.setSublistValue({"sublistId":"package","fieldId":"packagetrackingnumber","line":0,"value":"1Ztest456"});	
r.setSublistValue({"sublistId":"package","fieldId":"packageweight","line":0,"value":34.97});	
r.insertLine({"sublistId":"package","line":1});	
r.setSublistValue({"sublistId":"package","fieldId":"packagetrackingnumber","line":1,"value":"1Ztest123"});	
r.setSublistValue({"sublistId":"package","fieldId":"packageweight","line":1,"value":34.97});	
r.save({"enableSourcing":false,"ignoreMandatoryFields":true});

I'd probably suggest a support ticket at this point and then hopefully you or support can update this thread with what the solution was.