WELCOME TO THE COMMUNITY
find what you are looking for or ask a new question
Home > Forum > Latest posts

latest posts

Hello,
on my test instance the WebCon BPS service restarts. On average every 3 minutes. I get messages like below. Have any of you encountered this type of problem?

The WebCon WorkFlow Service service terminated unexpectedly. It has done this 107 time(s). The following corrective action will be taken in 60000 milliseconds: Restart the service.
==
Failed to activate some modules
Category: Activation
Failed to activate some modules
OLAP (for db: BPS_Content )
Warning (db:BPS_Content): OLAP actualization schedules have not been set. You can set it in BPS STUDIO, System Settings, Services configuration, Schedules
==
System.ServiceModel.CommunicationException: No connection could be made because the target machine actively refused it. (ms-l-***:8002)
---> System.Net.Http.HttpRequestException: No connection could be made because the target machine actively refused it. (ms-l-***:8002)
---> System.Net.Sockets.SocketException (10061): No connection could be made because the target machine actively refused it.

--

Activation summary
Service -MS-L-***- Activate roles

EmailsService
MassNotifications
RecurrentActions
Timeouts
LicenceService
WCFService
WCFLicenceService
OcrAi
OcrTextLayer
OcrAiLearn
Archiving
MobilePushNotifications
UserSynchronization
PersonalDataRemoval
SolrIndexer
Import
MasterQueue
ElementsRemoval
WCFCsomService

--

Activation summary
Service -MS-L-***- Activate roles

ADSynchronization (for db: BPS_Content )
ExchangeRates (for db: BPS_Content )
Covers (for db: BPS_Content )
OLAP (for db: BPS_Content )
OcrAiUpload (for db: BPS_Content )
LogCleaner (for db: BPS_Content )
OcrTextLayerUpload (for db: BPS_Content )
OcrAiLearnUpload (for db: BPS_Content )
TasksInfoCalculation (for db: BPS_Content )
ADSyncIncremental (for db: BPS_Content )

->

Failed to activate some modules
Category: Activation
Failed to activate some modules
MassNotificationSchedules (for db: BPS_Content )
None execution configuration found for MassNotificationSchedules on database: BPS_Content
More information is available in database AdminServiceLogs if "Info" option is selected as "Database log level" in services configuration.

MVP

Hi Joanna,

I haven't tested it, but a query like this should you give the id of the previous step. This could then be used in an if/switch operator.

select Top 1 WFH_STPID
from WFHistoryElements
where WFH_OrgID = InstanceID
and WFH_STPID <> CurrentStpId
order by WFH_Id desc

Best regards,
Daniel

MVP
In reply to: Markus Jenni

Hi Dominik

We are creating calendar entries by using the MS Graph.
When using the calendar API there is a property isOnlineMeeting that you can set to true.

Here you find the documentation with an example
https://learn.microsoft.com/en-us/graph/outlook-calendar-online-meetings?tabs=http#example-create-and-make-meeting-available-as-an-online-meeting

Hi Markus,
Thank you for quick answer.
Microsoft Graph is great tool, like you said. We are investigating the possibilities of such usage within one of our processes.
We will have a look if such flag (isOnlineMeeting) will appear in WebCon BPS exchange integration standard action type :)
It would be greate to have it out-of-the-box within exchange actions (and Microsoft Graph probably behind it).
Best Regards, Dominik

Hello everyone,

I have a workflow where data is imported and instances are created. After the import, a timeout (minute) is defined which further delays the instance.
A field value (multiline text) is set on the path. At this point, the workflow encounters an error (Concurrency Error).
However, if I manually pass the WF instance on the path, the field value is set correctly.


I hope someone can help me.
Thanks in advance.

Error Stacktrace:


Nachricht
Fehler Setze Symbol - Fehlerhafte Rezepturen während betreten des Schrittes. (Schritt: Bearbeitung Produktion, Pfad: Ja)
Concurrency Error
Log
Error code: 100
Einzelner Wert:
Attributwert von "Symbol - Fehlerhafte Rezepturen" auf "" geändert.


