Serial tracking setup

I’m trying to set up serial tracking in our pilot database. The only reason that we want to try out serial tracking is because I just found out about serial number transfer from one customer to another. So I wanted to dig around and see if it will do what we need it to. But I can’t open up the serial screens because serial tracking isn’t enable. So I go to enable it and I get this error. I already brought in all of the shipped not invoiced into a group and posted it, but I still get this error. Does anyone have any idea what I need to do to get past this?


full exception details

Business Layer Exception

Cannot change to outbound tracking due to uninvoiced shipments for this site.

Exception caught in: Epicor.ServiceModel

Error Detail

Description: Cannot change to outbound tracking due to uninvoiced shipments for this site.
Program: Erp.Services.BO.PlantConfCtrl.dll
Method: OnChangeOfSerialTracking
Line Number: 1432
Column Number: 33
Table: PlantConfCtrl
Field: SerialTracking
Server Trace Stack: at Erp.Services.BO.PlantConfCtrlSvc.OnChangeOfSerialTracking(Int32 ipSerialTracking, PlantConfCtrlTableset& ds) in c:_Releases\ERP\RL10.2.200.0\Source\Server\Services\BO\PlantConfCtrl\PlantConfCtrl.cs:line 1432
at Erp.Services.BO.PlantConfCtrlSvcFacade.OnChangeOfSerialTracking(Int32 ipSerialTracking, PlantConfCtrlTableset& ds) in c:_Releases\ERP\RL10.2.200.0\Source\Server\Services\BO\PlantConfCtrl\PlantConfCtrlSvcFacade.cs:line 579
at SyncInvokeOnChangeOfSerialTracking(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at Epicor.Hosting.OperationBoundInvoker.InnerInvoke(Object instance, Func2 func) in C:\_Releases\ICE\ICE3.2.200.13\Source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 59 at Epicor.Hosting.OperationBoundInvoker.Invoke(Object instance, Func2 func) in C:_Releases\ICE\ICE3.2.200.13\Source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 28
at Epicor.Hosting.Wcf.EpiOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) in C:_Releases\ICE\ICE3.2.200.13\Source\Framework\Epicor.System\Hosting\Wcf\EpiOperationInvoker.cs:line 23
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
at System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext request, Boolean cleanThread, OperationContext currentOperationContext)
at System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext)
at System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult result)
at System.ServiceModel.Dispatcher.ChannelHandler.OnAsyncReceiveComplete(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.SecurityChannelListener1.ReceiveItemAndVerifySecurityAsyncResult2.InnerTryReceiveCompletedCallback(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.TransportDuplexSessionChannel.TryReceiveAsyncResult.OnReceive(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.SynchronizedMessageSource.ReceiveAsyncResult.OnReceiveComplete(Object state)
at System.ServiceModel.Channels.SessionConnectionReader.OnAsyncReadComplete(Object state)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)
at System.Net.Security.NegotiateStream.ProcessFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.NegotiateStream.ReadCallback(AsyncProtocolRequest asyncRequest)
at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result)
at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes)
at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.ConnectionStream.IOAsyncResult.OnAsyncIOComplete(Object state)
at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e)
at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(SocketError socketError, Int32 bytesTransferred, SocketFlags flags)
at System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)

Client Stack Trace

at Epicor.ServiceModel.Channels.ImplBase`1.ShouldRethrowNonRetryableException(Exception ex, DataSet[] dataSets)
at Erp.Proxy.BO.PlantConfCtrlImpl.OnChangeOfSerialTracking(Int32 ipSerialTracking, PlantConfCtrlDataSet ds)
at Erp.Adapters.PlantConfCtrlAdapter.OnChangeOfSerialTracking(Int32 ipSerialTracking)

I haven’t worked with serial tracking yet, but I wonder if it’s also counting packs that were created but never shipped?

Use the search function on customer shipment entry to find all packs with status of Shipped.
(You can use the shipped not invoiced report to see all of these as well)
Either uncheck the shipped box on those, or invoice them all in a group.

Then you can come back the serial settings.


I pulled them into a group and posted the group, but it still throws the error. So I’m not sure what else I am missing.

I deleted the one pack slip that was created but not shipped.

Anything show up on the shipped not invoiced report? Maybe a drop ship or something?

So I checked that report, and it won’t even run, it says that there are no records selected. Which would make sense… I wasn’t sure on drop ships. I’ll run a BAQ to see if I can find any open drop ships.


So I reran the report with a way wide open date range, and now I see some shipped not invoiced. I’ll fix those and see what I need to do from there. (this stuff is over a year old. Ouch.)

It’s packing slips that aren’t even connect to orders. Usually that happens when the mass ship doesn’t automatically fill in the quantities for shipping, they don’t pay any attention, and it comes out blank so they just make new ones. :man_facepalming:

So I deleted all of those, still won’t work. I deleted all of the open packing slips (all empty still… ughhh) still no go. The only packing slips left that don’t have an invoice are voided packing slips, and I can’t do anything with those.

Does anyone else have any ideas? I submitted a service ticket too. :cold_face: (getting ready to turn blue when I hold my breath).

So I finally got it to work. The check is looking for any packID that doesn’t have an invoice attached to it. This includes empty packs, and voided packs! We are lucky that the voided packs that we did have were (again) empty, so I can cancel the void, re-open them and delete them. (incidentally, I had no idea there was a void pack screen. I created a UBAQ to un-void them before I found that out).

Service gave me a form to fill out to create an enhancement request to not look at voided packs, or any packs with no lines (part numbers) on them. For the voided ones, if there was enough reason to make a void pack screen, there is probably enough reason that a company doesn’t want to delete them. So to say if you void a pack, you can no longer turn on serial numbering is a pretty harsh check.

I will say Kudos :clap: for service (Mindy Urbanski) for being able to jump right from, “here’s my problem” to “we found a work around and think that this could be improved by _______”. She immediately understood the enhancement idea, provided the form to fill out, and offered to submit it on my behalf. This is much improved over past experiences with enhancement requests and service. I’s great to know that they are listening.

@aidacra tagging so you can pass this along to Mindy to express my appreciation.