Over the years, one of the biggest hurdles that I've encountered, is the need to add apps across many SharePoint Online sites. Microsoft hasn't provided a way to do this. Many people have looked into PowerShell, but there just never seemed to be a way to do it. In a recent conversation with one company, they had a need to deploy the Nintex Workflow and Nintex Forms apps, across a 100 sites. That equates to 200 apps to be added, and doing this manually, was going to pose a challenge. It would take a very long time to have someone do this manually.
I put together some process maps around this, to get a better understanding of what the process is, around adding an app to a SharePoint Online.
To get the Personal Bot or Unattended Bot, get more info and the download, at the Nintex Gallery - https://gallery.nintex.com/5eb215e4874b060045e6c2c2/Add%20or%20Update%20Nintex%20Office%20365
Manually Adding Apps
Here is the Human version of this process:
As you can see, not only did I add the steps that are needed to be taken, I've added the systems and the Role of the user that will be performing the steps. You'll also see, that on the right, there is a time measurement. This is an estimate of how much time it takes me on average, to perform each step. As your process maps can get bigger, to get a view of the total time that it takes to complete the process, you can see that in the Cycle Cost.
Since the first step is something you will do for all sites, I didn't include that in the calculation. On average, it takes around 6 mins to add an app to a SharePoint Online site, if done manually.
What makes it easier, is to see what the map looks like.
So if it takes 6 minutes to manually add an app, and you have to add 200 apps, that is 1200 minutes = 20 hours. That's assuming that someone is sitting there and doing this non-stop for 20 hours. That's not a realistic expectation. People take breaks, and have other work to do. Sometimes, adding an app might take 6 minutes, something 3 minutes and sometimes 20 minutes. It just depends on what the employee/site admin has on their plate.
Bots Adding Apps
After running some tests, I could see a huge improvement in the time it takes to add apps, using RPA, compared to manually doing it. Of course the process map looks a little different, because the bot can go directly to the SharePoint Store.
So it's a little more concise and the procedure goes into the details, so you know how to build out the botflow.
As you can see, the steps take a lot less time, when something is automating this process through the UI. Bots don't take breaks.
To get a better feel for this. For 200 app installations, done manually, we were looking at around 1200 minutes. If we let a single bot do this, that's 42s by 200 = 140 mins. That's a significant improvement. When you're running this on your machine, using a personal bot, that could be the time it takes. Of course it's not exact and you could get faster or slower times. Automation depends on the systems your bot interacts with and how fast they are.
So what is the downside to doing this? If you run this on your laptop, it's going to take over your keyboard and mouse. So although it is faster, it will mean you can't use your computer. Depending on how long you expect this to take, you could do this during business off-hours or during your lunch break.
Is there an alternative? Most definitely. Using Nintex RPA Central, you can provide a dataset of data, and execute a job that processes the data in the dataset. For each value, it'll start a bot. Depending on how many machines you have that can run bots, this could improve the performance, significantly. In a test scenario I ran, I worked with 20 sites, and wanted to add Nintex Workflow and Forms to each. Manually, this was taking me way too long and I was losing track of which site I was up to, and which app needed to be installed. So I build a Nintex RPA botflow and ran it on my machine. It took around 20 mins to adds both apps to 20 sites. But then, I modified the botflow, so that it could run from RPA Central. This means that RPA Central would instantiate a bot to run my botflow with the Site URL and the name of the app to install. In my environment, I have 2 virtual machines, running Nintex RPA. They both are bots, and my job was configured to talk to both. Running the same requests, 20 sites, 2 apps on each site, I saw a very notifcable improvement. It took a little over 11 mins to update 20 sites with both apps. Essentially,40 installations.
From the data below, you can see that 2 bots are processing data. The date/time on the left is when they started processing the job. It's definitely faster to have 2 running around the same time, instead of one bot processing all the data.
You will hit a limit though. Systems like SharePoint can only handle a certain number of requests at the same time. So you're not necessarilly going to see a lot of improvement, by adding more and more bots. In fact, I would say that there is also the potential disadvantage to addding more bots, as you now putting more load on the destination system that your bots are talking to.