IP Library › Granted Patent US 12,314,748
Granted Patent B2
US 12,314,748 · App. 17/247,669 · Granted May 27, 2025

Dynamic cloud deployment of robotic process automation (RPA) robots

Inventors: Tao Ma (Bellevue, WA); Tarek Madkour (Sammamish, WA); Remus Rusanu (Bucharest, RO); Clement B Fauchere (Sammamish, WA)
Assignee: UiPath Inc.
G06F9/45558G05B2219/50391
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,314,748
App. No.
17/247,669
Granted
May 27, 2025
Kind
B2
Abstract

In some embodiments, an automation optimizer is configured to determine whether a provisioning condition is satisfied, for instance according to a current length of a job queue, or according to a current workload of a selected RPA host platform executing a plurality of software robots. When to the provisioning condition is satisfied, some embodiments automatically provision additional VMs onto the respective RPA host platform, and automatically remove VMs when automation demand is low. Exemplary RPA hosts include cloud computing platforms and on-premises servers, among others.

Claims (45)

1. A robotic process automation (RPA) method comprising employing at least one hardware processor of a computer system to optimize RPA operations on a host platform having a plurality of RPA robots instantiated thereon for executing RPA jobs, the plurality of RPA robots organized into a plurality of robot pools, and wherein optimizing RPA operations comprises:

determine whether a provisioning condition is satisfied according to a queue of RPA jobs, whether a selected job of the queue comprises an identifier of a selected robot pool of the plurality of robot pools;

in response, when the provisioning condition is satisfied, initiating an automatic instantiation of a new RPA robot on the host platform, wherein instantiating the new RPA robot comprises provisioning a virtual machine (VM) by loading a VM template onto the host platform, the VM template selected from a template repository according to the selected job, wherein the VM template comprises a memory image of the VM pre-loaded with the new RPA robot and an instance of a target software application;

in response to the instantiation of the new RPA robot, adding the new RPA robot to the selected robot pool; and

assigning the selected job to the new RPA robot for execution;

wherein the plurality of RPA robots executing on the host platform are divided among a plurality of VMs, the plurality of VMs further organized into a plurality of VM pools;

wherein at least one robot pool spans multiple VMs such that at least one VM includes at least one robot assigned to the at least one robot pool and at least one robot not assigned to the at least one robot pool;

wherein the selected job further comprises an identifier of the selected VM pool of the plurality of VM pools; and

wherein the method further comprises employing the at least one hardware processor to, in response to provisioning the VM, adding the VM to the selected pool.

2. The method of claim 1 , wherein optimizing RPA operations further comprises employing the at least one hardware processor to look up a customer record of an owner of the selected job and determine whether the provisioning condition is satisfied according to whether the customer record allows instantiating the new RPA robot.

3. The method of claim 1 , comprising employing the at least one hardware processor to determine whether the provisioning condition is satisfied according to a count of RPA robots within the pool.

4. The method of claim 3 , comprising employing the at least one hardware processor to determine whether the provisioning condition is satisfied further according to a maximum allowable count of RPA robots within the selected robot pool.

5. The method of claim 1 , comprising employing the at least one hardware processor to determine whether the provisioning condition is satisfied further according to whether a current time is during nighttime.

6. The method of claim 1 , wherein the plurality of RPA robots are organized into robot pools according to a type of automation task executable by members of each robot pool.

7. The method of claim 1 , comprising employing the at least one hardware processor to determine whether the provisioning condition is satisfied further according to a current calendar date.

8. The method of claim 1 , wherein:

provisioning the VM causes an instantiation of another RPA robot executing within the VM; and

optimizing RPA operations further comprises employing the at least one hardware processor to, in response to provisioning the VM, add the another RPA robot to the selected robot pool.

9. A computer system comprising at least one hardware processor configured to optimize RPA operations on a host platform having a plurality of RPA robots instantiated thereon for executing RPA jobs, the plurality of RPA robots organized into a plurality of robot pools, and wherein optimizing RPA operations comprises:

determining whether a provisioning condition is satisfied according to a queue of RPA jobs, whether a selected job of the queue comprises an identifier of a selected robot pool of the plurality of robot pools;

in response, when the provisioning condition is satisfied, initiating an automatic instantiation of a new RPA robot on the host platform, wherein instantiating the new RPA robot comprises provisioning a virtual machine (VM) by loading a VM template onto the host platform, the VM template selected from a template repository according to the selected job, wherein the VM template comprises a memory image of the VM pre-loaded with the new RPA robot and an instance of a target software application;

in response to the instantiation of the new RPA robot, adding the new RPA robot to the selected robot pool; and

assigning the selected job to the new RPA robot for execution;

wherein the plurality of RPA robots executing on the host platform are divided among a plurality of VMs, the plurality of VMs further organized into a plurality of VM pools;

wherein at least one robot pool spans multiple VMs such that at least one VM includes at least one robot assigned to the at least one robot pool and at least one robot not assigned to the at least one robot pool;

wherein the selected job further comprises an identifier of the selected VM pool of the plurality of VM pools; and

