Hi community,

 

I have the following situation :

 

 

From the "ENCOWAY SESSION" button, I want to override the onClick() method from it to automatically start a business process from there. How can I do this ?

 

 

Furthermore, my business process should take the object id (e.g. opportunity id) corresponding to the id of the record where the button is and set it as a request parameter of a webservice.

 

Then, I want to open the response paramter, which is an URL, in a new window. The Script Task is in C#, so I want to have a similar method as window.open("URL") in Javascript. The "URL" should be the response parameter of the API.

 

Do you have any idea on how to achieve this ?

 

Here is a business process model summary of what I want :

 

 

Many thanks,

Jonathan

Like 0

Like

2 comments
Best reply

Hi Jonathan,

I have an article on that topic with the code you'll need to start the process and pass the current record Id into a process parameter here: https://customerfx.com/article/programmatically-starting-a-process-from…

However, as far as opening a new window, you can't do that from a server-side process. Instead, you can send a value, such as a URL string, from the server-side process to the client-side code, then the client-side code could open the window. I have an article on that topic here https://customerfx.com/article/sending-a-message-from-server-side-c-to-…

Ryan

Hi Jonathan,

I have an article on that topic with the code you'll need to start the process and pass the current record Id into a process parameter here: https://customerfx.com/article/programmatically-starting-a-process-from…

However, as far as opening a new window, you can't do that from a server-side process. Instead, you can send a value, such as a URL string, from the server-side process to the client-side code, then the client-side code could open the window. I have an article on that topic here https://customerfx.com/article/sending-a-message-from-server-side-c-to-…

Ryan

Dear Ryan Farley,

 

Your answer was really perfect. I managed to implement the whole process. Your articles are very pertinent. 

 

Many many thanks,

Jonathan

Show all comments

Hi All,

 

How to get the Page parameter value defined in a Pre-Configured page. I have tried to get that value(lookupfield value) using the usual way of get method but it returned undefined though there was value to it.

this.get(param).value;

 

Is there any other way to retrieve the page parameter value?

 

Thanks

Anupama

Like 0

Like

2 comments

Hi Anupama,

 

I've created a simple page where the value for the lookup column is filled in by the process before opening this pre-configured page:

After that the code of the pre-configured page should be modified a little:

methods: {
			onEntityInitialized: function(){
				this.callParent(arguments);
				var resultString = this.get("UsrTestStringField");
				var resultLookup = this.get("UsrTestLookupField");
			}
		},

As a result once the page is opened the onEntityInitialized is triggered and values from the fields displayed on the pre-configured page are read:

and

So you can use the following approach on your end.

 

Best regards,

Oscar

Thanks Oscar Dylan for the details. 

Show all comments

Hi Team,



We have explored the age calculation functionality on ContactSectionV2 base schema.

we would like to know the same functionality in previous versions (7.15) and how does that calculation process is happening.



In 7.18,





I have the below items explored

System Setting Value

1.RunAgeActualizationDaily

2.ActualizeAge



Business Process

1.ContactActualizeAgeProcess

2.ContactAgeActualizationRunnerProcess

3.ContactAgeActualizationJobRestartProcess



Methods in ContactSectionV2 Schema

1.runRescheduleAgeActualization

2.runActualizeAgeProcess



But in the earlier version (7.15) I don't have any of the items mentioned above and would like to know how does the functionality works (When a "Date Of Birth" field is filled or modified "Age" field is calculated).





Thanks in advance!









Regards,

Bhoobalan P.

Like 0

Like

5 comments

Hello

 

This functionality remains in 7.18. The processes are there  with system settings as well as methods in ContactSectionV2 of the UIv2 package

If these all are missing in your environment - please contact the support via support@creatio.com to investigate it since this functionality should be avaiable.

 

Regards,

Dean

dean parrett,



Thanks for the response!



Yes, I can see this functionality in 7.18.

But in 7.15 version I could not see any of these functionalities, BP and system setting also.



I would like to know how this is executed in 7.15 version?





Regards,

Bhoobalan P.

Hello!

My apologies for confusion. It depends on your 7.15 subversion. The age calculations feature is available starting from 7.15.3.1649. There were no age field with automatic calculations before that version. All items that numerated above are there starting from 7.15.3.1649

 

Regards,

Dean

dean parrett,



Thanks much for the clarification!



Also, I have 7.15.0.634 version, but I can see the "age calculation" happening whenever I changed the Birth Date field value. Can we have any control over it?

dean parrett,



Also, I have 7.15.0.634 version, but I can see the "age calculation" happening whenever I changed the Birth Date field value. Can we have any control over it?



Any idea / suggestion on this?



Thanks in advance!

Show all comments

I have the add-in loaded, Calculation of working days in business processes.

Trying to use the "Add Business Days" user task.

Calendar is set, number of days is set, start date is set, end date is empty.  When processing, it throws an error:

 