Concurrency Error
bei System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
bei System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
bei System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
bei System.Data.SqlClient.SqlDataReader.get_MetaData()
bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
bei System.Data.SqlClient.SqlCommand.CompleteAsyncExecuteReader(Boolean isInternal, Boolean forDescribeParameterEncryption)
bei System.Data.SqlClient.SqlCommand.InternalEndExecuteReader(IAsyncResult asyncResult, String endMethod, Boolean isInternal)
bei System.Data.SqlClient.SqlCommand.EndExecuteReaderInternal(IAsyncResult asyncResult)
bei System.Data.SqlClient.SqlCommand.EndExecuteReaderAsync(IAsyncResult asyncResult)
bei System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei WebCon.WorkFlow.BusinessLogic.Helpers.TransactionsHelper.<>c__DisplayClass11_0.<<EnlistToWorkFlowTransactionScalarAsync>b__0>d.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei WebCon.WorkFlow.BusinessLogic.Helpers.TransactionsHelper.<ExecuteTransactionAsync>d__15.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei WebCon.WorkFlow.BusinessLogic.Helpers.TransactionsHelper.<EnlistToWorkFlowTransactionScalarAsync>d__11.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei WebCon.WorkFlow.BusinessLogic.Helpers.SqlCommandAdapterNotStatic.<>c__DisplayClass31_0.<<ExecuteScalarAsync>b__0>d.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei WebCon.WorkFlow.BusinessLogic.Helpers.SqlQueryLogger.<ExecuteWithDebugSaveAsync>d__10`1.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei WebCon.WorkFlow.BusinessLogic.Helpers.SqlCommandAdapterNotStatic.<ExecuteScalarAsync>d__31.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei WebCon.WorkFlow.Data.Repositories.Subelements.RowsRepository.<UpdateAsync>d__3.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei WebCon.WorkFlow.BusinessLogic.BusinessLogic.Subelements.Save.SubelementRowSaver.<SaveExistingRows>d__8.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei WebCon.WorkFlow.BusinessLogic.BusinessLogic.Subelements.Save.SubelementRowSaver.<SaveRows>d__6.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei WebCon.WorkFlow.BusinessLogic.BusinessLogic.Subelements.Save.SubelementSaveController.<Save>d__6.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei WebCon.WorkFlow.BusinessLogic.BusinessLogic.ElementManagement.FormFields.Subelements.SubelementFormField.<Save>d__116.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei WebCon.WorkFlow.BusinessLogic.Managers.WorkflowManagement.WorkFlowManager.<SaveSubelementsValuesAsync>d__49.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei WebCon.WorkFlow.BusinessLogic.Helpers.WorkFlowManagerProxy.<SaveSubelementsValuesAsync>d__0.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei WebCon.WorkFlow.BusinessLogic.Automations.Engine.Evaluators.ActionEvaluator.<EvaluateAsync>d__23.MoveNext()

MVP

Hi Dominik

We are creating calendar entries by using the MS Graph.
When using the calendar API there is a property isOnlineMeeting that you can set to true.

Here you find the documentation with an example
https://learn.microsoft.com/en-us/graph/outlook-calendar-online-meetings?tabs=http#example-create-and-make-meeting-available-as-an-online-meeting

MVP

Hi Artur
I'll start with the Error - it's caused due to wrong filter on the HR View.

Those filters are translated by WEBCON to SQL queries, you can look how the query looks like for example with using diagnostics*, but for now it's not required.
With that in mind we can compare it to what happens under the hood, the query looks something like this (it's very rough, there is much more, but that is the part which we have to focus on):
SELECT * FROM V_WFElements WHERE {QM_Parent_ID}
It's missing an equality operator, it should be more like this:
SELECT * FROM V_WFElements WHERE {QM_Parent_ID} = {WFD_ID}

So you should make some kind of a comparsion when filtering, and you most certainly want to compare value from form attribute QM Parent ID with Data Source Columns (attachment) - ID should be what you are looking for.

At this moment you are copying subworkflow ID into a field on parent workflow - this works fine, when you are sure that there will be only one subworfklow - creating new subworkflows will override this value.
If there is a possibility that more subworkflows of same type will be created, then I'd suggest creating a field on subworkflow, which will contain ID of parent - this way, you can also handle one to many relations.

This is also something that webcon does when you set start mode as 'subworkflow of current instance', it saves the ID of parent into WFD_WFDID column of child element - available as 'Instance ID from parent workflow' in Values tab of business rules/filters etc. From what i know this is required to make step Wait for subworkflows work - you can't achieve it with custom relations.
Sometimes you might want to have your own relation though, for ease of use.

*https://community.webcon.com/posts/post/diagnostics-and-form-behavior-registration-mechanism/215/40

MVP

Hi Matthias,
By design possibility to add / remove / edit attachments requires editing rights. By default it's even stricter - only person which added attachment can remove it, and in exactly same step where it has been added.

You could though solve it in 2/3 ways, maybe someone will come up with another ones:
1. Give sales employee edit rights, but create edit restrictions on fields/paths (if fields are in group, then group level restriction is enough), something like 'When user doesn't have a task' - should be possible using 'Assigned persons', and 'Current user is one of'. It is a bit of work though.
2. Create a 2 step subworkflow, which will be used to add attachments to parent - create a global* 'hyperlink start element'** action, and use related attachments *** tab to display them.
3. Is an variation on 2 - creating subworkflow, but after registering that subworkflow, you could use move workflow **** action - trigger it on child, and target parent workflow. Add technical path on each step of parent workflow, with Add Attachment ***** action - this should target latest child workflow for attachment adding.

I'd probably try to work with 2nd approach, as it looks like least pain to maintain it.
Also - you could try a variant with only 1 subworkflow dedicated to keep attachments added 'during process' instead of creating a subworkflow each time attachments are added.

Note from my perspective - usually letting someone add information during the process, when it's not their time to act without proper information flow might lead to errors.
If someone from Sales have a new attachment, maybe a better way would be to give everyone possibility to move workflow to Sales, where they can attach what is needed, and use 'Back to the previous step' destination step on a path in sales.
It forces Sales to inform someone that there is some kind of a new data, because they have to ask current assignees to pass them the instance.

* https://docs.webcon.com/docs/2023R3/Studio/Workflow/Workflow_GlobalAction3/
** https://docs.webcon.com/docs/2023R3/Studio/Action/Form/Action_Hyperlink
*** https://docs.webcon.com/docs/2023R3/Studio/Process/Attribute/Basic/Itemlist/BasicColumns/RelativeAttachmentsConfig
**** https://docs.webcon.com/docs/2023R3/Studio/Action/Workflow/MoveManyWorkFlows/
***** https://docs.webcon.com/docs/2023R3/Studio/Action/Attachments/Action_AddAttachment