wherein the method further comprises employing the at least one hardware processor to, in response to provisioning the VM, adding the VM to the selected VM pool.

10. The computer system of claim 9 , wherein optimizing RPA operations comprises employing the at least one hardware processor to look up a customer record of an owner of the selected job and determine whether the provisioning condition is satisfied according to whether the customer record allows instantiating the new RPA robot.

11. The computer system of claim 9 , wherein the at least one hardware processor is further configured to determine whether the provisioning condition is satisfied according to a count of RPA robots within the pool.

12. The computer system of claim 11 , wherein the at least one hardware processor is configured to determine whether the provisioning condition is satisfied further according to a maximum allowable count of RPA robots within the selected robot pool.

13. The computer system of claim 9 , wherein the at least one hardware processor is further configured to determine whether the provisioning condition is satisfied further according to whether a current time is during nighttime.

14. The computer system of claim 9 , wherein the plurality of RPA robots are organized into robot pools according to a type of automation task executable by members of each robot pool.

15. The computer system of claim 9 , wherein the at least one hardware processor is configured to determine whether the provisioning condition is satisfied further according to a current calendar data.

16. The computer system of claim 9 , wherein:

provisioning the VM causes an instantiation of another RPA robot executing within the VM; and

optimizing RPA operations comprises employing the at least one hardware processor to, in response to provisioning the VM, add the another RPA robot to the selected robot pool.

17. A non-transitory computer-readable medium storing instructions which, when executed by at least one hardware processor of a computer system, cause the computer system to optimize RPA operations on a host platform having a plurality of RPA robots instantiated thereon for executing RPA jobs, the plurality of RPA robots organized into a plurality of robot pools, and wherein optimizing RPA operations comprises:

determining whether a provisioning condition is satisfied according to a queue of RPA jobs, wherein a selected job of the queue comprises an identifier of a selected robot pool of the plurality of robot pools;

in response, when the provisioning condition is satisfied, initiate an automatic instantiation of a new RPA robot on the host platform, wherein instantiating the new RPA robot comprises provisioning a virtual machine (VM) by loading a VM template onto the host platform, the VM template selected from a template repository according to the selected job, wherein the VM template comprises a memory image of the VM pre-loaded with the new RPA robot and an instance of a target software application;

in response to the instantiation of the new RPA robot, adding the new RPA robot to the selected robot pool; and

assigning the selected job to the new RPA robot for execution;

wherein the plurality of RPA robots executing on the host platform are divided among a plurality of VMs, the plurality of VMs further organized into a plurality of VM pools;

wherein at least one robot pool spans multiple VMs such that at least one VM includes at least one robot assigned to the at least one robot pool and at least one robot not assigned to the at least one robot pool;

wherein the selected job further comprises an identifier of the selected VM pool of the plurality of VM pools; and

