How can I create active passive fail over for robot vdi


Is there anyway we can setup active passive fail-over in uipath for production robot machine?
Lets say Robot is scheduled to run at 10 PM on machine A which is active machine but went down then machine B should pick up that scheduled task.


Hi @Oracle.alok,

When you create a schedule you can set which robots can run the process according to their availability.

So you could have two Robots, one for Machine A and the other one to Machine B.

It means that even though both machines are available, sometimes machine A would be chosen to run the process and sometimes machine B.

But when one of them is not available, the other will execute the process (if available).

Would that solve your situation or do you just want to have a robot due to license reasons?

In the scenario you have to handle this situation only with one Robot, maybe floating robots can help you.

Hello Dear,

Thanks for your reply!!

My requirements is bot1 will always run on machine A and if machine A not available then it will go for machine B.

Please suggest

Hi @Oracle.alok,

Got it… I’m not sure if it’s possible using only one Robot.

Using two Robots it would be possible to run on machine A. And only run on machine B when machine A is unavailable. But, as I understood it is not what you want.

We can use two robots so please tell me options for 2 robots

Hi @Oracle.alok,

Ok, I thought the following workaround…

  1. Create your two Robots.
  2. Create a schedule to run your process at 10 PM (Robot A which is related to machine A)
  3. Create a schedule to run the same process at 10:05 PM (Robot B which is related to machine B)
  4. Create a string Asset in Orchestrator. It will store the last execution of your process.
  5. Modify your automation…

a) At the very beginning of automation you will use a Get Asset activity to read your new Asset value.
b) Convert it to DateTime
c) Use an if activity to check if it’s equal to today
d) If it is not, use a set Asset activity to assign new value to the Asset (DateTime.Today.toString). Also, the process will follow the remaining steps
e) If it is equal to today, you don’t do anything. And also, it doesn’t follow the remaining steps.

How does it work?

At 10 PM Robot A will try to run the process. If machine is available it will run and set last execution date.
At 10:05 (example), Robot B will try to run the process, but it checks last execution date is equal to today, so it doesn’t do anything else.

Now, thinking the other scenario where Robot A is unavailable at 10 PM. At 10:05 PM, Robot B will run and check if there was an execution today. In this case, as today’s date has not yet been assigned to Asset, execution will proceed as normal.

Let me know if it helps you.

Awesome :+1:, thank you so much
This will resolve the issue

Hi @Oracle.alok,

Glad it helped you.

Just be careful if the robot fails, and you have to run again. Because the asset will already have the last execution date as today.

Kindly mark my last answer as the solution.

Cheers :slight_smile: