Enhanced Framework - Is it Complete?

I am trying to implement a working process using Enhanced REFramework.

Is the enhanced framework complete in all respects ?

I could not figure out where is transaction numbers are incremented If we get local data as transactions.

I could not see any full fledged documentation also about the new framework except some high level UML diagrams.


Hey @narayanm

It works really well. The increment of the transactions is cleverly placed within the transitions for success and business exception, very elegant.

To get there, go to Process Transaction State. Then scroll all the way down and click this:

What you will see is is this:


Hi Maciej,

Thanks a lot for your reply. I also figured that out.


Where can i download the official Enhanced ReFramework template?

See here


May i know what is difference between REFramework and Enhanced REFramework…?

and when Enhanced REFrameworks suites.
if you can explain with one example it will be very help ful.
Please dont mind if i am asking basic things.

Hi @venkat4u

Not at all a basic question, as those frameworks require some more advanced knowledge about UiPath and how it operates.

To put it simply, both frameworks are meant to be used for robust business solutions. They can recover from errors and gracefully handle your process.

ReFramework is the first iteration of this solution and the Enhanced version is a newer version with more features.

The decision which one to use is completely up to you and the only real difference is probably the fact that the Enhanced framework is more complicated but much more robust and flexible.


hi loginerror,

Thanks for your reply.
i am familiar with REFrame work and its really helpful in many cases. Thats why when i saw Enhanced version i excited to use but since lack of knowledge how to use i am looking in forum.
can you please provide me the documentation with some example or like any video tutorial…

I don’t think it is officially supported yet, so the documentation is not yet complete. You can check the github page that has the structure of it broken down in few PDF files:

Other than that, if you have the knowledge of the ReFramework, it should not be complicated any more to you :slight_smile: It is enough to ‘read’ it from top to bottom and follow all the activities. It is mostly the same, with few small but crucial improvements here and there (such as retry of the Init on exception).

thanks for link.
I have downloaded and gone through the documentation which is available.
Even i gone through the documentation i still did not understood about the FrameWork.
The tricky part is in what is process layer and service layer, and in service layer again they have modules like First Run, Get Data, Task1, Task2 (which are again same as main .xaml)

i think i need more details. what is Task 1, Task 2 , Get data etc…

Indeed, there is some trickiness involved. However, the very basic core and functionality is the same. In fact, if you look into the config file, most of the extra features are not even used by default and are there when you need them and want to use them.

For example, the first run service is perfect to load the items to a queue once at the start of your process.

The Reusable components can be placed in service layer.

As Maciej mentioned, thie enahanced framework will be more usful for automating complex processes.

For simple process, the Reframework will suffice.

Depends on how you define “complex”, and also depends on if you integrate the Queues.

A typical “complex” automated process would perform over 3 various tasks per process item. And, if any one of the tasks enters a retry attempt due to an exception, then ideally you would want the process to continue where it left off when it enters the Process state again.

If you don’t integrate the Queues, then you would also need to store each item index so it can skip to that item when it enters the Process state again after a retry attempt. If you do use the Queues (which I’m still learning), then in theory it should be able to process the items without that extra logic, however, I am still unsure how well the Queues actually work considering how much a process needs to update files (you can’t update files in use) — it’s still something I want to play around with and learn more about, but to be honest, there’s little difference in each process using all robots vs each process using the Queues and waiting for availability of robots.

Now, I did briefly look over the Enhanced a while back and set it aside because of how complicated the structure and naming were; it was hard to understand right away even though I understand how State Machines work. I showed it to my colleague who doesn’t know programming that well, then I showed her a variation of a Framework I had created and been working with, and she said she’ll use mine cause it was more visually pleasing with a simpler folder structure; she could basically place in each workflow module that completes each task of an item, and it is ready to go right away.

I actually do like many ideas that were put in Enhanced, but I think a version that’s easier on the eyes, simple to implement a project into, and versatile toward various ways to design your project should be more desired. For example, simply placing a Process.xaml workflow into the Process state will not work, because of the complexity of performing many tasks per item, and if you don’t use the Queues, then you get an even bigger mess if no logic is in place to skip already processed items.

So sorry for the lengthy reply.

I’m definitely going to revisit the Reframework though and see what I can do about some of the ideas I’ve had, cause it seems to be the standard among consultants. Also, “Attended” processes should be considered. All in all, you shouldn’t need a training session to understand the Reframework structure; the structure should speak for itself in my opinion.



I have to agree with you that the framework might not be the cleanest looking one, but it is also not that convoluted. Part of the ‘messiness’ comes from the fact that you cannot ‘lock’ pieces of code that are almost never going to be changed. In the very basic core, it is still the old framework.

Personally, I used this framework to combine 7 separate processes under 1 framework (no queues, because each process took an Excel file as an input). In the end, I had 1 ‘root’ Enhanced Framework that would take an Excel as its input (with a list of 7 tasks to be performed). Then, in the ProcessTransaction of that ‘root’ framework I would have a switch that was designed to execute my specific ‘subEnhanced Framework’. The ‘root’ would read my Excel file, push the name of my first task to the ProcessTransaction.xaml and in there the switch would execute the framework for Task1. Worked really nice :slight_smile:

I guess this would be the use case for the Enhanced Framework. It is possible to have 1 root framework with multiple tasks and then have those tasks be done by nested frameworks.


@loginerror Maybe I’m not understanding correctly, but why wouldn’t this just be 7 separate process? What is the advantage of having 1 process perform 7 different things? It seems like it’d be harder to track and know exactly what is happening

I think we were defining a Process as the collection of tasks performed to return results for the end process owner. It could be, for example, downloading multiple documents, verifying the documents as proof of delivery, merging them, and then storing it in a shared folder or sending it as an attachment to a customer. So, the goal was to be able to execute each thing or task, and if an exception occurs, return back to that specific task for a retry attempt.

In order to accomplish this, you must somehow store the name of the task as it starts in a way that is stored even if an exception occurs, and then also somehow be able to jump straight to that same specific task if it needs to retry it from an exception.

The nested framework idea sounds interesting though. So basically each task would have its own framework to perform retry attempts. But, then I wonder what is the point of the error handling in the main framework, so it’s almost redundant.

1 Like

@ClaytonM Could you please provide an example XAML file regarding the Enhanced ReFramework which you understand so that we can understand better.

Actually I’m trying to understand the framework lot but not able to understand. Thanks

Hi @VasuNaidu
I’m probably the wrong one to ask because I have only briefly looked over the Enhanced version, and it seems quite complicated, unnecessarily.

There is some documentation on how it works if you download the package here:

So check that out in the Documentation folder and maybe it will help you understand.



I have a doubt in Enhanced framework “first run service”. Even if the “first run service” had ran for the first time , when a process starts and suppose if at process transaction state the bot fails with system error then it will again go to Init state and will try executing the first run service right? since the condition remains same,
cint(SystemReserved.Item(“TransactionNumber”))=1 AND CInt(SystemReserved.Item(“RetryNumber”)) = 0 AND CInt(SystemReserved.Item(“InitRetryNumber”))=0 AND cint(Config.Item(“SystemTask1_Enable”))=1

Hi @neethulg

If you return to Init state upon system exception you will arrive there with the Init Retry Number incremented, thus evaluating this condition as false. See here, the value will no longer be equal 0: