Hi jonwi1337 thank you for testing my report solution.
The data is based on the following SQL query. You can test the query directly in SQL using the CM DB. It should return a list of KB articles of cumulative updates. If not, that would explain the result and we might need to figure out why. If you get a list back though, that would mean that the ConfigMgr DB does not have info about any installed cumulative updates for the specific servers. In that case run the below PowerShell script on those machines to re-send the update compliance messages. (Would only work if the cumulative update is in fact installed on the systems)
Keep in mind that the solution does not work for preview updates, because of the search string I use in the below SQL statement.
SQL Query:
DECLARE @LastRollupPrefix as char(7);
DECLARE @CurrentRollupPrefix as char(7);
SET @LastRollupPrefix = (SELECT convert(char(7),DATEADD(MONTH,-1,GETDATE()),126))
SET @CurrentRollupPrefix = (SELECT convert(char(7),DATEADD(MONTH,0,GETDATE()),126))
Select 'KB' + updi.ArticleID as Article, CI_ID, Latest = 0 from v_updateinfo updi where (updi.Title like @LastRollupPrefix + ' Cumulative Update for Windows%' or updi.Title like @LastRollupPrefix + ' Security Monthly Quality Rollup%' or updi.Title like @LastRollupPrefix + ' Cumulative Update for Microsoft server operating system%')
UNION ALL
Select 'KB' + updi.ArticleID as Article, CI_ID, Latest = 1 from v_updateinfo updi where (updi.Title like @CurrentRollupPrefix + ' Cumulative Update for Windows%' or updi.Title like @CurrentRollupPrefix + ' Security Monthly Quality Rollup%' or updi.Title like @CurrentRollupPrefix + ' Cumulative Update for Microsoft server operating system%')
PowerShell:
<#
Disclaimer
This sample script is not supported under any Microsoft standard support program or service. This sample
script is provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties
including, without limitation, any implied warranties of merchantability or of fitness for a particular
purpose. The entire risk arising out of the use or performance of this sample script and documentation
remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation,
production, or delivery of this script be liable for any damages whatsoever (including, without limitation,
damages for loss of business profits, business interruption, loss of business information, or other
pecuniary loss) arising out of the use of or inability to use this sample script or documentation, even
if Microsoft has been advised of the possibility of such damages.
#>
(New-Object -ComObject "Microsoft.CCM.UpdatesStore").RefreshServerComplianceState
Hope it helps.
Best regards, Jonas