When deploying software or software bulletins corporate wide, it is best practice to divide the pushes over several days. Creating static collections for every push is time consuming and inefficient. This document walks through the process of creating dynamic collections that can be reused, decreasing the amount of time required to plan and setup a corporate wide push.
1. Assume the following schedule over 10 days:
Phase 1 - 20 machines per NS
Phase 2 - 100 machines per NS
Phase 3 - 300 machines per NS
Phase 4 - 400 machines per NS
Phase 5 - 600 machines per NS
Phase 6 - 800 machines per NS
Phase 7 - 800 machines per NS
Phase 8 - 800 machines per NS
Phase 9 - 1000 machines per NS
Phase 10 - 1000 machines per NS
2. Create a collection called "Phase 1". This is the test collection. This can be static if there are specific test machines that will be used. Otherwise, it can be dynamic using the following query:
select top 20 Guid from vResource where Guid in
(select [Guid] from [vComputer] vc where vc.[IsManaged] = 1 )
3. Create a collection called "Phase 2". Exclude the collections "All Windows Servers" and "Phase 1". If "Phase 1" is static, use the following query:
select top 100 Guid from vResource where Guid in
(select [Guid] from [vComputer] vc where vc.[IsManaged] = 1 )
If "Phase 1" is dynamic, change 'top 100' to 'top 120'
4. Create a collection called "Phase 3". Exclude the collections "All Windows Servers", "Phase 1" and "Phase 2". Use the following query:
select top 400 Guid from vResource where Guid in
(select [Guid] from [vComputer] vc where vc.[IsManaged] = 1 )
5. Create a collection called "Phase 4". Exclude the collections "All Windows Servers", "Phase 1","Phase 2" and "Phase 3". Use the following query:
select top 800 Guid from vResource where Guid in
(select [Guid] from [vComputer] vc where vc.[IsManaged] = 1 )
6. Create a collection called "Phase 5". Exclude the collections "All Windows Servers", "Phase 1","Phase 2","Phase 3" and "Phase 4". Use the following query:
select top 1400 Guid from vResource where Guid in
(select [Guid] from [vComputer] vc where vc.[IsManaged] = 1 )
7. Repeat this process for the "Phase 6" through "Phase 10" collections. The approach is to take the current phase machine count and add it to the sum of the preceding phases. Use this number in your query after 'Top'. The previous collections are then subtracted from the total count by placing them in the current phase's Exclusions. This returns the correct number of machines for the current phase while always adapting to a changing environment. Example:
If the current phase is 500 machines and the sum of the previous phases is 300, then current phase query would be:
select top 800 Guid from vResource where Guid in
(select [Guid] from [vComputer] vc where vc.[IsManaged] = 1 )
8. If your company sends notifications for deployments, use the phase collections in deployment notifications. Paste each collection in a separate spreadsheet tab, marked by the date when the phase collection will be deployed to.
9. Whenever a phase is scheduled to be deployed to, place the phase collection into the task. Do this each day, for each phase in order, according to the schedule. There is no need to create a separate task for each phase.
10. If there are business units that require special exclusions, create a separate collection and exclude it from all of the phase collections. Adjust the top numbers accordingly if the exclusions subtract from the machine count for the current phase.
Keeping the collections dynamic in this manner, you won't miss machines as you would with static collections. Anytime a new machine comes online it will be pulled into one of the phase collections. In our environment, we have created phased collections for different scenarios. For example, some SWD packages or patch bulletins have different windows depending on priority. Using this method, we have created 7 day and 30 day scenarios.
Hope this helps! Any questions, feel free to send me a message!