wherein the method further comprises employing the at least one hardware processor to, in response to provisioning the VM, adding the VM to the selected VM pool.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 28, 2021
From: MA, TAO; MADKOUR, TAREK; RUSANU, REMUS; FAUCHERE, CLEMENT B.
To: UIPATH INC.
Reel/Frame 055063/0777 →
Continuity (1)
Related Publication 20220197249A1 · Jun 23, 2022
References Cited (58)
US 7861252B2 · Uszok et al. · 2010 [cited by applicant]
US 8793684B2 · Breitgand et al. · 2014 [cited by applicant]
US 9876676B1 · Sandham · 2018 [cited by applicant]
US 10042657B1 · Lauinger · 2018 [cited by applicant]
US 10248445B2 · Khandekar et al. · 2019 [cited by applicant]
US 10264058B1 · Lauinger · 2019 [cited by applicant]
US 10564946B1 · Wagner · 2020 [cited by examiner]
US 10860905B1 · Gligan · 2020 [cited by applicant]
US 10931741B1 · Liguori · 2021 [cited by examiner]
US 11032164B1 · Rothschild · 2021 [cited by examiner]
US 11354164B1 · Dennis · 2022 [cited by examiner]
US 20050246353A1 · Ezer · 2005 [cited by examiner]
US 20100153482A1 · Kim · 2010 [cited by applicant]
US 20100299366A1 · Stienhans et al. · 2010 [cited by applicant]
US 20120260118A1 · Jiang · 2012 [cited by examiner]
US 20120266168A1 · Spivak · 2012 [cited by examiner]
US 20150081885A1 · Thomas et al. · 2015 [cited by applicant]
US 20160294643A1 · Kim · 2016 [cited by applicant]
US 20170199770A1 · Peteva et al. · 2017 [cited by applicant]
US 20180089698A1 · Campana et al. · 2018 [cited by applicant]
US 20180096284A1 · Stets · 2018 [cited by examiner]
US 20180189093A1 · Agarwal et al. · 2018 [cited by applicant]
US 20180203994A1 · Shukla et al. · 2018 [cited by applicant]
US 20180341527A1 · Ikkaku et al. · 2018 [cited by applicant]
US 20190155225A1 · Kothandaraman et al. · 2019 [cited by applicant]
US 20190286474A1 · Sturtivant · 2019 [cited by examiner]
US 20190303779A1 · Van Briggle et al. · 2019 [cited by applicant]
US 20200151650A1 · Rhodes · 2020 [cited by examiner]
US 20200341852A1 · Chopra · 2020 [cited by examiner]
US 20200348964A1 · Anand · 2020 [cited by examiner]
US 20200364083A1 · Walby · 2020 [cited by examiner]
US 20210073034A1 · Bliesner · 2021 [cited by examiner]
US 20220300336A1 · Major · 2022 [cited by examiner]
CN 109636504A · 2019 [cited by applicant]
JP 2018176387A · 2018 [cited by applicant]
JP 2019074889A · 2019 [cited by applicant]
Automation Edge, “Introducing Automation Edge RPA on Cloud,” downloaded from https://web.archive.org/web/20190703134925/https://automationedge.com/product/rpa-on-cloud/, Jul. 3, 2019. [cited by applicant]
Automation Edge, “Automation Edge Industry's First RPA on Cloud Solution,” screenshots from video posted on https://www.youtube.com/watch?v=u_d2SXf2Mjl&feature=emb_logo, Jul. 18, 2019. [cited by applicant]
Zullo et a., “Robotics (RPA) as a Service,” downloaded from https://www.eisneramper.com/newsletters/prts-intelligence/robotics-rpa-cloud-computing-PRTS-0619/, Jun. 11, 2019. [cited by applicant]
Lateetud, “RPA as a Service,” downloaded from https://www.lateetud.com/insight-details/rpa-as-a-service-, Jul. 25, 2019. [cited by applicant]
Thoughtonomy, “A Virtual Workforce in One Intelligent Automation Product,” downloaded from https://thoughtonomy.com/intelligent-automation[Dec. 10, 2019 3:53:17 PM], Dec. 10, 2019. [cited by applicant]
digitalexchange.blueprism.com,“Blue Prism Azure Trial”, https://digitalexchange.blueprism.com/dx/entry/3439/solution/blue-prism-on-azure-marketplace, downloaded on Apr. 16, 2020. [cited by applicant]
quali.com, “CloudShell Pro Overview,” https://info.quali.com/hubfs/CloudShell%20Pro%20Datasheet.pdf, downloaded on Apr. 16, 2020. [cited by applicant]
quali.com, “Quali Joins Google Cloud Partnership Ecosystem,” downloaded from https://www.prweb.com/releases/quali_joins_google_cloud_partnership_ecosystem/prweb16749139.htm, Austin, TX, USA, Dec. 10, 2019. [cited by applicant]
virsoft.net, “Virsoft Solution Demo as a Service”, screenshots from video posted on https://www.youtube.com/watch?v=ISfwkgKQ974, Aug. 30, 2012. [cited by applicant]
virsoft.net, “Demo as a Service,” https://virsoft.sharepoint.com/Documents/Virsoft%20Datasheet%20for%20web.pdf, downloaded on Apr. 16, 2020. [cited by applicant]
Korean Intellectual Property Office, International Search Report and Written Opinion for International Application No. PCT/US2020/049300 mailed Dec. 22, 2020, international filing date Sep. 4, 2020, priority date Dec. 2… [cited by applicant]
USPTO, Office Action mailed Jun. 14, 2021 for U.S. Appl. No. 16/725,706, filed Dec. 23, 2019. [cited by applicant]
USPTO, Office Action mailed Apr. 12, 2021 for U.S. Appl. No. 16/725,706, filed Dec. 23, 2019. [cited by applicant]
European Patent Office (EPO), Supplementary European Search Report Mailed Feb. 4, 2022 for EPO Application No. EP 20808274.3. [cited by applicant]
Anonymous, “Robotic Process Automation (RPA): Cloud vs. On-Premises,” https://digitalworkforce.com/rpa-news/robotic-process-automation-cloud-vs-premises, Aug. 14, 2019. [cited by applicant]
Anonymous, “Scaling RPA—Best Technological Practices to Scale RPA,” https://digitalworkforce.com/rpa-news/scaling-rpa-best-technological-practices-to-scale-enterprise-robotic-process-automation, Aug. 20, 2019. [cited by applicant]
USPTO, Office Action mailed Feb. 14, 2023 for U.S. Appl. No. 17/655,177, filed Mar. 17, 2022. [cited by applicant]
European Patent Office (EPO), European Search Report Mailed May 6, 2022 for EPO Application No. EP 21215084.1-1203. [cited by applicant]
USPTO, Office Action mailed Aug. 20, 2021 for U.S. Appl. No. 16/725,706, filed Dec. 23, 2019. [cited by applicant]
USPTO, Office Action mailed May 17, 2024 for U.S. Appl. No. 17/643,741, filed Dec. 10, 2021. [cited by applicant]
Japan Patent Office (JPO), Office Action mailed Sep. 18, 2024 for Japan Patent Application No. 2020-564879, filed Sep. 25, 2020. [cited by applicant]
USPTO, Notice of Allowance mailed Aug. 28, 2024 for U.S. Appl. No. 17/643,741, filed Dec. 10, 2021. [cited by applicant]
Cited By (3)
US 12,602,032 US 12,645,213 US 12,650,686