I have been sent multiple data fixes by Epicor to solve a fiscal issue of a past fiscal period without an end date, which is preventing us from verifying balances. After the 3rd fix not working, I’m wondering if I am using the workbench correctly. I see that there is a parameters tab, which correctly lists the parameters we are trying to load:
I would double-check the parameters. It looks like you have a “0” entered for the Fiscal Year Suffix. Is this the actual suffix, or can you clear this parameter so that it’s blank?
Since you’re not getting results when you click Report, the parameters you’ve entered aren’t returning any records after filtering.
You have Parameters set in this Data Fix according to your picture above.
By hitting ‘Report’ you are asking the data fix to search for whatever the parameters set by the data fix. If it finds zero entries then there are no results per the parameters.
If you’re expecting results and know an entry is incorrect that is supposed to be fixed by this fix then you have to call Support and report that the fix is not finding the issues the fix is supposed to correct.
OK, so the newest data fix cleared the 0 out of the suffix in parameters but when I click report, I still get nothing. Do you think this could have to do with the start and end dates of the fiscal period being outside of the fiscal year? Our prior accountant entered a 13th period with a start date in 1997. It is this odd 13th period that we don’t have an end-date for. The existing start date is 1/1/97 and Epicor suggested loading 1/31/97 as end date. Are these dates incomparable with fiscal year? I’m trying to work with the limited info helpdesk is giving me…
so would I be correct in thinking that these parameters would not bring back my problem row, because the value for end date is null in our database but has an end date per the parameters in data fix?
That’s a possibility. The only ones that can answer that would be Epicor Support. We have no way of seeing the actual fix because you don’t have a TSQL version of it.
Your best bet is to notify Support of your issue and have them evaluate the fix. Refer back to the actual case number this fix applies to at https://epicorcs.service-now.com/epiccare/
It’s not you, Epicor support is very bad at providing data fixes that actually work.
The datafix is just an encrypted stored procedure. The parameters that you see are just parameters in the stored procedure where you can reference companies, orders, parts, etc. Somebody at Epicor support (@aidacra) can tell you how they actually create the stored procedure, but I’ve only ever received one or two that actually run.
After you install the datafix to a server you can use a tool like SQL Decryptor to view the SQL and make sure it is actually doing what you need. I would highly highly recommend doing this because the quality of the fixes is not very high.
2 Likes
aidacra
(Nathan your friendly neighborhood Support Engineer)
16
When an issue is clearly defined and when Support has the customer’s database in-house where the issue can be duplicated,and where the analyst can test the data fix before it is sent out to a customer the success rate of data fixes is very high. When any of the previous variables are not true (for whatever reason, right, wrong, or indifferent), the initial success rate of any given data fix is obviously going to be less as all those involved with the data fixes have to make some inferences and educated guesses along the way–nature of less than perfect sight into an issue.
There is a reason why one should never blindly do anything anyone says in production, ever, even if that person is a representative of your ERP software vendor, without knowing how it will actually impact production–best way to know how it will work is to test it somewhere that is as close to a production environment that isn’t actually one’s production environment. If there is an issue with any given data fix or it isn’t quite right, Support commits to working with the team that creates the data fixes to get it right–we just need to be made aware.
Speaking for myself (and in the most generic sense possible), I find letting the resource that provided the less than ideal experience know the issue is the most effective way of getting the issue resolved–and, hopefully in the process, prevent another person from running into the same experience. This is why I ended up with a free burger at BWW last week when they put the wrong cheese on the one they brought me (I just asked for a piece of the correct cheese :/) . I don’t know what the free burger equivalent is to a data fix from an ERP company other than knowing that one may have helped someone else down the road avoid an issue instead of just correcting an issue myself when the issue presents… which is a good enough reason to do anything in my book.
@Alice_Elizabeth, if you haven’t done so already, please update your support case and the analyst will work with the developer that wrote the fix to determine what the issue is, and make it right.
I would completely disagree with this, most users are not qualified in ANY way to deal with stored procedures or code at this level. There is a reason why support encrypts them, doing this could cause a lot of damage if done incorrectly. The best approach is to go back to support and explain what did or did not work and let them help you. If you aren’t getting the level of support you expect then escalate the call. In my experience support works very hard, and yes everyone makes mistakes but it is 10 o’clock at night and @aidacra is sitting here on the forum answering questions, something he clearly doesn’t have to do.
So whatever your experience with support may be, please understand that there are always a few bad experiences in everything in life, but you shouldn’t generalize those experiences onto everyone else.
I do hope with all my heart that this datafix is indeed going to address the original problem we have, which is verifying balances so that we can roll over year. The datafix is supposed to address this error that generates when trying to run verify balances process:
Program Ice.Services.Lib.RunTask raised an unexpected exception with the following message: RunTask: Nullable object must have a value. Stack Trace:
_ at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)_
_ at Erp.Internal.GL.VerifyGLBals.b__b(GLBookPer ttFiscalPer_Row) in c:Releases\ERP\RL10.1.400.0\Source\Server\Internal\GL\VerifyGLBals\VerifyGLBals.cs:line 660
_ at System.Linq.Enumerable.WhereListIterator 1.MoveNext()_ _ at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable 1 source)_
_ at Erp.Internal.GL.VerifyGLBals.VerifyBalanceByBook(Int64 InstanceTaskNum) in c:Releases\ERP\RL10.1.400.0\Source\Server\Internal\GL\VerifyGLBals\VerifyGLBals.cs:line 659
_ at Ice.Hosting.TaskCaller.InnerExecuteTask(IceDataContext newContext) in c:Releases\ICE\3.1.400.20\source\Framework\Epicor.Ice\Hosting\TaskCaller\TaskCaller.cs:line 78
_ at Ice.Hosting.TaskCaller.ExecuteTask(Boolean suppressTransaction) in c:Releases\ICE\3.1.400.20\source\Framework\Epicor.Ice\Hosting\TaskCaller\TaskCaller.cs:line 31
_ at Ice.Lib.RunTask.BpmFriendlyTaskLauncher.Run(String sessionIdPrefix, IceContext db, Action taskRunner) in c:Releases\ICE\3.1.400.20\source\Server\Services\Lib\RunTask\BpmFriendlyTaskLauncher.cs:line 63
_ at Ice.Services.Lib.RunTaskSvc.InnerRunTask(Int64 ipTaskNum, Boolean suppressTransaction) in c:Releases\ICE\3.1.400.20\source\Server\Services\Lib\RunTask\RunTask.cs:line 502
_ at Ice.Services.Lib.RunTaskSvc.InnerRunTask(Int64 ipTaskNum, Boolean suppressTransaction) in c:Releases\ICE\3.1.400.20\source\Server\Services\Lib\RunTask\RunTask.cs:line 502
_ at Ice.Services.Lib.RunTaskSvcFacade.RunTask(Int64 ipTaskNum) in c:Releases\ICE\3.1.400.20\source\Server\Services\Lib\RunTask\RunTaskSvcFacade.cs:line 97
_ at SyncInvokeRunTask(Object , Object[] , Object[] )_
_ at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)_
_ at Epicor.Hosting.OperationBoundInvoker.InnerInvoke(Object instance, Func 2 func) in c:\_Releases\ICE\3.1.400.20\source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 59_ _ at Epicor.Hosting.OperationBoundInvoker.Invoke(Object instance, Func 2 func) in c:Releases\ICE\3.1.400.20\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.20\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.SecurityChannelListener 1.ReceiveItemAndVerifySecurityAsyncResult 2.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)*
I echo what @josecgomez is stating. My experience has been very good with Epicor support. I also echo @aidacra because when you can provide a copy of your database to support things are much better.
@Alice_Elizabeth have you been asked to provide a copy of your database to support? You may want to suggest this if not.