Hi,

We are starting to use approvals but there is one thing I can't understand.

I added an approval record through the Send for approval action. I set the approver to a specific user (Alex). But when I log in as a different user (David), I can approve or reject the approval record I created before (by pressing the 3 dots).

I would think the only Alex can approve since he is the approver.

Can anyone explain that to me?

Thanks,

Chani

Like 0

Like

3 comments

If David has Alex's rights (as his manager e.g.) he can approve his approvals

But he is not!

David has just the All Employees role, and he can approve/reject Alex's approvals or other roles too.

Hi Chani,

 

You need to check the table that stores approval records rights. For example if approval was enabled for invoices the table is callled SysInvoiceVisaRight. The query should be the following:

 

SELECT * FROM SysInvoiceVisaRight
WHERE RecordId = ''

RecordId is an Id from the InvoiceVisa table (it stores all visas for all invoices in the system). So the query should be:

SELECT * FROM SysInvoiceVisaRight
WHERE RecordId IN (SELECT Id FROM InvoiceVisa
WHERE InvoiceId = '')

InvoiceId can be retrieved directly from the URL bar of the browser when the Invoice is opened.

 

The user or role is stored in the SysAdminUnitId column of the SysInvoiceVisaRight table. You need to check which users and\or roles are stored in the SysInvoiceVisaRight table analogue for your section. 

 

Also try checking default record permissions for the approvals object for your section in the "Object permissions" section (in System designer).

 

Best regards,

Oscar

Show all comments

Hi Community!

 

I want to add the approval process to the attachments in the contact section, but I can't find a way to enable it. Is this possible somehow?

Thanks and BR,

Robert

Like 0

Like

4 comments

Hi Robert

 

We don't have practical examples of such implementation, but you can try to export the process as a file to attachments, that's seems to be the only way to achieve it. Probably it would be not much convenient to use, but there is no such out-of-the box option in the system.

 

Please share the result if you succeed cause it would be splendid tip for all of us!

 

Thanks!

 

Best Regards, 

 

Bogdan L.

Bogdan Lesyk,

Hi Bogdan,

 

thanks for the answer, but I fear I don't really understand it :)

What process should I export and what is meant by "as a file to attachments"?

 

Thanks,

Robert

Robert Pordes,

 

I mean you can upload the usual file/business process file (*.BPMN), where will be the approval process you wanted to set up. 

 

And user who wants to perform any actions with attachment should open the "Approval file" with some logic you've made. 

 

This file will also be in attachments.

 

That's what I mean and hopefully it's more clear now :)

 

Thanks!

 

Regards, 

 

Bogdan L.

 

 

Bogdan Lesyk,

HI Bogdan,

 

thanks again for the clarification!

However, I simply want to activate the out of the box approval mechanism as it is used in other sections, like the documents.

It looks like this in the section wizard:

I know that Attachments are details, and therefore are not shown in section wizard but detail wizard.

I thought that there is maybe a trick to enable the approval for this detail.

 

Thanks,

Robert

Show all comments

Hello Community,

 

How to make 'Comments on the approve' field mandatory before rejecting an approval?

 

Like 1

Like

4 comments

can try a business rule on the approval object for status = negative , make comments mandatory. not sure if this will work on the prompt!

Hello,

 

You need to create a replacing view model for PreconfiguredApprovalPage and add a code similar to this one:

attributes:{
				"Comment":{
					"dataValueType": this.Terrasoft.DataValueType.TEXT,
					"isRequired": {"bindTo":"isCommentRequired"}
                }
          },
          methods: {
            isCommentRequired: function(){
				if (this.get("Status").displayValue=="Negative"){
				return true;
                } else {
				return false;
                }
            }
          },

In this case when the reject button is clicked the field should be filled in:

Best regards,

Oscar

Hi,

I need same functionality in the freedomUI. What changes need to be done?. I tried with the above code mentioned, but it's not working.

Please let me know if there is any way.



Thanks.

Regards,

Manideep

HI,

Unfortunately, currently, you cannot do this on a new UI.

Show all comments

Hi team,

 

I need to send approval for multiple users at a time . Since there is no OOTB for the features , im running a loop but the problem is once it sends to the first approver , it is not moving to the next stage until its approved or rejected .

 

Kindly provide your inputs on this .

 

Regards,

Sethuraghav N

 

 

File attachments
Like 0

Like

5 comments
Best reply

sethuraghav,

