Help needed - Project Organisation Best Practices


In our organization, we are using UiPath for a couple of years and we have around 10 processes.
And now we see that the approach in organizing our projects is not ideal so we are looking for advice on how we can improve our setup.

We have:

  1. 10 processes
  2. Most of the processes use the same functions
  3. These reusable functions are saved in a separate folder GenericFunctions
  4. In regular work, a developer opens a Main.xaml and within the same Studio session/window can access all processes and reusable functions.
  5. In order to publish the process - we use a custom script.


  1. This approach allows us to access (read and edit) a particular process and reusable function at the same Studio session.


  1. Requires to use custom script for publishing projects.
  2. Universal search doesn’t work properly with such amount of files.

Does anyone know an option of how to get rid of the Cons without losing the Pros of our approach?

I would recommend using Libraries instead of a shared folder.

This should help with the size of the push to orchestrator. Another thing you can do is to change the structure of this and put all of the processes in one folder like in the picture I sent. As an input to main you can add the process id so it knows which process to run.

@blathursby once xamls are converted to Library then you can’t edit them within the same Studio session with Process. because xaml is now an Activity

i didnt quite get the second approach. could you pls elaborate

You are right @VRish. You would have to edit them in the library project and then push the changes and finally update the package in studio. This is the trade off for having clean, and scalable code.

As far as the second part goes… imagine you have 10 processes in your process folder. Each with a different name. For now they are called 1, 2, 3, etc. Now you can have an input argument into main telling it which one of those processes to run. If you want the process in folder 1 to run, you input 1 as an argument to main.