ConfigMgr Required v.s. Available Apps
Just a quick one this time...
First of all big shoutout to Adam Gross for this brilliant write-up on Application Delivery of SCCM to user collections:
https://www.asquaredozen.com/2018/10/28/simplifying-user-application-deployments-in-configmgr/
In a highly automated environment, certain application deployments can be designated as automatic and deployed as "required." Users may get added to an Active Directory group by ordering an app through the service management portal or another avenue. This user group is then targeted by your deployments.
SCCM can be finicky, resulting in prolonged delivery times for applications to reach users' computers.
A recent workaround I discovered is to create an additional deployment to the same collection, but this time utilizing the "available" option instead of "required." However, SCCM does not permit both deployment types to target the same collection simultaneously.
To address this limitation, we can get creative with PowerShell.
The following script represents an initial draft, tailored to function when there's only one deployment on the collection that is being duplicated. Depending on your scenario, you may consider incorporating a loop to accommodate multiple deployments, although this wasn't necessary in my case.
- Collect all collections matching a string (e.g. if your collections are following a naming convention 'Application - 7-zip' just use 'Application-*')
- Copy the collection and add ' - AVAILABLE' to its name or a string of your choice
- Check the ApplicationName attached to the collection being copied
- Deploy it to the copy collection with the purpose 'Available'
# Get all user collections matching a string
$userCollections = Get-CMUserCollection | Where-Object {$_.Name -like '<string matching your collections>'}
# Iterate through each user collection
foreach ($collection in $userCollections) {
$newname = $collection.name + ' - AVAILABLE'
$newcollection = Copy-CMCollection -Name $collection.name -NewName $newname
Move-CMObject -FolderPath "<sitecode>:\UserCollection\<folder of your collections>" -InputObject $(Get-CMCollection -Name $newname)
$deployedAppName = (Get-CMDeployment -CollectionName $collection.name).ApplicationName
New-CMApplicationDeployment -DeployAction Install -DeployPurpose Available -CollectionName $newname -Name $deployedAppName
}
The result is a new collection with an available install
User Experience
When the user requests something, instead of waiting for it to be automatically installed (next quarter), it is possible to kick off the installation from Software Center:
SCCM Client might detect that the app is actually deployed as required even before the user decides to install the app.
Either way, when the installation starts, it will be clearly visible in the Installation Status window:
When the installation finishes and SCCM Client detects the app as 'installed' the App's icon disappears from Applications tab:
Users normally know already what they require for their work, so when they get a freshly staged device they don't need to rely on SCCM's automated deployment and wait long hours.
Clicking through the apps you made available with the above method could spare some unnecessary calls to your Service Desk 🙂
Office Addons soon...