SCOM Core – Removing all the add-on management packs that make SCOM 2016 Bloated and Slow

Wouldn’t it be cool if SCOM 2016 was super fast and required less resources?

SCOM 2016 is full of legacy solutions that make it bloated and slow.  You can remove “most” of these solutions if your not going to use them anyway?

SCOM was created in a very modular fashion using management packs to add features over the years.

After careful analysis I created the following PowerShell script to remove many of the management packs that slow down SCOM.

I have broken the script into pieces so you can remove any parts that you want to keep.  The script was created using a clean SCOM 2016 install.  If you have been using SCOM 2016 for a long time or have an upgraded SCOM environment you may have some additional dependencies in unsealed MPs you created.

If you find you need a solution in the future.  Simply add the MPs back from the installation media.

Download: https://www.scom2k7.com/downloads/SCOMCoreMPRemoval.zip

The script:

$MSServer = "yourMSServer"

Import-Module -Name "OperationsManager" 
New-SCManagementGroupConnection -ComputerName:$MSServer

#Summary Dashboard
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.OperationsManager.SummaryDashboard" | Remove-SCOMManagementPack

#AEM
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.ClientMonitoring.Overrides" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.ClientMonitoring.Internal" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.ClientMonitoring.Views.Internal" | Remove-SCOMManagementPack

#Client Monitoring
Get-SCOMManagementPack -Name "Microsoft.Windows.Client.NetworkDiscovery" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.Windows.Client.Library" | Remove-SCOMManagementPack

#OMS-Advisor - Only works if Advisor was never configured
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.Advisor" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.Advisor.Resources.ENU" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.Advisor.Internal" | Remove-SCOMManagementPack

#360 Dashboards
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.ApplicationMonitoring.360.SLA" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.ApplicationMonitoring.360.Template.Dashboards" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.ApplicationMonitoring.360.Template.Library" | Remove-SCOMManagementPack

#Unix-Linux
Get-SCOMManagementPack -Name "Microsoft.Unix.Views" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.Unix.ShellCommand.Library" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.Unix.Process.Library" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.Unix.LogFile.Library" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.Unix.ConsoleLibrary" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.Unix.Image.Library" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.Unix.Library" | Remove-SCOMManagementPack


#Windows Server Network
Get-SCOMManagementPack -Name "Microsoft.Windows.Server.NetworkDiscovery" | Remove-SCOMManagementPack

#Network Devices *Note Can get rid of Microsoft.SystemCenter.NetworkDevice.Library because of Microsoft.SystemCenter.Internal.UI.Tasks dependency
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.Visualization.Network.Dashboard" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.Visualization.Network.Library" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "System.NetworkManagement.Monitoring" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "System.NetworkManagement.Templates" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.NetworkDiscovery.Internal" | Remove-SCOMManagementPack

#MP Recommendations
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.ManagementPack.Recommendations" | Remove-SCOMManagementPack

#Baselineing Tasks
Get-SCOMManagementPack -Name "System.BaseliningTasks.Library" | Remove-SCOMManagementPack

#Process Monitoring Template
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.ProcessMonitoring.Library" | Remove-SCOMManagementPack

#Summary Dashboard Template
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.GTM.Summary.Dashboard.Template" | Remove-SCOMManagementPack

#Web Application Availability Monitoring - Note Many customers might still use this.
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.WebApplicationSolutions.Library.Resources.ENU" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.WebApplicationSolutions.Library" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.WebApplicationTest.Library" | Remove-SCOMManagementPack

#Service Level Report Library
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.DataWarehouse.ServiceLevel.Report.Library" | Remove-SCOMManagementPack


#APM
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.Apm.NTServices" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.Apm.Wcf" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.Apm.Web" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.DataWarehouse.ApmReports.Library" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.Apm.Infrastructure.Monitoring" | Remove-SCOMManagementPack
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.Apm.Library" | Remove-SCOMManagementPack

#APM Part 2 -- Need to remove secure reference override from "Microsoft.SystemCenter.SecureReferenceOverride" first

Get-SCOMManagementPack -Name "Microsoft.SystemCenter.SecureReferenceOverride" | Export-SCOMManagementPack -Path "c:\temp"
<# Delete