Npgsql.PostgresException (0x80004005): 42883: operator does not exist: boolean = integer

   at Npgsql.NpgsqlConnector.d__157.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Npgsql.NpgsqlConnector.d__156.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at Npgsql.NpgsqlConnector.d__156.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Npgsql.NpgsqlConnector.d__163`1.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at Npgsql.NpgsqlDataReader.d__32.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Npgsql.NpgsqlDataReader.NextResult()

   at Npgsql.NpgsqlCommand.d__71.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Npgsql.NpgsqlCommand.d__92.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Npgsql.NpgsqlCommand.ExecuteDbDataReader(CommandBehavior behavior)

   at Polly.Policy.<>c__DisplayClass119_0`1.b__0(Context ctx, CancellationToken ct)

   at Polly.Policy.<>c__DisplayClass129_0`1.b__0(Context ctx, CancellationToken ct)

   at Polly.Policy.<>c__DisplayClass103_0.b__1(Context ctx, CancellationToken ct)

   at Polly.NoOp.NoOpEngine.Implementation[TResult](Func`3 action, Context context, CancellationToken cancellationToken)

   at Polly.Policy.<>c.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.Core.DB.DBExecutor.FailoverExecuteReader(DbCommand command, Func`1 func)

   at Terrasoft.Core.DB.DBExecutor.d__88`1.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Terrasoft.Core.DB.DBExecutor.ExecuteCommand[TResult](Func`2 commandExecutionCallback, String sqlText, QueryParameterCollection queryParameters, CancellationToken cancellationToken)

   at Terrasoft.Core.DB.DBExecutor.InternalExecuteReader(String sqlText, QueryParameterCollection queryParameters, CommandBehavior behavior, CancellationToken cancellationToken)

   at Terrasoft.DB.PostgreSql.PostgreSqlExecutor.<>c__DisplayClass41_0.b__0()

   at Terrasoft.DB.PostgreSql.PostgreSqlExecutor.ExecuteInLockIfInTransaction[TResult](Func`1 action)

   at Terrasoft.DB.PostgreSql.PostgreSqlExecutor.InternalExecuteReader(String sqlText, QueryParameterCollection queryParameters, CommandBehavior behavior, CancellationToken cancellationToken)

   at Terrasoft.Core.DB.DBExecutor.InternalExecuteReader(String sqlText, QueryParameterCollection queryParameters)

   at Terrasoft.Core.DB.Select.d__54.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Terrasoft.Core.DB.Select.ExecuteReader(DBExecutor dbExecutor)

   at Terrasoft.Configuration.GlbCalendarServiceUtils.GetWeekEnds()

   at Terrasoft.Configuration.GlbCalendarServiceUtils.AddWorkingDays(DateTime date, Int32 days, Guid incomingCalendarId)

   at Terrasoft.Core.Process.Configuration.GlbAddBusinessDays.InternalExecute(ProcessExecutingContext context)

   at Terrasoft.Core.Process.ProcessActivity.ExecuteElement(ProcessExecutingContext context)

   at Terrasoft.Core.Process.ProcessActivity.ExecuteItem(ProcessExecutingContext context)

   at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

Like 0

Like

2 comments

Hello Chris,

 

Could you please double-check if you executed the script from the instruction on the Creatio deployment procedure, step 8?

https://academy.creatio.com/docs/user/setup_and_administration/on-site_…

The script name is CreateTypeCastsPostgreSql.sql file

 

Best regards,

Bogdan S.

Bogdan, thanks, but this is a creatio-hosted site.  I can run the script there via the sql console if that will work.

 

Show all comments

Hello,

 

I am trying to implement a web-service integration that provides a collection of fields as a response, and adding it to an auto-generated page to show the results. Can someone guide me how I can implement this functionality to grab fields from a collection and show them as separate individual fields?

Like 1

Like

2 comments

I think it depends. If the quantity of fields you need is static and will not change, you can just read individual values and point them to specific fields. If it is a variable, its more complex. 

I am limited in coding, so I would do this as a detail rather than fields. You would have to code something special, I think, to get a variable quantity of fields to display. But with a detail, it will scale with the number of records you want to show. You can also change the detail to an "Editable Detail" if you want the user to edit the values inline. You can either have the detail show the actual records for direct editing, or you can setup a sort of temporary object for the detail that you read and write to that then you can use later.

Hi Reid,

 

Thank you for your answer. I do get your point and even I was thinking along the same lines.

The issue that I am facing right now, is when I'm trying to call a web-service in the business process, using the "Call web-service" element, the response of that web-service is a collection of objects, and any element (Auto-generated Page/Pre-configured page/etc) that I add after this web-service element, does not take that collection of objects at all. It only takes the "Response body" as the value. And when I map the individual values somehow, they do not reflect the results as desired, because they can't just pick one value out of a collection of values randomly, and hence the fields show blank in the result.

So I'm just trying to figure out if this out-of-the-box functionality works only for individual fields or for collection of objects also. 

Show all comments

I added an "Open Edit Page" element to my process. When I got to select which page, the one I am looking for is not an option. I want to open an edit page for my custom section, Change Orders. I have tried having the current package set to Custom, and I've set the current package to my Custom package with the schema I want to use. But I cannot get it to show up in this menu. Can anyone advise what makes certain pages available for this process element?

 

Like 0

Like

3 comments

Hello Mitch,

 

It seems that you have added custom section by development tools, but not via out-of-the-box tools like Section Wizard. For example, I have created new section via standard tools and was able to choose custom section in the process settings:

 

unfortunately, at the moment there is no possibility to choose the Section/Page implemented by development in the Open Edit Page business process element. You can find more information about Open edit page element in the following link:

https://academy.creatio.com/documents/technic-bpms/7-16/open-edit-page-process-element

 

As a workaround we suggest try to use Pre-configured page element and set code of the edit page created using section designer in "Source code" of pre-configured page settings:

 

 

More detailed information about Pre-configured page element in the next link:

https://academy.creatio.com/documents/technic-bpms/7-16/pre-configured-page-process-element

 

Best regards,

Roman

Roman Rak,

Is there a way to get the edit page to automatically open for the user instead of the user needing to click on the business process task?

 

Dear Mitch,

 

Please double check the signal element. Most likely it has active "Run the following element in the background" checkbox. It sets the whole process to the background and that's why the page is not getting opened automatically.

Apart from that, please disable the debug mode. It can influence the proper page loading.

 

Regards,

Dean

Show all comments

Hi

 

One of the annoyances of the case modified date is that it does not get updated if someone was to send an email on the case. This is to allow us to have accurate vision of when the last activity was on each case, so we can confirm that cases are updated regularly i.e. at least in last 48 hours.

 

I understand that a Process could be created which will do the following:

  1. Trigger - Email sent related to a support case
  2. Update the Last Modified date time for the same time that email was sent

I am not sure what the Trigger signal should look like to achieve this function, so would be thankful for any guidance.

 

thanks

Mark

Like 0

Like

1 comments

Hello Mark,

 

For your goal you can use next trigger signal:

 

 

This start signal will be triggered by any email realted to the existing case (in our example it will work for incoming and ourgoing emails, but you can change it by selecting the needed value for Message type).

If you want to tigger new cases (which were just created by incoming emails) you need to choose 'Record added' option for "Which event should trigger the signal" fieild.

 

Best regards,

Roman

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'm using Orders and Order Items section with a 1:N relationship. On the Order Item I maintain a re-order date for that specific item. When the Current Date equals the Re-Order Date I want to send emails to customers for all the records where this condition applies.

The email should contain Order Item details but also information from the Parent Order, the associated Account and the Contact associated with the Order.

Below is the workflow as I have it so far. I'm unsure how to read the associated data from the Orders, Account and Contacts related to the initial collection of records of Order Items and then how to use all of it to send one email per Order to the Primary Email of the Account and Cc to the contact on the Order. The email body should include the Product Name from Order Item, Order Number and Date. 

Thanks for your help.

 

 

 

 

 

  

 

 

Like 0

Like

2 comments

Unfortunately, it's not possible to send an email to a collection of users in a business process. The functionality is planned by the bpm'online development team.

Ad for now, please try to check the marketing campaigns and trigger mass mailings functionality. It might help.

https://academy.bpmonline.com/documents/marketing/7-15/campaigns-section#HT_section_campaigns

https://academy.bpmonline.com/documents/marketing/7-15/email-section#HT_section_email

One option I just made use of is Tags.  You can read an object, with or without a tag, then either send the email or tag the object and send the email, then delete the tag and cycle around, or just cycle around.

Let's say you have not tagged anything yet:

1. Read the first item from an object where a tag does not exist, and it meets your other filter criteria.  The Tag needs to exist as an option, so you would need to manually create the tag, or tag a record once (so the tag exists) and untag it.

2. XOR condition that the ID from step 1 is !=Guid.Empty.  Default flow is to end or go somewhere else.

3. Tag that record (insert a section record tag, for example Contact Section Record Tag).  This will denote that the object has the tag and will not be read again in step 1.

4. Send the email.

(You could probably switch steps 3 and 4 as desired)

5. Cycle back around to step 1 and read the next item where the tag does not exist.

OR you can do the opposite, where in step 1 you are searching for records that are already tagged, then you later delete the tag before cycling back around to search again.

Hope this helps!

Chris

 

Show all comments

Hi everyone,

I'm facing a problem in the business process , when I try to save the business process element , the following message appears: ' Error occurred when saving : Collection item  with unique identifier not found '

Like 0

Like

0 comments
Show all comments