Yes, I was referring to Add element to create Approval entry.

Hi Sethu, 

Couple of questions. Do you need all physics related users to approve? Or Any one from that group need to approve? If the answer is Yes to the second question,  you can create a functional role, being assigned with all these users and send the approval for that role. Every one in the role can be notified and will be able to see approval. But any one can approve it. If it's Yes for the first question, I would suggest instead of using the approval element in the process, create an approval for the record for each of the user in the loop. This way an approval will be created for all the users.

Hi Krishna, Thanks for getting back , the approval need to be sent to a particular set of  Users ,all these users are already in a functional role , based on a filter , i have taken out few users , the approval needs to go to each user on the filter and only they should be able to approve it . 

 

Can you clarify  this point ?  create an approval for the record for each of the user in the loop. This way an approval will be created for all the users. 

 

Do you mean add record option in the business process ?

Hi sethuraghav,

 

There is a possibility to specify a user role as an approver in 7.17.0 version. Please see this screenshot of the test approval created in the "Cases" section DCM that sets the "1-st line support" user role as an approver for the record in case the stage is modified to "Waiting for response":

As a result the role was selected as an approver for the test case record:

So please use the same functionality to achieve the result required.

 

Best regards,

Oscar

sethuraghav,

Yes, I was referring to Add element to create Approval entry.

Thanks Krishna and Oscar

Show all comments

Hi,

I am trying to find the parameter values changed through a process execution which is attached to a case stage.

I have enabled the trace data option in process.

 

But after the process ran, I can't see the traced data in the process log.

Is there anything I am missing to turn off or on?

The process has an approval element. Does it have to do anything with trace data option?

Like 0

Like

2 comments

Hello,

You did everything correct, but the trick here is that trace data cannot be received from "Terminate event". Please view trace data of approval element and check parameter values before this element execution and after this element execution so to get needed data.

Best regards,

Oscar

Thanks Oscar.

Actually the process was typically not accurate for the action that I wanted to perform.

Show all comments

Hi!

I cannot activate approval in customer module. I click on the selection and later go to save and it begins loading, but never finish: https://cl.ly/078b889983ba

Any idea ot what could be the problem?

Thanks in advance!

Like 0

Like

1 comments

Hi!

Have you checked errors in the console? They might store some additional information about this issue. 

Show all comments

Although the Approver for an Approval process element must be a Contact, the documentation only refers to employees and users.  Also, the dropdown list for Approver only contains User, Employee's manager and Role, not Contact.  This is very confusing when trying to set up approvals. Please update the documentation and dropdown list to be consistent with the functionality of the application.

[Approver] – specify the approver user. Approver can be a specific employee, manager of a specific employee, or any employee who is a member of a bpm’online organizational or functional role.
 
If you select “Employee”, specify bpm’online user who is the approver in the [Employee] field.
 
If you select “Employee's manager”, specify bpm’online user whose direct superior is the approver. Direct superior is specified in the [Manager] profile of the employee's record in the [Employees] section.

 

2 comments

Dear Janine,

The approval can only be approved by the user of the system. That is why in Approver dropdown you can choose user(employee) himself, manager of a user(employee) who is also a user and role, which is a group of users. Contacts can not be approvers as contact is not necessarily a user of the system and it's not quite logical to give an option to approve for a non-user as it wouldn't be possible to approve an approval for the Contact who is not a user. That is why Contact is neither in a dropdown list nor in a documentation. 

Best regards, 

Dennis 

Dennis Hudson,

The action only works when a Contact object is used, not a User or Employee.  It may need to be a Contact who is a User, but User doesn't work. Only a Contact can be selected.

Show all comments

What section is Approver expecting passed in the Approval process element?  The documentation below is using Employee and User interchangeably. The Approver field will not accept Manager read from an Employee record using a Read data System action and errors when the manager's User Id read from the System administration object is passed.

[Approver] – specify the approver user. Approver can be a specific employee, manager of a specific employee, or any employee who is a member of a bpm’online organizational or functional role.
 
If you select “Employee”, specify bpm’online user who is the approver in the [Employee] field.
 
