A few years back, a tech consultant won a few eBay auctions he was bidding on and found himself the owner of 2 tons of LEGO pieces overnight. He developed and built a GPU-based neural network to first pick out damaged and dirty pieces and then identify and sort the remaining pieces.
Sometimes, this situation reminds me of an estate before a Windows 10 upgrade. Each application is like a lego brick. Some are the same, some slightly different, some uncompliant and not wanted and some you want to group together and keep. In order to sort out the mess, you need to normalize, rationalize, and categorize all of your applications before you are able to group your users into the correct deployment rings. If you have hundreds of thousands of seats, this must happen at maximum velocity (in other words, based on the most efficient mathematical algorithm) in order to keep pace.