Tasks getting stuck?

We’re seeing a multiple tasks getting stuck as “Active” in the system monitor. Has anyone else seen anything like this?

Are these reports from an autoprint BPM?

1 Like

Yes sir, they seem to be as the user is “taskagent” and that’s the user that runs the app server.

And, I imagine they are configured to autoprint to a server-side printer, correct?

1 Like

I like how @aidacra already knows the answer but he’s just dangling that carrot. :sweat_smile:

5 Likes

I noticed that too @Chris_Conn. :rofl:

We have three auto-email BPMs on sales orders, but I tracked it to the the SSRS Print BPM I setup via another thread: BPM Method on SSRS Email (print) a Sales Order? - #24 by Randy - ERP 10 - Epicor User Help Forum

So probably something I missed.

I guess, it’s SSRS Email “print” job.

@Chris_Conn, I think @aidacra is going to make me beg. :wink:

1 Like

Further investigate I’ve also discovered that this BPM also triggers the email send three times per BPM trigger, no matter how many lines on the SO or anything else I can find. It’s always three emails.

Now ironically, the “BPM Test email” node only emails once per BPM trigger. There is no loop in the C# code as I stripped the C# to the bare; Setting the variables in Set Argument/Variable nodes no IF or While statements in the code at all (code below screen shot)

Any ideas what I’m missing?

// Send SSRS Email Order Acknowledge in PDF Format

var soForm = Ice.Assemblies.ServiceRenderer.GetService<Erp.Contracts.SalesOrderAckSvcContract>(Db);
SalesOrderAckTableset soTS = soForm.GetNewParameters();
SalesOrderAckParamRow r = soTS.SalesOrderAckParam[0];

    r.OrderNum = OrderNum; // OrderNum var 
    r.SysRowID = Guid.Parse("00000000-0000-0000-0000-000000000000");
    r.AutoAction = "SSRSPrint";
    r.AgentSchedNum = 0;
    r.AgentID = "SystemTaskAgent";
    r.AgentTaskNum = 0;
    r.RecurringTask = false;
    r.RptPageSettings = "";
    r.RptPrinterSettings = "";
    r.RptVersion = "";
    r.ReportStyleNum = 2;  //  1002 = Our Report Style   2 = Default SSRS
    r.WorkstationID = "";
    r.TaskNote = "OdrAck Email";
    r.ArchiveCode = 0;
    r.DateFormat = "m/d/yyyy";
    r.NumericFormat = ",.";
    r.AgentCompareString = "";
    r.ProcessID = "";
    r.ProcessTaskNum = 0;
    r.DecimalsGeneral = 0;
    r.DecimalsCost = 0;
    r.DecimalsPrice = 0;
    r.GlbDecimalsGeneral = 0;
    r.GlbDecimalsCost = 0;
    r.GlbDecimalsPrice = 0;
    r.FaxSubject = string.Format("Order Confirmation for PO#: {0}.", PONum); 
    r.FaxTo = "";
    r.FaxNumber = "";
    r.EMailTo = CustEmail;
    r.EMailCC = "";
    r.EMailBody = "Thank you for your order. \n\r Attached please find the order acknowledgement for PO#: " + PONum + " Southern Imperial sales order #: " + OrderNum + ". Please review for accuracy. \n\r Inquiries on this order may be addressed to " + CSR_Name + " at 1-800-747-4665 or email: " + CSR_Email;  // Email Body
    r.EMailBCC = "";  
    r.AttachmentType = "PDF";
    r.ReportCurrencyCode = "USD";
    r.ReportCultureCode = "en-US";
    r.SSRSRenderFormat = "PDF";
    r.RowMod = "A";
    soForm.RunDirect(soTS);

I’m not sure why it would be three times, but I found that saving a line on a sales order will trigger the data directive with two OrderHed records, one that has RowMod=“” and second with “U”. For checking this sort of thing I like to add a custom code at the start of the directive something like the following:

int RecordCnt = 0;
foreach (var MyOrderHed in (from OrderHedRecord in ttOrderHed /*where
RcvDtlRecord.RowMod == IceRow.ROWSTATE_ADDED */
select OrderHedRecord ))
{
this.PublishInfoMessage(" “+RecordCnt+” RowMod: “+MyOrderHed.RowMod+” OrderNum: “+MyOrderHed.OrderNum
, Ice.Common.BusinessObjectMessageType.Information
, Ice.Bpm.InfoMessageDisplayMode.Individual,”&q uot;“,”");
RecordCnt++;
}

1 Like

Thanks @AndrewM, I’ll try that. Last night I moved the trigger logic to an In Transaction BPM but I’ll add this too.

@Randy @AndrewM @aidacra @Chris_Conn

I use the exact same method to print the order acknowledgement:

But for one specific user we get this message and it will not work… Any ideas? I will put the stack trace below with the error message.

Business Layer Exception

Program Ice.Services.Lib.RunTask raised an unexpected exception with the following message: RunTask: Object reference not set to an instance of an object.

Stack Trace:

at Ice.Core.SsrsReporting.PdfReportPrinter.Print(Byte[] reportBytes, String printerNameParameter, String reportDescription, EpiPrinterSettings printerSettings, EpiPageSettings pageSettings) in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\SsrsReporting\PdfReportPrinter.cs:line 32

at Ice.Core.SsrsReporting.ReportProcessorBase`1.RenderReportForPrintFaxOrEmailReport(RenderedSsrsReport renderedReport, Boolean serverSidePrint, Boolean ignorePageSettings) in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\SsrsReporting\ReportProcessorBase.cs:line 398

at Ice.Core.SsrsReporting.ReportProcessorBase`1.ProcessReportPart(String reportLocation) in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\SsrsReporting\ReportProcessorBase.cs:line 169

at Ice.Core.SsrsReporting.StandardReportProcessor`1.ProcessReportParts() in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\SsrsReporting\StandardReportProcessor.cs:line 33

at Ice.Core.RptBase.ReportSsrsDatabaseBuilder`1.<>c__DisplayClass10_0.<ProcessUnroutedReport>b__0(ReportInstanceInformation instance) in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\RptBase\ReportSsrsDatabaseBuilder.cs:line 231

at Ice.Core.RoutingAndBreaking.ReportPersister.Persist(ReportInstanceInformation reportInstance, Func`2 reportsRenderer, Action`1 fillSysRptLstRow, Action`2 processReport) in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\ReportPersister.cs:line 44

at Ice.Core.RptBase.ReportSsrsDatabaseBuilder`1.ProcessUnroutedReport() in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\RptBase\ReportSsrsDatabaseBuilder.cs:line 233

at Ice.Core.RptBase.ReportDatabaseBuilder`1.XMLClose() in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\RptBase\ReportDatabaseBuilder.cs:line 142

at Ice.Core.RptTaskBase`1.XMLClose() in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\RptBase\RptTaskBase.cs:line 130

at Ice.Hosting.TaskCaller.InnerExecuteTask(IceDataContext newContext) in D:\_Releases\ICE\3.1.500.31\Source\Framework\Epicor.Ice\Hosting\TaskCaller\TaskCaller.cs:line 93

at Ice.Hosting.TaskCaller.ExecuteTask(IceDataContext dataContext, Boolean suppressTransaction) in D:\_Releases\ICE\3.1.500.31\Source\Framework\Epicor.Ice\Hosting\TaskCaller\TaskCaller.cs:line 40

at Ice.Lib.RunTask.BpmFriendlyTaskLauncher.Run(String sessionIdPrefix, IceContext db, Action taskRunner) in D:\_Releases\ICE\3.1.500.31\Source\Server\Services\Lib\RunTask\BpmFriendlyTaskLauncher.cs:line 63

at Ice.Services.Lib.RunTaskSvc.InnerRunTask(Int64 ipTaskNum, Boolean suppressTransaction) in D:\_Releases\ICE\3.1.500.31\Source\Server\Services\Lib\RunTask\RunTask.cs:line 526

Exception caught in: Epicor.ServiceModel

Error Detail

============

Description: Program Ice.Services.Lib.RunTask raised an unexpected exception with the following message: RunTask: Object reference not set to an instance of an object.

Stack Trace:

at Ice.Core.SsrsReporting.PdfReportPrinter.Print(Byte[] reportBytes, String printerNameParameter, String reportDescription, EpiPrinterSettings printerSettings, EpiPageSettings pageSettings) in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\SsrsReporting\PdfReportPrinter.cs:line 32

at Ice.Core.SsrsReporting.ReportProcessorBase`1.RenderReportForPrintFaxOrEmailReport(RenderedSsrsReport renderedReport, Boolean serverSidePrint, Boolean ignorePageSettings) in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\SsrsReporting\ReportProcessorBase.cs:line 398

at Ice.Core.SsrsReporting.ReportProcessorBase`1.ProcessReportPart(String reportLocation) in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\SsrsReporting\ReportProcessorBase.cs:line 169

at Ice.Core.SsrsReporting.StandardReportProcessor`1.ProcessReportParts() in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\SsrsReporting\StandardReportProcessor.cs:line 33

at Ice.Core.RptBase.ReportSsrsDatabaseBuilder`1.<>c__DisplayClass10_0.<ProcessUnroutedReport>b__0(ReportInstanceInformation instance) in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\RptBase\ReportSsrsDatabaseBuilder.cs:line 231

at Ice.Core.RoutingAndBreaking.ReportPersister.Persist(ReportInstanceInformation reportInstance, Func`2 reportsRenderer, Action`1 fillSysRptLstRow, Action`2 processReport) in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\ReportPersister.cs:line 44

at Ice.Core.RptBase.ReportSsrsDatabaseBuilder`1.ProcessUnroutedReport() in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\RptBase\ReportSsrsDatabaseBuilder.cs:line 233

at Ice.Core.RptBase.ReportDatabaseBuilder`1.XMLClose() in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\RptBase\ReportDatabaseBuilder.cs:line 142

at Ice.Core.RptTaskBase`1.XMLClose() in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\RptBase\RptTaskBase.cs:line 130

at Ice.Hosting.TaskCaller.InnerExecuteTask(IceDataContext newContext) in D:\_Releases\ICE\3.1.500.31\Source\Framework\Epicor.Ice\Hosting\TaskCaller\TaskCaller.cs:line 93

at Ice.Hosting.TaskCaller.ExecuteTask(IceDataContext dataContext, Boolean suppressTransaction) in D:\_Releases\ICE\3.1.500.31\Source\Framework\Epicor.Ice\Hosting\TaskCaller\TaskCaller.cs:line 40

at Ice.Lib.RunTask.BpmFriendlyTaskLauncher.Run(String sessionIdPrefix, IceContext db, Action taskRunner) in D:\_Releases\ICE\3.1.500.31\Source\Server\Services\Lib\RunTask\BpmFriendlyTaskLauncher.cs:line 63

at Ice.Services.Lib.RunTaskSvc.InnerRunTask(Int64 ipTaskNum, Boolean suppressTransaction) in D:\_Releases\ICE\3.1.500.31\Source\Server\Services\Lib\RunTask\RunTask.cs:line 526

Program: Ice.Services.Lib.RunTask.dll

Method: InnerRunTask

Line Number: 526

Column Number: 25

Server Trace Stack: at Ice.Services.Lib.RunTaskSvc.InnerRunTask(Int64 ipTaskNum, Boolean suppressTransaction) in D:\_Releases\ICE\3.1.500.31\Source\Server\Services\Lib\RunTask\RunTask.cs:line 526

at Ice.Services.Lib.RunTaskSvcFacade.RunTaskDirect(Int64 ipTaskNum) in D:\_Releases\ICE\3.1.500.31\Source\Server\Services\Lib\RunTask\RunTaskSvcFacade.cs:line 103

at Ice.Core.TaskServiceBase`1.InnerRunDirect(IceRow paramRow) in D:\_Releases\ICE\3.1.500.31\Source\Server\Internal\Lib\TaskLib\TaskBase\TaskServiceBase.cs:line 587

at Erp.Services.Rpt.SalesOrderAckSvc.RunDirect(SalesOrderAckTableset ds) in c:\_Releases\ERP\RL10.1.500\Source\Server\Services\Rpt\SalesOrderAck\SalesOrderAck.Designer.cs:line 199

at Erp.Services.Rpt.SalesOrderAckSvcFacade.RunDirect(SalesOrderAckTableset ds) in c:\_Releases\ERP\RL10.1.500\Source\Server\Services\Rpt\SalesOrderAck\SalesOrderAckSvcFacade.cs:line 211

at Epicor.Customization.Bpm.DB017FE532455048AFA2690B2FAE48155A.PostTranDirective_AutoOrderAckV2_1BCC788C0ED942E9B5A2FEBD93DBA84A.A001_CustomCodeAction()

at Epicor.Customization.Bpm.DB017FE532455048AFA2690B2FAE48155A.PostTranDirective_AutoOrderAckV2_1BCC788C0ED942E9B5A2FEBD93DBA84A.ExecuteCore()

at Epicor.Customization.Bpm.DirectiveBase`3.Execute(TParam parameters) in c:\_Releases\ICE\3.1.500\Current\Source\Server\Internal\Lib\Epicor.Customization.Bpm\DirectiveBase.Generic.cs:line 160

at System.Linq.Enumerable.All[TSource](IEnumerable`1 source, Func`2 predicate)

at Epicor.Customization.Bpm.CustomizationBase2`3.Execute(TParam parameters) in c:\_Releases\ICE\3.1.500\Current\Source\Server\Internal\Lib\Epicor.Customization.Bpm\CustomizationBase2.cs:line 77

at Epicor.Customization.Bpm.Standard.MonitoringSessionManager.ProcessCollectedData(IceContext db, IRowChangesCollection data, IDirectiveEnabler enabler) in c:\_Releases\ICE\3.1.500\Current\Source\Server\Internal\Lib\Epicor.Customization.Bpm\Standard\MonitoringSessionManager.cs:line 138

at Epicor.Customization.Bpm.SvcFacadeBase`3.Epicor.Hosting.IBpmReadyService.FinalizeCall(Object state, Boolean fail) in c:\_Releases\ICE\3.1.500\Current\Source\Server\Internal\Lib\Epicor.Customization.Bpm\SvcFacadeBase.Generic.cs:line 214

at Epicor.Hosting.OperationBoundInvoker.Invoke(Object instance, Func`2 func) in D:\_Releases\ICE\3.1.500.31\Source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 32

at Epicor.Hosting.Wcf.EpiOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) in D:\_Releases\ICE\3.1.500.31\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)

Client Stack Trace

==================

at Epicor.ServiceModel.Channels.ImplBase`1.ShouldRethrowNonRetryableException(Exception ex, DataSet[] dataSets)

at Erp.Proxy.BO.SalesOrderImpl.MasterUpdate(Boolean lCheckForOrderChangedMsg, Boolean lcheckForResponse, String cTableName, Int32 iCustNum, Int32 iOrderNum, Boolean lweLicensed, Boolean& lContinue, String& cResponseMsg, String& cCreditShipAction, String& cDisplayMsg, String& cCompliantMsg, String& cResponseMsgOrdRel, SalesOrderDataSet ds)

at Erp.Adapters.SalesOrderAdapter.MasterUpdate(Boolean lCheckForOrderChangedMsg, Boolean lcheckForResponse, String cTableName, Int32 iCustNum, Int32 iOrderNum, Boolean lweLicensed, Boolean& lContinue, String& cResponseMsg, String& cCreditShipAction, String& cDisplayMsg, String& cCompliantMsg, String& cResponseMsgOrdRel)

at Erp.UI.App.SalesOrderEntry.Transaction.Update()

Hey there @utaylor

I reviewed how I got it working in another thread.

It is actually working for everyone else and you are a wonderful man for creating that original post and getting all those good tips. It is just this ONE user that gets a message and what I am wondering is if she can’t get the referenced .dll or something of the sort. I just don’t understand how one user can’t check the box and trigger this data directive. She always gets the error I posted. Any other user can do it.

That user doesn’t have access\permission to use the selected printer or report?

I start by testing it manually with the same settings and see what the result is.

I don’t know what printer that would be because it is emailed from this data directive. She is able to print the report manually. In the system monitor I see that the system agent is the initiator when she prints it manually, but when the data directive runs it is initiated by the client.

I’ve noticed E10 SSRS is more picky on users Default Printers in Windows.
Especially when Win10 sets the default to the XPS printer. Can they print
the form manually from the menu or do they get an error?

Kinda lends credence to a permissions issue on some resource then. Maybe someone else here has a clue.

Could it be that the CSR email isnt set for her?

@Randy @Nathan_Woolen @Chris_Conn She can print it manually without any issues.

I will check her default printer, but I believe it would be the printer nearest to her desk which is what others have as their default printer and they are not having any issues.

@Chris_Conn I spent a lot of time yesterday trying to figure out if it was a permissions issue, but I gave her all the permissions in the world in Epicor and it didn’t do a thing. I also have printed the order using this customization and it works just fine.