SCCM 2016 plugin has stopped collecting Removed Software information from SCCM, so Installed Software records are not getting deleted


SCCM Integration 2016 plugin when integrated with Microsoft Endpoint Manager Configuration Manager/System Center Configuration Manager (SCCM) builds 1902 and newer do not retrieve removed/uninstalled software information. This is due to Microsoft deprecating certain tables and database triggers that our 2016 version SCCM Integration plugin relies on to query to fetch this information. 

The symptom is that installed software records (cmdb_sam_sw_install) in the CMDB are not getting deleted, and appear to still be installed. Software Asset Management (SAM) will then over-count the installed licenses, and all that implies.

The "Integration - Microsoft SCCM 2016" (com.snc.integration.sccm2016) plugin is compatible with SCCM versions 1606, 1906, 1910, and 2002, but not for the removed software functionality.

This restriction is documented, however is causing support cases and bad data. This problem ticket is for tracking the demand and providing a workaround in some cases.
"Note: The SCCM removed software functionality for any instance using the Microsoft SCCM 2016 plugin integrated with Microsoft SCCM 1902 and above is not supported. This functionality exists in the Service Graph Connector for Microsoft SCCM, for more information, see Service Graph connector for Microsoft SCCM (2.1.1)."

Wikipedia has a list of the version history of SCCM.

Steps to Reproduce

  1. Upgrade your SCCM installation to version 2006.
  2. Uninstall a piece of software from one of the servers that SCCM manages
  3. re-run the import. 
  4. Check the Installed Software record in cmdb_sam_sw_install representing that software

Data source "SCCM 2016 Removed Software" is the one that brings in uninstalled software. Once uninstalled software is found, we remove the corresponding entries in "cmdb_sam_sw_install". When this data source runs, the staging table imp_sccm2016_removed_sw should list the software to delete, but is empty:


After carefully considering the severity and frequency of this problem and the risk of attempting a fix, it has been decided to not address this issue in any current or future releases. We do not make these decisions lightly, and we apologize for any inconvenience.

ServiceNow has fixed this issue in the latest SCCM store application release called "Service Graph Connector for Microsoft SCCM" (released in Paris and supported in Orlando Patch 7 and above). ServiceNow recommend all SCCM users upgrade their instances to the fixed versions and install this application to solve this issue. Please refer to below URL for the application request: Service Graph Connector for Microsoft SCCM

For more information on how to migrate to using the Service Graph connector for Microsoft SCCM, see Run a script to update the Microsoft SCCM 2016 plugin after installing the Service Graph connector for Microsoft SCCM.

NOTE: Installing the Service Graph Connector will break the SCCM 2016 or SCCM 2012v2 integrations, and they can no longer be used. Customers should move away completely from SCCM 2016 or SCCM 2012v2 if they decide to use the Service Graph Connector.  Proper testing and validation on a sub-production instance must be done before doing the changeover in the production environment.


The views are populated by a couple of Database Triggers and these triggers are disabled so no data is populated in the Database Views and therefor the data source is not able to pull data.

A temporary workaround is to re-enable the Database Triggers. On newer SCCM builds (ex: 2006), the triggers are removed altogether therefore there are no workaround.

The two triggers have to be enabled, run the below commands in SCCM DB:
  • ENABLE trigger tr_Add_Remove_Programs_DATA_DD on dbo.add_remove_programs_data
  • ENABLE trigger tr_Add_Remove_Programs_64_DATA_DD on dbo.add_remove_programs_64_data

After enabling the triggers, any deletion of software from client machines should create an entry in one of the below tables which is queried from SCCM data source:

  • SCCM_Ext.Add_Remove_Programs_DATA_DD
  • SCCM_Ext.Add_Remove_Programs_64_DATA_DD

Note: During the time period between the disabling of triggers in the upgrade, and re-enabling them manually, if any software was uninstalled, this data is not recovered in the tables. So to have accurate information in software installations table, delete all the records and re-run the SCCM Scheduled Import again. Any future deletion of software will be handled as expected.

Related Problem: PRB1460156