Serial Number allocated for another purpose

I’m getting a new error. Any idea what might be causing this? It’s happening when adding a line to a shipment. From what I can tell, it’s not allocated anywhere. The serial number shows up and looks normal to be picked for the shipment.

Business Layer Exception

Serial number 30-19J0385 is not valid for this transaction because:This serial number is allocated for >another purpose.

Exception caught in: Epicor.ServiceModel

Error Detail

Description: Serial number 30-19J0385 is not valid for this transaction because:This serial number is >allocated for another purpose.
Program: Erp.Services.BO.CustShip.dll
Method: serialNumberProcessing
Line Number: 28297
Column Number: 17
Table: ShipDtl
Field: 00000000-0000-0000-0000-000000000000

Client Stack Trace

at Epicor.ServiceModel.Channels.ImplBase`1.ShouldRethrowNonRetryableException(Exception ex, DataSet dataSets)
at Erp.Proxy.BO.CustShipImpl.UpdateMaster(CustShipDataSet ds, Boolean doValidateCreditHold, Boolean doCheckShipDtl, Boolean doLotValidation, Boolean doCheckOrderComplete, Boolean doPostUpdate, Boolean doCheckCompliance, Boolean ipShippedFlagChanged, Int32 ipPackNum, Int32 ipBTCustNum, String& opReleaseMessage, String& opCompleteMessage, String& opShippingMessage, String& opLotMessage, String& opInventoryMessage, String& opLockQtyMessage, String& opAllocationMessage, String& opPartListNeedsAttr, String& opLotListNeedsAttr, String& shipCreditMsg, Boolean& cError, Boolean& compError, String& msg, String& opPostUpdMessage, Boolean& updateComplete, Boolean& checkComplianceError, Boolean& changeStatusError, Boolean& checkShipDtlAgain)
at Erp.Adapters.CustShipAdapter.UpdateMaster(Boolean doValidateCreditHold, Boolean doCheckShipDtl, Boolean doLotValidation, Boolean doCheckOrderComplete, Boolean doPostUpdate, Boolean doCheckCompliance, Boolean ipShippedFlagChanged, Int32 ipPackNum, Int32 ipBTCustNum, String& opReleaseMessage, String& opCompleteMessage, String& opShippingMessage, String& opLotMessage, String& opInventoryMessage, String& opLockQtyMessage, String& opAllocationMessage, String& opPartListNeedsAttr, String& opLotListNeedsAttr, String& shipCreditMsg, Boolean& cError, Boolean& compError, String& msg, String& opPostUpdMessage, Boolean& updateComplete, Boolean& checkComplianceError, Boolean& changeStatusError, Boolean& checkShipDtlAgain)
at Erp.UI.App.CustShipEntry.Transaction.Update()

What is the serial numbers current status?

INVENTORY

As it turns out, they tell me that they maybe had already picked that serial number in another line on the same shipment… I am guessing that was the issue? They said it resolved itself.

It’s happening again… and I don’t know what the cause is still!

Some notes about this for future me (or anyone else). I found the issue this time by looking in PartAllocSerial table. It only has rows for existing allocations so the problem should be pretty apparent. In my case, I had 2 sales order releases that each had allocated by serial number and I was adding the parts to the shipment in a way that the serial number did not match the order release that it was allocated to. So it ended up being silly because both serial numbers were going to end up on the same shipment like they were supposed to but it was fighting me because they were not matched to the right order release. My guess is that was happening originally and then someone magically tried a different line or serial number and then it just worked.