I am trying to implement the currency exchange rate business process as outlined in this article. I have done everything according to the instructions, but for some reason when I run the business process it is not updating the exchange rates correctly.

 

After a lot of trial and error, it appears that somewhere not in my business process it is doing the calculation

1 / exchangeRate

and entering that into the exchange rate instead of just the exchange rate.

 

For example, with the base currency set to euro, the call to the API responded with "AUD":1.646885, but after the business process finishes, the exchange rate says it is 0.60720694 for AUD:

Picture of the relevant business process element:

Is there an explanation as to why this could be happening?

Like 0

Like

2 comments

Hello!

 

The Exchange rate column in the Currency object is virtual, so it is not shown in the Lookup and cannot be edited directly from the Lookup.

The Rate itself is saved in the CurrencyRate table with a link to CurrencyId each time it is changed.



The base stores the inverse of the exchange rate. For example:

Base currency:  EUR

AUD exchange rate: 0.60720694



Which is inconvenient to understand, so a Lookup with a more user-friendly currency display, but converting to a reverse exchange rate, has been developed to support backward compatibility.

This way you can enter the usual exchange rate of EUR = 1.646885 (AUD to EUR) on the interface. And the base will already save 0.60720694 (EUR per 1 AUD).

 

These different types of rate (1.646885 and 0.60720694 ) will determine the formula by which you will then calculate the amounts.:

1) convert it to a familiar rate - 1/0.60720694  = 1.646885.

2) either work already with 0.60720694 , but then the calculation of the amount will be different.



So, the Rate column is virtual, but you can use CurrencyRate (exchange rate) to calculate the exchange rate.

Kyrylo Atamanenko,

 

What is the reasoning behind storing the exchange rates in such a manner? Why isn't this mentioned in any articles?

 

Also, you mention a more user friendly lookup has been developed; is this new lookup implemented in 8.1.5, or is this an upcoming feature?

Show all comments

Hi everyone.

 

I have a bit of situation. I need to cancel one business process in case of triggering the other , but i cannot diactivate it permanently.

 

1st BP: signal if account stage 4 is modified - create and activity to create a prospect.

 

 

But not all users do it properly as it meant to be and sometimes they create a prospect right away and I need that stage added automatically. 

 

BUT if 2d BP (which is signal "prospect is added" then account stage = prospect) triggered, then signal of the 1st BP triggered also and activity will be created all over again.

 

 

therefore, i have a full circle

 

Thanks.

Like 0

Like

1 comments

Hello!

 

Unfortunately we do not have basic functionality, which we could recommend to cancel the business process by another business process. In such cases, it could be developed only by custom script.

Show all comments

Hey, everyone. 
I've been on this for a while now, but I can't figure it out. 

 

I've got this workflow from my print, and it has the following function: 

  • Get the information from a newly created entry on the object "Class"
  • Reading the information from "Class level" (it has the quantity of classes said level needs and what's the starting "Class number" that it must have),
  • Create "classroom" entries based on the "starting date" (it's a property from "Class") and "days of the week with time" (I've made it so that my object "Class" had a boolean for each day and a "time" for each day too ).

 

Does anyone knows how to construct a "Scripted task" (I belive that it is the ONLY way I can make it work) to do that? 

 

 

Business process:

 

Class table information, regarding how I've constructed the Day of the week + hour;

Like 0

Like

2 comments

Hello,

 

There is no need to use a script task here. A simple sub-process call with mass creation of records using the "Add data" element will also work as expected. 

 

If you want to use the code:

https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/back-end-development/data-operations-back-end/orm/examples/manage-the-database-entities

 

See example 6

EntitySchema contactSchema = UserConnection.EntitySchemaManager.GetInstanceByName("Contact");
Entity contactEntity = contactSchema.CreateEntity(UserConnection);
contactEntity.SetDefColumnValues();
contactEntity.SetColumnValue("Name", "User01");
contactEntity.Save();
 

 

The things to change here are the entity name and the column values (and column names).

Hey, Kalymbet! 
Many thanks for the response. 
I'll try it and come back here later today to coment! 

Show all comments

Hi,

Is there a way to get the process log id generated by the current running business process?
I want to know what is the process log id while the business process is running.

Like 0

Like

3 comments
Best reply

I was able to get the instance ID by doing the code below. The return UID here looks to be the same as the SysProcessLog ID used in the Process Log section.

 

string instanceUId = context.Process.InstanceUId;

Hello!

 

Actually, the system runs multiple processes at once. But if you mean "current" from the perspective of process, in this case, process log id, it is just the id of this instance of the process. It represents in SysProcessElements, SysProcessLog, and other objects where you can filter data. To get this id in process, you will need to implement custom logic.

Kyrylo Atamanenko,

 

Can you provide us an example logic? We are meaning to get the current instance ID inside the process itself.

I was able to get the instance ID by doing the code below. The return UID here looks to be the same as the SysProcessLog ID used in the Process Log section.

 

string instanceUId = context.Process.InstanceUId;
Show all comments

Hi guys, 

i've created a business process in which:

- with Status as New, a record is added with Stage as New, Start date as current date, end date is null

- when this record Status is changed, end date of previous record is updated to Current date.

Ex:

A Request no 44 is created at 8 am, so Stage: New, Start date: 8am, End date: Null

then at 9 am the status is modified into Approval, so, there are 2 records

1. Stage as New, Start date as 8 am, end date as 9 am

2. Stage as Approval, Start date as 9 am, end date as Nulll

Can you guys help me with this? Many thanks

Like 0

Like

1 comments

Hi Trang, 

It's not possible to implement such a logic using no-code tools, however, you can do it by implementing an EntityEventListener and implementing an override for the OnSaving() method. 

Then you can access both the new value of the column(in your example Stage) and the old value. That way you can filter and update the value in your "ObjectInStage" object. 

More information on EntityEventListeners here

Such functionality is already implemented for Lead and Case objects, you could try and use them as an example. 

 

Best regards,

Yurii

Show all comments

Hi Community,

 

The goal is to execute a specific process each time another process returns errors on it's logs.

 

To achieve this we found on the community this post (https://community.creatio.com/questions/Notifyuserifbusinessprocessfails), where someone had the same goal. The correct answer for that post, says that we need to "create a view based on the SysProcessLog table and add this newly created object into your business process as a starting signal".

 

After creating the view and adding the new object to the business process as a starting signal, the process still does not run.

 

 

We checked the view and it's being populated correctly. Only the modified/added trigger are not being set.

 

To create the view we used the following guide https://academy.creatio.com/documents/technic-sdk/7-16/localizing-views.

 

Could you please help us understand and solve this issue?

 

Thank you.

 

Best Regards,

Pedro Pinheiro

Like 0

Like

1 comments

Views don't trigger signals. 

I was attempting to do the same and ended up running the process on a timer to continuously check for errors on an interval. It would be great to have either an ootb way to notify someone about process errors or the ability to handle an error condition in the process itself.

Ryan

Show all comments

Hi Community,

 

Is there a way to get the id of the attachment that has been generated through Process file in a business process as illustrated in file attached?

 

The idea is to read the id of this generated report to apply custom access rights.

 

 

Thank you for your help,

Like 0

Like

1 comments

I do wish it would return the ID, however, since it *can* create multiple files for whatever matches the filter conditions it's not always a single ID or file created.

What I typically do is do a read immediately after for attachments on the record, sorted by Created On desc, and also use the Name of the file based on the naming of the printable used. It's not ideal but has worked for me.

Ryan

Show all comments

Hi,

 

I created a Mini Page in the Freedom UI, and I would like to open it with the 'Open edit page' element in a business process, but the mini page is not to be found in the dropdown for 'Which page to open?'. Is it not possible to open a mini page from a process?

 

Thank you in advance!

Like 0

Like

1 comments

Good day,

 

Thank you for your question.

Unfortunately, there is no such functionality for your task currently present in the OOTB application of Creatio.

 

Currently, you can achieve such a thing only by means of development.

 

Thank you.

 

Show all comments

Hi All,

I have recently updated a condition in approval process which is defined in a third party package by a vendor. It is a small change.

But, When I installed my package in Target Environment. My version of the Business Process is not active. The Old version is still seen Active on the process library.

I have checked the hierarchy of Packages, My package has the highest hierarchy.

I have tried by installing a sql script which updates 'IsActiveVersion' property of old version to false and new version to true in 'sysschemaproperty' table. But the issue still persists.

It has been a long time I am facing this issue. Now I am out of Ideas. Please help.

 

Thanks in Advance

 

Like 0

Like

1 comments

Good day,

 

This sounds like support should take a look into this issue.

Feel free to notify us by sending a message - support@creatio.com

 

Thank you.

Show all comments

Hello!



How can we change (remove/disable) some parts of object process?

We need to generate Invoice number in another way (and don't want increment system settings when invoice is just created). But this process is defined in Invoice package.

Do we have any options to change this logic?

Kind regards,

Vladimir

Like 0

Like

4 comments

Good day,

 

Could you elaborate on what exactly you are having trouble with?

You should be able to just delete the unneeded elements by clicking on them and pressing the trashbin icon.

 

Thank you.

Unfortunately, I cannot delete unneeded elements from base packages. This is out-of-box feature that I want to overwrite

Vladimir,

 

Thank you for the explanation.

In that case, you could create a copy (a replacement object or just an export copy) of the Invoices and put it into your own custom package.

 

This will allow you to alter its behavior.

Here are some of the articles on the matter:

https://academy.creatio.com/docs/developer/development_tools/creatio_id…

 

Thank you.

Artem,

But if I make replacement object, it inherites all the process from base packages.

And if I create new object, I need to make all logics from scratch.

Show all comments