Cannot mark non serial tracked part as Serial Tracked - Track Serial Numbers Checkbox Grey Out!

Hi all,

The part was set up in 2015 as non serial tracked. The part is Manufactured, in the BOM has the part which we buy (this one is serialized ) and a sticker. Recently I was told this part need to be marked as serialized to keep track of our serial number. I adjusted the qty to 0 and tried to tick the box in the Part Entry screen but is grey out. I have removed all the customization in test enviroment, the materials from BOM and made sure there are non active demands in Epicor. Still the Track Serial Numbers checkbox is grey out. In the Epicor Training database I created the Part as non serialized, then added it to SO and a JOB and I was still able to change the part to serial tracked after adjusting qty to zero.

Has anybody had this issue or have any idea what can be wrong?

Thank you
Aleksander

I was also stucked with this problem, as epicor doesnt allow any part set as serial tracked , if it has any past part transaction as non serial tracked.
unfortunately, i have set those part as serial tracked by back end update query as it was required by management.

I used a DMT to update the Part to serial tracked. I had to use columns:
Company PartNum TrackSerialNum SNPrefix SNFormat SNBaseDataType
After the update I tried to adjust the qty to the right amount and I got an error that the serial number format need to be either mask, string or a number. Could you pasete your query which you used to update the part, please?

KInd regards
Aleksander

its a simple Sql query i had used,
update erp.part set tracklots=1 where partnum= Your partnum AND tracklots= 0

–Please confirm / set condition of PARTNUM before fire this query on that part only.
–If you have test server, first try on that.

Thank you Prakash!

I will try in TEST.

Regards
Aleksander

Just one quick qestion. Your SQL is seting the TrackLots Checkbox. Is this setting necessery to ticked the serial tracking on the part? Track lots is not grey out so I can tick it on Part Entry screen.

Thank you
Aleksander

Sorry Aleksander,
Please dont fire this query or set LotTrack chekBox, i was forgot that i am replying for ur question – set part as serial tracked.

Please fire query as- (On Test the test environment First)–

update erp.part set TrackSerialNum=1 where partnum= Your partnum AND TrackSerialNum= 0

Thanks for asking this question , the filed is TrackSerialNum not trackLots

Just for the benefit of others reading this thread

Directly updating your database is very risky and may corrupt your database. One is better off getting a one-off data fix from Epicor if possible. Direct updates are the LAST solution to consider and only should only be done by someone with a deep understanding of the business object logic one is trying to bypass.

We return you to your regular posting…

2 Likes

Hi Mark,
Yes ,this is 100% correct, bcoz of it might be hamper other transactions / functions. I had updated directly the part, which was having 10-15 part transctions only. So i didnt faced any error yet.

So i have suggest to Aleksander that, try it on test first.

Thanks

Hi Prakash,

I used the query to update the field. When I tried to ass the qantity with with serial number I got the same bussiness logic error like when I used DMT (please see below). Any thoughts?

Thank you
Aleksander

Serial number base data type must be integer, character or mask.

Exception caught in: Epicor.ServiceModel

Error Detail

Description: Serial number base data type must be integer, character or mask.
Program: Erp.Services.BO.SelectedSerialNumbers.dll
Method: GetNextSN
Line Number: 1323
Column Number: 17
Table: ttSNFormat
Field: SNBaseDataType
Server Trace Stack: at Erp.Services.BO.SelectedSerialNumbersSvc.GetNextSN(SelectedSerialNumbersTableset& ds, String snPartNum, String xrefPartNum, String xrefPartType, Int32 xrefCustNum, String plantID, String& nextBaseSN, String& snPrefix, String& nextFullSN, Boolean& snCounterMax) in c:_Releases\ERP\RL10.1.400.0\Source\Server\Services\BO\SelectedSerialNumbers\SelectedSerialNumbers.cs:line 1323
at Erp.Services.BO.SelectedSerialNumbersSvcFacade.GetNextSN(SelectedSerialNumbersTableset& ds, String snPartNum, String xrefPartNum, String xrefPartType, Int32 xrefCustNum, String plantID, String& nextBaseSN, String& snPrefix, String& nextFullSN, Boolean& snCounterMax) in c:_Releases\ERP\RL10.1.400.0\Source\Server\Services\BO\SelectedSerialNumbers\SelectedSerialNumbersSvcFacade.cs:line 136
at SyncInvokeGetNextSN(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\3.1.400.16\source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 59 at Epicor.Hosting.OperationBoundInvoker.Invoke(Object instance, Func2 func) in c:_Releases\ICE\3.1.400.16\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\3.1.400.16\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.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.SelectedSerialNumbersImpl.GetNextSN(SelectedSerialNumbersDataSet ds, String snPartNum, String xrefPartNum, String xrefPartType, Int32 xrefCustNum, String plantID, String& nextBaseSN, String& snPrefix, String& nextFullSN, Boolean& snCounterMax)
at Erp.Adapters.SelectedSerialNumbersAdapter.GetNextSN(String snPartNum, String xrefPartNum, String xrefPartType, Int32 xrefCustNum, String plantID, String& nextBaseSN, String& snPrefix, String& nextFullSN, Boolean& snCounterMax)

Ok. I figure out how to make it to work. I went to site tab and the “serial Number” button was working. I set the format to anfabetical and save the changes. Now I am able to add qty with serial number.

Thank you
Aleksander