--Start

      <Reference Alias="SystemCenter3">
        <ID>Microsoft.SystemCenter.Apm.Infrastructure</ID>
        <Version>7.2.11719.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>

      <SecureReferenceOverride ID="SecureOverridec1bf9736_b0e5_bae6_06d5_cc04a9472e5f" Context="SystemCenter3!Microsoft.SystemCenter.Apm.DataTransferService" Enforced="false" SecureReference="SystemCenter1!Microsoft.SystemCenter.DataWarehouse.ActionAccount">
        <Value>0092C57E665DB6D9AE7FAD6FE9925AF96E41065C6000000000000000000000000000000000000000</Value>
      </SecureReferenceOverride>

--End
      #>
Import-SCOMManagementPack -Fullname "C:\Temp\Microsoft.SystemCenter.SecureReferenceOverride.xml"

#This will only work if you have removed the secure reference override
Get-SCOMManagementPack -Name "Microsoft.SystemCenter.Apm.Infrastructure" | Remove-SCOMManagementPack

For APM:  You will need to manually remove the Secure Reference Override before you can delete “Microsoft.SystemCenter.Apm.Infrastructure” mp.  Notes in are in the script as to what needs to be deleted.

My Core Environment:

Console

Authoring Wizard – Much cleaner

Discovery Wizard – Notice Unix is gone

Event Logs – No errors

One of the most valuable management packs to remove would be the “System.NetworkManagement.Library” MP.  But removing this MP breaks the Windows Computer discovery wizard.

Any issues, comments or ideas for removing additional management packs please leave them in the comments.

3 Responses to SCOM Core – Removing all the add-on management packs that make SCOM 2016 Bloated and Slow

  1. Konstantin September 1, 2017 at 4:31 am #

    Thank you Tim,
    this looks quite interesting and I will definitely remove some of the listed MPs.
    Although the Management Packs are in the installation media I will export all of them first so I need not to search in case I have to reimport them.

    As I already removed the APM MPs in the past I did not like to edit the SecureReferenceOverride MP manually.
    There are a couple of blogpost how to achieve that with PS.

    APM:
    To delete the Microsoft.SystemCenter.Apm.Infrastructure MP you need to remove a RunAs account profile association (Operations Manager APM Data Transfer Service) and then clean up the SecureReference library (https://blogs.technet.microsoft.com/kevinholman/2017/08/05/reinstalling-your-scom-agents-with-the-noapm-switch/).

    Therefore I first removed the profile association and the reference and afterwards all APM MPs.
    Of course this should be tested first in a dev environment.

    # remove the APM association for the Data Warehouse Account profile
    $APMAccount = Get-SCOMRunAsAccount -Name ‘Data Warehouse Action Account’
    $APMProfile = Get-SCOMRunAsProfile -DisplayName ‘Data Warehouse Account’
    $APMClass = Get-SCOMClass -Name ‘Microsoft.SystemCenter.Apm.DataTransferService’
    Set-SCOMRunAsProfile -Action ‘Remove’ -Profile $APMProfile -Account $APMAccount -Class $APMClass

    # export the Microsoft.SystemCenter.SecureReferenceOverride MP
    $MP = Get-SCOMManagementPack -Name Microsoft.SystemCenter.SecureReferenceOverride
    $MP | Export-SCOMManagementPack -Path C:\temp\

    # delete the reference to the Microsoft.SystemCenter.Apm.Infrastructure MP
    $MP.References
    $MP.References.Remove(‘SystemCenter3’)
    $MP.Verify()
    $MP.AcceptChanges()

    # remove APM Management Packs
    $delMPs = Get-SCOMManagementPack | Where-Object {$_.Name -like ‘*apm*’}
    $delMPs | Format-Table -AutoSize
    $delMPs | Remove-SCOMManagementPack

    At the end Remove-SCOMDisabledClassInstance should be run to remove all these discovered instances that are not used anymore.

    Best regards,
    Konstantin

  2. Konstantin September 1, 2017 at 11:06 am #

    For SCOM 2012 R2 the ‘System.NetworkManagement.Reports’ needs to be deleted first because it depend on the ‘System.NetworkManagement.Monitoring’ MP.
    Why not deleting it for SCOM 2016 as well?

  3. Rich March 1, 2018 at 6:41 pm #

    FYI: I had a customer remove the “System.NetworkManagement.Reports.MP” as part of the tuning of a new SCOM 2016 Management Group. They had not yet installed SCOM Reporting, and found that install would fail, roll back and break SSRS. We had to run ResetSRS.exe to fix reporting services, reimport both the “System.NetworkManagement.Monitoring.MP” and “System.NetworkManagement.Reports.MP” , then we could successfully install SCOM Reporting. The install of SCOM Reporting is looking for the Network Management Reports in the Data Warehouse and will fail if it is not there.

Leave a Reply