If you select “Employee's manager”, specify bpm’online user whose direct superior is the approver. Direct superior is specified in the [Manager] profile of the employee's record in the [Employees] section.
Terrasoft.Common.DbOperationException: The INSERT statement conflicted with the FOREIGN KEY constraint "FKep594q6vK4JwPEgwcbsZ9TIk". The conflict occurred in database "katerra", table "dbo.UsrKaterraContactRoles", column 'Id'.
The statement has been terminated. ---> System.Data.SqlClient.SqlException: The INSERT statement conflicted with the FOREIGN KEY constraint "FKep594q6vK4JwPEgwcbsZ9TIk". The conflict occurred in database "katerra", table "dbo.UsrKaterraContactRoles", column 'Id'.
The statement has been terminated.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Polly.Policy.<>c__DisplayClass119_0`1.<Execute>b__0(Context ctx, CancellationToken ct)
   at Polly.Policy.<>c__DisplayClass129_0`1.<ExecuteInternal>b__0(Context ctx, CancellationToken ct)
   at Polly.Policy.<>c__DisplayClass103_0.<NoOp>b__1(Context ctx, CancellationToken ct)
   at Polly.NoOp.NoOpEngine.Implementation[TResult](Func`3 action, Context context, CancellationToken cancellationToken)
   at Polly.Policy.<>c.<NoOp>b__103_0(Action`2 action, Context context, CancellationToken cancellationToken)
   at Polly.Policy.ExecuteInternal[TResult](Func`3 action, Context context, CancellationToken cancellationToken)
   at Polly.Policy.Execute[TResult](Func`3 action, Context context, CancellationToken cancellationToken)
   at Polly.Policy.Execute[TResult](Func`1 action)
   at Terrasoft.DB.MSSql.MSSqlExecutor.FailoverExecute[TResult](DbCommand command, Func`1 func)
   at Terrasoft.Core.DB.DBExecutor.ExecuteCommand[TResult](Func`2 commandExecutionCallback, String sqlText, QueryParameterCollection queryParameters, CancellationToken cancellationToken)
   at Terrasoft.Core.DB.DBExecutor.Execute(String sqlText, QueryParameterCollection queryParameters)
   at Terrasoft.Core.Entities.Entity.InsertToDB(Boolean skipLookupColumnValues, Boolean validateRequired)
   --- End of inner exception stack trace ---
   at Terrasoft.Core.Entities.Entity.InsertToDB(Boolean skipLookupColumnValues, Boolean validateRequired)
   at Terrasoft.Core.Entities.Entity.InternalSave(Boolean validateRequired, Boolean setColumnDefValue)
   at Terrasoft.Core.Entities.Entity.Save(Boolean validateRequired, Boolean setColumnDefValue)
   at Terrasoft.Core.Process.ProcessEngineImpl.AddProcessListener(Entity entity, Guid processElementUId, String conditionData, String changedColumns, EntityChangeType entityChangeType)
   at Terrasoft.Core.Process.Configuration.ApprovalUserTask.InternalExecute(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessActivity.Execute(ProcessExecutingContext context)

 

Like 0

Like

1 comments

Hello,



It seems that "Approver" is not a section, but a field in "employee" object. This fields should contain the Id of contact instead of id of the system administration object. 

In case you use script task and have difficulties with it, you may try to create a business process and use process elements like "read data" or "modify data" to perform some manipulations with data.



Basically, what I recommend to do is to trigger business process from the c# code. 

https://community.bpmonline.com/questions/calling-business-process-parameters-anonymous-web-service 



Best regards,

Alex

Show all comments

Hi - Is it possible to have the approvers, approve the orders / contracts via bpmonline mobile app? if so, how to set it up? - We are not seeing any references to this in the documentations.

regards,

Ganesh

Like 0

Like

1 comments

Dear Ganesh,

There is no out of the box functionality for approvals in mobile application in the current release. But you can develop your own approvals logic for mobile application taking the existing one (desktop one) as an example. In order to have approvals in mobile application You need to create a similar detail, develop similar functions and distribute the access rights accordingly. 

There are no example or guidelines created yet, but your one can be the first example published!

With best regards,

Oliver WIngston

 

Show all comments

I am currently testing the Demo of BPMonline 7.2 version and can't find how to run the process of Invoice approval. For example, if I want the Head of Sales department to approve the 10% discount for the particular invoice, how can I do that? Is there anything I will have to change in the process template?

File attachments

Like

1 comments

Hi Patricia,

You need to run the 'Send for Approval' Action for the selcted Invoice to run the approval procces. After that, system will ask you to enter the User that should approve the Invoice and the Objective of such approval:

That's it, you won't have to make any changes into the process template.

Show all comments